%{ #include #include #include #define YYSTYPE int /* integere type for YACC stack */ %} %token NUMBER %token ERROR %token '(' %token ')' %left '+' '-' %left '*' '/' %right UMINUS %% lines : lines expr '\n' {printf("%d\n", $2);} | lines '\n' | /* empty */ | lines error '\n' { yyerror("Please reenter:"); yyerrok; } ; expr : expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } | expr '*' expr { $$ = $1 * $3; } | expr '/' expr { $$ = $1 / $3; } | '(' expr ')' { $$ = $2; } | '-' expr %prec UMINUS { $$ = - $2; } | NUMBER { $$ = atoi(yytext);} ; %% #include "lex.yy.c"