summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/parser/javascript.g
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/parser/javascript.g')
-rw-r--r--src/declarative/qml/parser/javascript.g16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/declarative/qml/parser/javascript.g b/src/declarative/qml/parser/javascript.g
index 961041e..52d076f 100644
--- a/src/declarative/qml/parser/javascript.g
+++ b/src/declarative/qml/parser/javascript.g
@@ -87,7 +87,7 @@
%nonassoc T_IDENTIFIER T_COLON
%nonassoc REDUCE_HERE
-%start Program
+%start UiProgram
/.
/****************************************************************************
@@ -286,7 +286,7 @@ public:
bool parse(JavaScriptEnginePrivate *driver);
JavaScript::AST::UiProgram *ast()
- { return sym(1).UiProgram; }
+ { return program; }
QList<DiagnosticMessage> diagnosticMessages() const
{ return diagnostic_messages; }
@@ -326,6 +326,8 @@ protected:
int *state_stack;
JavaScript::AST::SourceLocation *location_stack;
+ JavaScript::AST::UiProgram *program;
+
// error recovery
enum { TOKEN_BUFFER_SIZE = 3 };
@@ -422,6 +424,7 @@ bool JavaScriptParser::parse(JavaScriptEnginePrivate *driver)
first_token = last_token = 0;
tos = -1;
+ program = 0;
do {
if (++tos == stack_size)
@@ -466,11 +469,12 @@ bool JavaScriptParser::parse(JavaScriptEnginePrivate *driver)
-- Declarative UI
--------------------------------------------------------------------------------------------------------
-Program: UiImportListOpt UiObjectMemberList ;
+UiProgram: UiImportListOpt UiObjectMemberList ;
/.
case $rule_number: {
- sym(1).Node = makeAstNode<AST::UiProgram> (driver->nodePool(), sym(1).UiImportList,
+ program = makeAstNode<AST::UiProgram> (driver->nodePool(), sym(1).UiImportList,
sym(2).UiObjectMemberList->finish());
+ sym(1).UiProgram = program;
} break;
./
@@ -602,7 +606,7 @@ case $rule_number: {
sym(4).UiObjectMemberList->finish());
node->colonToken = loc(2);
node->lbracketToken = loc(3);
- node->rbraceToken = loc(5);
+ node->rbracketToken = loc(5);
sym(1).Node = node;
} break;
./
@@ -2617,6 +2621,7 @@ PropertyNameAndValueListOpt: PropertyNameAndValueList ;
yytoken = *tk;
yylval = 0;
yylloc = token_buffer[0].loc;
+ yylloc.length = 0;
first_token = &token_buffer[0];
last_token = &token_buffer[2];
@@ -2639,6 +2644,7 @@ PropertyNameAndValueListOpt: PropertyNameAndValueList ;
yytoken = tk;
yylval = 0;
yylloc = token_buffer[0].loc;
+ yylloc.length = 0;
action = errorState;
goto _Lcheck_token;