unary plus and unary minus added

master
serr 2025-04-01 17:42:42 +03:00
parent c1b1c7ddbf
commit 8de97b2883
3 changed files with 22 additions and 16 deletions

View File

@ -16,6 +16,10 @@ extern FILE *yyin;
%type <str> expr program statement block
%left PLUS MINUS
%left MULT DIV MOD
%right UNARY
%%
// Program - последовательность утверждений
@ -37,6 +41,8 @@ block:
// Возможные выражения
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
| IDENTIFIER { printf("IDENTIFIER(%s)\n", $1); free($1); } ASSIGN { printf("ASSIGN\n"); } expr // выражения вида a=expr
| expr PLUS { printf("PLUS\n") } expr // выражения вида expr+expr

View File

@ -1,11 +1,11 @@
{
x = 2 + 1;
x = 2 + 1 % 1;
x = z + 3 + 5;
{
x = 10;
x = -10;
y = x + 5 % 2;
{
z = y * 2 / 5 * 3;
z = y * +2 / 5 * 3;
}
}
print x;