unary plus and unary minus added
parent
c1b1c7ddbf
commit
8de97b2883
|
@ -16,6 +16,10 @@ extern FILE *yyin;
|
||||||
|
|
||||||
%type <str> expr program statement block
|
%type <str> expr program statement block
|
||||||
|
|
||||||
|
%left PLUS MINUS
|
||||||
|
%left MULT DIV MOD
|
||||||
|
%right UNARY
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
// Program - последовательность утверждений
|
// Program - последовательность утверждений
|
||||||
|
@ -37,6 +41,8 @@ block:
|
||||||
// Возможные выражения
|
// Возможные выражения
|
||||||
expr:
|
expr:
|
||||||
RET { printf("RET\n") } expr // выражение вида return expr
|
RET { printf("RET\n") } expr // выражение вида return expr
|
||||||
|
| PLUS { printf("UNARY PLUS\n"); } expr %prec UNARY
|
||||||
|
| MINUS { printf("UNARY MINUS\n"); } expr %prec UNARY
|
||||||
| PRINT { printf("PRINT\n") } expr // выражение вида print expr
|
| PRINT { printf("PRINT\n") } expr // выражение вида print expr
|
||||||
| IDENTIFIER { printf("IDENTIFIER(%s)\n", $1); free($1); } ASSIGN { printf("ASSIGN\n"); } expr // выражения вида a=expr
|
| IDENTIFIER { printf("IDENTIFIER(%s)\n", $1); free($1); } ASSIGN { printf("ASSIGN\n"); } expr // выражения вида a=expr
|
||||||
| expr PLUS { printf("PLUS\n") } expr // выражения вида expr+expr
|
| expr PLUS { printf("PLUS\n") } expr // выражения вида expr+expr
|
||||||
|
|
Loading…
Reference in New Issue