diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2010-11-29 09:54:27 +0100 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2010-11-29 09:56:26 +0100 |
commit | 90bf956cc1bfb2cdf8265aae9147b02b5f250d2f (patch) | |
tree | 70837461b97541760c72d68ec842da1a89ae8d95 /src/libs/glsl/glslparser.h | |
parent | 055aa15fccc03c83f95d45a41e935bd7e08623c9 (diff) | |
download | qt-creator-90bf956cc1bfb2cdf8265aae9147b02b5f250d2f.tar.gz |
Simple error recovery.
Well, it's not very advanced but it is probably good enough for now.
Diffstat (limited to 'src/libs/glsl/glslparser.h')
-rw-r--r-- | src/libs/glsl/glslparser.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libs/glsl/glslparser.h b/src/libs/glsl/glslparser.h index 9359140fa2..278739fbdc 100644 --- a/src/libs/glsl/glslparser.h +++ b/src/libs/glsl/glslparser.h @@ -1,5 +1,5 @@ -#line 214 "./glsl.g" +#line 214 "glsl.g" /************************************************************************** ** @@ -102,7 +102,11 @@ private: TypeAST *&type(int n) { return _symStack[_tos + n - 1].type; } FunctionDeclarationAST *&function(int n) { return _symStack[_tos + n - 1].function_declaration; } - inline int consumeToken() { return _index++; } + inline int consumeToken() { + if (_index < int(_tokens.size())) + return _index++; + return _tokens.size() - 1; + } inline const Token &tokenAt(int index) const { return _tokens.at(index); } inline int tokenKind(int index) const { return _tokens.at(index).kind; } void reduce(int ruleno); @@ -169,6 +173,9 @@ private: int _tos; int _index; int yyloc; + int yytoken; + int yyrecovering; + bool _recovered; std::vector<int> _stateStack; std::vector<int> _locationStack; std::vector<Value> _symStack; |