/* expr.y Parsera uproszczonej gramatyki wyrażeń arytmetycznych. Czyta z wejscia wyrazenia arytmetyczne zlozone z liczb, operatorów + - * / oraz nawiasów i wypisuje na wyjscie wyniki obliczeń. */ %{ uses YaccLib, LexLib; %} %token NUM %% input : /* empty */ | input '\n' | input expr '\n' { writeln($2); } ; expr : expr '+' term { $$ := $1 + $3; } | expr '-' term { $$ := $1 - $3; } | term ; term : term '*' fact { $$ := $1 * $3; } | term '/' fact { $$ := $1 div $3; } | fact ; fact : '(' expr ')' { $$ := $2; } | NUM ; %% {$I exprlex.pas} begin yyparse; end.