From 381805e9809cec22bb1bf2eccb5cc88c02f917b7 Mon Sep 17 00:00:00 2001 From: serr Date: Sun, 30 Mar 2025 18:53:55 +0300 Subject: [PATCH] added comments --- analyzers/calc/calc.y | 8 ++++++-- main.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/analyzers/calc/calc.y b/analyzers/calc/calc.y index 7f53360..3b21462 100644 --- a/analyzers/calc/calc.y +++ b/analyzers/calc/calc.y @@ -5,15 +5,19 @@ void yyerror(const char *s); int yylex(); %} +// В Bison приоритет операторов определяется обратным порядком объявления +// left означает левоассоциативность, т.е. вычисление 8/2/2/2 например производится слева направо %token NUMBER -%left '+' '-' -%left '*' '/' +%left '+' '-' // т.е. операторы в этой строке имеют более низкий приотритет +%left '*' '/' // нежели операторы в этой строке %% +// Это правило отвечает за обработку потока выражений и вывод результатов. input: | input expr { printf("= %d\n", $2); } ; +// $1 - значение первого операнда, $2 - оператор, а $3 - значение второго операнда expr: NUMBER { $$ = $1; } | expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } diff --git a/main.py b/main.py index 2e06155..47b9b8f 100644 --- a/main.py +++ b/main.py @@ -27,7 +27,7 @@ def main(): for cmd in cmds: try: subprocess.run(cmd, capture_output=True, check=True) - print(f'\033[92mSuccess execute {cmd}!\033[0m') + print(f'\033[92mSuccess execute \033[0m{cmd}!') except subprocess.CalledProcessError as e: print(f"\033[91mError: {e}\033[0m") #