diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2010-11-11 12:01:37 +0100 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2010-11-11 12:22:58 +0100 |
commit | ca4439bcefa71fda00c7baa4f3b2dfba1c87e7dc (patch) | |
tree | 432d7837545380a79d29daa176c40236f0d130e3 /src/libs/glsl/glslparser.h | |
parent | 6a5f06d463786ad29d59943bb9ca3fbcf5bbcb8f (diff) | |
download | qt-creator-ca4439bcefa71fda00c7baa4f3b2dfba1c87e7dc.tar.gz |
Get rid of glsl.g.in and start working on the semantic actions.
Diffstat (limited to 'src/libs/glsl/glslparser.h')
-rw-r--r-- | src/libs/glsl/glslparser.h | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/libs/glsl/glslparser.h b/src/libs/glsl/glslparser.h index f2761f2c32..518af028df 100644 --- a/src/libs/glsl/glslparser.h +++ b/src/libs/glsl/glslparser.h @@ -1,4 +1,6 @@ +#line 212 "./glsl.g" + /************************************************************************** ** ** This file is part of Qt Creator @@ -36,26 +38,41 @@ namespace GLSL { -class Parser: public GLSLParserTable +class GLSL_EXPORT Parser: public GLSLParserTable { public: - Parser(const char *source, unsigned size, int variant); + union Value { + void *ptr; + const std::string *string; + AST *ast; + List<AST *> *ast_list; + Declaration *declaration; + List<Declaration *> *declaration_list; + TranslationUnit *translation_unit; + }; + + Parser(Engine *engine, const char *source, unsigned size, int variant); ~Parser(); - bool parse(); + TranslationUnit *parse(); private: + // 1-based + Value &sym(int n) { return _symStack[_tos + n - 1]; } + AST *&ast(int n) { return _symStack[_tos + n - 1].ast; } + const std::string *&string(int n) { return _symStack[_tos + n - 1].string; } + inline int consumeToken() { return _index++; } inline const Token &tokenAt(int index) const { return _tokens.at(index); } inline int tokenKind(int index) const { return _tokens.at(index).kind; } - void dump(AST *ast); + void reduce(int ruleno); private: int _tos; int _index; std::vector<int> _stateStack; std::vector<int> _locationStack; - std::vector<AST *> _astStack; + std::vector<Value> _symStack; std::vector<Token> _tokens; }; |