Update parser to make 'sync' a statement, not an expr.
This commit is contained in:
9
parse.yy
9
parse.yy
@@ -177,6 +177,7 @@ static const char *lParamListTokens[] = {
|
|||||||
%type <stmt> statement labeled_statement compound_statement for_init_statement
|
%type <stmt> statement labeled_statement compound_statement for_init_statement
|
||||||
%type <stmt> expression_statement selection_statement iteration_statement
|
%type <stmt> expression_statement selection_statement iteration_statement
|
||||||
%type <stmt> jump_statement statement_list declaration_statement print_statement
|
%type <stmt> jump_statement statement_list declaration_statement print_statement
|
||||||
|
%type <stmt> sync_statement
|
||||||
|
|
||||||
%type <declaration> declaration parameter_declaration
|
%type <declaration> declaration parameter_declaration
|
||||||
%type <declarators> init_declarator_list
|
%type <declarators> init_declarator_list
|
||||||
@@ -436,8 +437,6 @@ assignment_expression
|
|||||||
|
|
||||||
expression
|
expression
|
||||||
: assignment_expression
|
: assignment_expression
|
||||||
| TOKEN_SYNC
|
|
||||||
{ $$ = new SyncExpr(@1); }
|
|
||||||
| expression ',' assignment_expression
|
| expression ',' assignment_expression
|
||||||
{ $$ = new BinaryExpr(BinaryExpr::Comma, $1, $3, @2); }
|
{ $$ = new BinaryExpr(BinaryExpr::Comma, $1, $3, @2); }
|
||||||
;
|
;
|
||||||
@@ -1023,6 +1022,7 @@ statement
|
|||||||
| jump_statement
|
| jump_statement
|
||||||
| declaration_statement
|
| declaration_statement
|
||||||
| print_statement
|
| print_statement
|
||||||
|
| sync_statement
|
||||||
| error
|
| error
|
||||||
{
|
{
|
||||||
std::vector<std::string> builtinTokens;
|
std::vector<std::string> builtinTokens;
|
||||||
@@ -1163,6 +1163,11 @@ jump_statement
|
|||||||
{ $$ = new ReturnStmt($2, true, @1); }
|
{ $$ = new ReturnStmt($2, true, @1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
sync_statement
|
||||||
|
: TOKEN_SYNC
|
||||||
|
{ $$ = new ExprStmt(new SyncExpr(@1), @1); }
|
||||||
|
;
|
||||||
|
|
||||||
print_statement
|
print_statement
|
||||||
: TOKEN_PRINT '(' string_constant ')'
|
: TOKEN_PRINT '(' string_constant ')'
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user