From 649f2ad7b7ea4cc370fe0a825865a83651f2fbb8 Mon Sep 17 00:00:00 2001 From: Matt Pharr Date: Fri, 23 Sep 2011 20:33:05 -0700 Subject: [PATCH] Update parser to make 'sync' a statement, not an expr. --- parse.yy | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/parse.yy b/parse.yy index 69869989..ecd1c27e 100644 --- a/parse.yy +++ b/parse.yy @@ -177,6 +177,7 @@ static const char *lParamListTokens[] = { %type statement labeled_statement compound_statement for_init_statement %type expression_statement selection_statement iteration_statement %type jump_statement statement_list declaration_statement print_statement +%type sync_statement %type declaration parameter_declaration %type init_declarator_list @@ -436,8 +437,6 @@ assignment_expression expression : assignment_expression - | TOKEN_SYNC - { $$ = new SyncExpr(@1); } | expression ',' assignment_expression { $$ = new BinaryExpr(BinaryExpr::Comma, $1, $3, @2); } ; @@ -1023,6 +1022,7 @@ statement | jump_statement | declaration_statement | print_statement + | sync_statement | error { std::vector builtinTokens; @@ -1163,6 +1163,11 @@ jump_statement { $$ = new ReturnStmt($2, true, @1); } ; +sync_statement + : TOKEN_SYNC + { $$ = new ExprStmt(new SyncExpr(@1), @1); } + ; + print_statement : TOKEN_PRINT '(' string_constant ')' {