added comments
parent
aa52376507
commit
381805e980
|
@ -5,15 +5,19 @@ void yyerror(const char *s);
|
||||||
int yylex();
|
int yylex();
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
// В Bison приоритет операторов определяется обратным порядком объявления
|
||||||
|
// left означает левоассоциативность, т.е. вычисление 8/2/2/2 например производится слева направо
|
||||||
%token NUMBER
|
%token NUMBER
|
||||||
%left '+' '-'
|
%left '+' '-' // т.е. операторы в этой строке имеют более низкий приотритет
|
||||||
%left '*' '/'
|
%left '*' '/' // нежели операторы в этой строке
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
// Это правило отвечает за обработку потока выражений и вывод результатов.
|
||||||
input:
|
input:
|
||||||
| input expr { printf("= %d\n", $2); }
|
| input expr { printf("= %d\n", $2); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
// $1 - значение первого операнда, $2 - оператор, а $3 - значение второго операнда
|
||||||
expr: NUMBER { $$ = $1; }
|
expr: NUMBER { $$ = $1; }
|
||||||
| expr '+' expr { $$ = $1 + $3; }
|
| expr '+' expr { $$ = $1 + $3; }
|
||||||
| expr '-' expr { $$ = $1 - $3; }
|
| expr '-' expr { $$ = $1 - $3; }
|
||||||
|
|
2
main.py
2
main.py
|
@ -27,7 +27,7 @@ def main():
|
||||||
for cmd in cmds:
|
for cmd in cmds:
|
||||||
try:
|
try:
|
||||||
subprocess.run(cmd, capture_output=True, check=True)
|
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:
|
except subprocess.CalledProcessError as e:
|
||||||
print(f"\033[91mError: {e}\033[0m")
|
print(f"\033[91mError: {e}\033[0m")
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue