Considere a seguinte especificação sintáctica:
%token NUM %union { int i; } %type <i> NUM cnvl %% cnvl : NUM { $$ = $1; } | cnvl '-' cnvl { $$ = $1 - $3; } | cnvl '!' { $$ = printf("%d\n", $1); } ; %% int yyerror(char *s) { printf("%s\n", s); return 0; } int main() { return yyparse(); }
Considere e resolva as seguintes questões: