%{
#include <stdio.h>

extern char *yytext;

int yylex();

void yyerror() {
   printf("syntax error before %s\n",yytext); 
}
%}

%union {
   int intconst;
   char *stringconst;
}

%token <intconst> tINTCONST
%token <stringconst> tIDENTIFIER 

%start exp

%left '+' '-'
%left '*' '/'

%% 
exp : tIDENTIFIER { printf("push %s\n", $1); }
    | tINTCONST   { printf("push %i\n", $1); }
    | exp '*' exp { printf("mul\n"); }
    | exp '/' exp { printf("div\n"); }
    | exp '+' exp { printf("add\n"); }
    | exp '-' exp { printf("sub\n"); }
    | '(' exp ')' {}
;

%%
