From aa523765079bdde6e5223766e8ebacc29ace56c7 Mon Sep 17 00:00:00 2001 From: serr Date: Sun, 30 Mar 2025 18:31:54 +0300 Subject: [PATCH] simple calc + --- analyzers/calc/calc.l | 9 +++++---- analyzers/calc/calc.y | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/analyzers/calc/calc.l b/analyzers/calc/calc.l index 3ccaccb..fc56153 100644 --- a/analyzers/calc/calc.l +++ b/analyzers/calc/calc.l @@ -3,10 +3,11 @@ %} %% -[0-9]+ { yylval = atoi(yytext); return NUMBER; } -[-+*/()] { return yytext[0]; } -[ \t\n] ; // Игнорируем пробелы и переносы -. { printf("unknown: %s\n", yytext); } +[0-9]+ { yylval = atoi(yytext); return NUMBER; } // Если ввод - набор цифр, то возвращаем int +[-+*/()] { return yytext[0]; } // Если символ совпал с каким то из этих, то он возвращается, далее bison будет его использовать +[ \t] ; // Пробелы и табы игнорируются +\n { return 0; } // Энтер обозначает конец ввода +. { printf("unknown: %s\n", yytext); } // Неподдерживаемый символ %% int yywrap() { return 1; } \ No newline at end of file diff --git a/analyzers/calc/calc.y b/analyzers/calc/calc.y index fe710d0..7f53360 100644 --- a/analyzers/calc/calc.y +++ b/analyzers/calc/calc.y @@ -10,7 +10,7 @@ int yylex(); %left '*' '/' %% -input: /* пусто */ +input: | input expr { printf("= %d\n", $2); } ;