diff options
Diffstat (limited to 'fluid/widgets/Style_Parser.h')
| -rw-r--r-- | fluid/widgets/Style_Parser.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/fluid/widgets/Style_Parser.h b/fluid/widgets/Style_Parser.h new file mode 100644 index 000000000..287ea6b21 --- /dev/null +++ b/fluid/widgets/Style_Parser.h @@ -0,0 +1,59 @@ +// +// Syntax highlighting for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2025 by Bill Spitzak and others. +// Copyright 2020 Greg Ercolano. +// +// 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 FLUID_WIDGETS_STYLE_PARSER_H +#define FLUID_WIDGETS_STYLE_PARSER_H + +namespace fld { +namespace widget { + +// Class to manage style parsing, friend of Code_Editor +class Style_Parser { +public: + const char *tbuff { nullptr }; // text buffer + char *sbuff { nullptr }; // style buffer + int len { 0 }; // running length + char style { 0 }; // current style + char lwhite { 1 }; // leading white space (1=white, 0=past white) + int col { 0 }; // line's column counter + char keyword[40] { }; // keyword parsing buffer + char last { 0 }; // flag for keyword parsing + + Style_Parser() = default; + + // 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(char quote_char, char in_style); + // "hello", 'x' + int parse_directive(); // "#define" + int parse_line_comment(); // "// text.." + int parse_escape(); // "\'" + int parse_all_else(); // all other code +}; + +} // namespace widget +} // namespace fld + +#endif // FLUID_WIDGETS_STYLE_PARSER_H |
