added comments
parent
aa52376507
commit
381805e980
|
@ -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; }
|
||||
|
|
2
main.py
2
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")
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue