Skip to content
Snippets Groups Projects
Commit dbf54764 authored by Eelco Dolstra's avatar Eelco Dolstra
Browse files

* Resolve an ambiguity between ifs and attribute selection, e.g., `if

  b then x else y.z'.
parent 86b7efbd
No related branches found
No related tags found
No related merge requests found
...@@ -32,7 +32,7 @@ void yyerror(YYLTYPE * loc, yyscan_t scanner, void * data, char * s) ...@@ -32,7 +32,7 @@ void yyerror(YYLTYPE * loc, yyscan_t scanner, void * data, char * s)
ATermList ts; ATermList ts;
} }
%type <t> start expr expr_function expr_assert expr_op %type <t> start expr expr_function expr_assert expr_if expr_op
%type <t> expr_app expr_select expr_simple bind inheritsrc formal %type <t> expr_app expr_select expr_simple bind inheritsrc formal
%type <ts> binds ids expr_list formals %type <ts> binds ids expr_list formals
%token <t> ID INT STR PATH URI %token <t> ID INT STR PATH URI
...@@ -60,6 +60,12 @@ expr_function ...@@ -60,6 +60,12 @@ expr_function
expr_assert expr_assert
: ASSERT expr ';' expr_assert : ASSERT expr ';' expr_assert
{ $$ = ATmake("Assert(<term>, <term>)", $2, $4); } { $$ = ATmake("Assert(<term>, <term>)", $2, $4); }
| expr_if
;
expr_if
: IF expr THEN expr ELSE expr
{ $$ = ATmake("If(<term>, <term>, <term>)", $2, $4, $6); }
| expr_op | expr_op
; ;
...@@ -102,8 +108,6 @@ expr_simple ...@@ -102,8 +108,6 @@ expr_simple
| '{' binds '}' | '{' binds '}'
{ $$ = fixAttrs(0, $2); } { $$ = fixAttrs(0, $2); }
| '[' expr_list ']' { $$ = ATmake("List(<term>)", $2); } | '[' expr_list ']' { $$ = ATmake("List(<term>)", $2); }
| IF expr THEN expr ELSE expr
{ $$ = ATmake("If(<term>, <term>, <term>)", $2, $4, $6); }
; ;
binds binds
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment