%{ #include #include #include using namespace std; void yyerror(string s) { cerr << s << endl; exit(EXIT_FAILURE); } extern int yylex(); %} %union { string *s; int x; } %token pocetak_token kraj_token ispisi_token mod_token %token string_token %token broj_token %type Izraz %left '+' '-' %left '*' '/' mod_token %% Program: pocetak_token NizNaredbi kraj_token '.' ; NizNaredbi: NizNaredbi ';' Naredba | Naredba ; Naredba: ispisi_token '(' string_token ')' { cout << *$3 << endl; delete $3; } | ispisi_token '(' Izraz ')' { cout << $3 << endl; } ; Izraz: Izraz '+' Izraz { $$ = $1 + $3; } | Izraz '-' Izraz { $$ = $1 - $3; } | Izraz '*' Izraz { $$ = $1 * $3; } | Izraz '/' Izraz { $$ = $1 / $3; } | Izraz mod_token Izraz { $$ = $1 % $3; } | broj_token { $$ = $1; } ; %% int main() { yyparse(); return 0; }