X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Ftokenizer.h;h=46aa62fbea282c61ae016dd232f39b6fa73971f9;hb=59347f76bc985e8c9c769d4a3eee672cba9c920b;hp=a7329182df53fcf5c8d7fd0cc844eb206c4f408f;hpb=d3ceb2186dc79130508093b3d0c944771a53534f;p=libs%2Fgl.git diff --git a/source/glsl/tokenizer.h b/source/glsl/tokenizer.h index a7329182..46aa62fb 100644 --- a/source/glsl/tokenizer.h +++ b/source/glsl/tokenizer.h @@ -15,6 +15,9 @@ struct Location { std::string name; unsigned line; + + Location(): line(0) { } + Location(const std::string &n, unsigned l): name(n), line(l) { } }; class Tokenizer @@ -26,7 +29,9 @@ private: std::string::const_iterator iter; std::string::const_iterator source_end; Location location; + bool progress_mark; bool allow_preprocess; + bool suppress_line_advance; std::string last_token; std::deque next_tokens; @@ -36,13 +41,18 @@ public: void begin(const std::string &, const std::string &); const std::string &peek_token(unsigned = 0); const std::string &parse_token(); + const std::string &get_last_token() const { return last_token; } void expect(const std::string &); + void set_location(const Location &); + void clear_progress_mark() { progress_mark = false; } + bool get_progress_mark() const { return progress_mark; } const Location &get_location() const { return location; } private: std::string parse_token_(); void preprocess(); std::string parse_identifier(); std::string parse_number(); + std::string parse_string(); std::string parse_other(); void skip_comment_and_whitespace(); };