%{ #include #include "regact.tab.h" %} %% call return CALL; locals return LOCALS; ret return RET; set_arg return SET_ARG; push_var return PUSH_VAR; push_arg return PUSH_ARG; push_int return PUSH_INT; store_var return STORE_VAR; store_arg return STORE_ARG; add return ADD; sub return SUB; mult return MULT; div return DIV; jeq return JEQ; jlt return JLT; jump return JUMP; put return PUT; put_str return PUT_STR; put_nl return PUT_NL; [a-zA-Z][a-zA-Z0-9_]* { yylval.string = strdup(yytext); return IDENTIFICADOR; } : return ':'; -?[0-9]+ { yylval.inteiro = atoi(yytext); return INTEIRO; } \"(\\[\\"]|[^"\\])*\" { yytext[strlen(yytext) - 1] = '\0'; yylval.string = strdup(yytext + 1); return STRING; } [ \n\t] ; /* ignora brancos */ #.* ; /* e comentários */ . { fprintf(stderr, "** Carácter inválido: `%c'\n", *yytext); return ERRO; }