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 ')' {