summaryrefslogtreecommitdiff
path: root/src/libs/glsl/glslparser.h
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-11-29 09:54:27 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2010-11-29 09:56:26 +0100
commit90bf956cc1bfb2cdf8265aae9147b02b5f250d2f (patch)
tree70837461b97541760c72d68ec842da1a89ae8d95 /src/libs/glsl/glslparser.h
parent055aa15fccc03c83f95d45a41e935bd7e08623c9 (diff)
downloadqt-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.h11
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;