summaryrefslogtreecommitdiff
path: root/fluid/StyleParse.h
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2020-09-16 09:33:24 -0700
committerGreg Ercolano <erco@seriss.com>2020-11-01 12:16:23 -0800
commitcec029dbee435e7f608b9f6a4a3d8e98f2c5a398 (patch)
tree0e8c842d0275604da616fc4046f841a1de20edc3 /fluid/StyleParse.h
parent1761523c9e730ca7ac635be91d4e56d7ff77beab (diff)
Rewrite CodeEditor syntax highlighting for issue #135
Diffstat (limited to 'fluid/StyleParse.h')
-rw-r--r--fluid/StyleParse.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/fluid/StyleParse.h b/fluid/StyleParse.h
new file mode 100644
index 000000000..e243a7e47
--- /dev/null
+++ b/fluid/StyleParse.h
@@ -0,0 +1,59 @@
+//
+// Syntax highlighting style parser class - erco 09/16/2020
+//
+// Copyright 1998-2020 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// https://www.fltk.org/COPYING.php
+//
+// Please see the following page on how to report bugs and issues:
+//
+// https://www.fltk.org/bugs.php
+//
+
+#ifndef StyleParse_h
+#define StyleParse_h
+
+// Class to manage style parsing, friend of CodeEditor
+class StyleParse {
+public:
+ const char *tbuff; // text buffer
+ char *sbuff; // style buffer
+ int len; // running length
+ char style; // current style
+ char lwhite; // leading white space (1=white, 0=past white)
+ int col; // line's column counter
+ char keyword[40]; // keyword parsing buffer
+ char last; // flag for keyword parsing
+
+ StyleParse() {
+ tbuff = 0;
+ sbuff = 0;
+ len = 0;
+ style = 0;
+ lwhite = 1;
+ col = 0;
+ last = 0;
+ }
+
+ // Methods to aid in parsing
+ int parse_over_char(int handle_crlf=1);
+ int parse_over_white();
+ int parse_over_alpha();
+ int parse_to_eol(char s);
+ int parse_block_comment(); // "/* text.. */"
+ void buffer_keyword();
+ int parse_over_key(const char *key, char s);
+ int parse_over_angles(char s);
+ int parse_keyword(); // "switch"
+ int parse_quoted_string(); // "hello"
+ int parse_directive(); // "#define"
+ int parse_line_comment(); // "// text.."
+ int parse_escape(); // "\'"
+ int parse_all_else(); // all other code
+};
+
+#endif //StyleParse_h