The YACC Parser Generator/Exercise 2: Difference between revisions

From Wiki**3

< The YACC Parser Generator
No edit summary
 
Line 1: Line 1:
== Problema ==
#REDIRECT [[ist:The YACC Parser Generator/Exercise 2]]
Considere a seguinte especificação sintáctica:
 
%token NUM
%union { int i; }
%type <nowiki><i></nowiki> 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:
# A especificação sintáctica apresenta conflitos. Identifique esses conflitos e a sua origem.
# Elimine os conflitos da especificação sintáctica apresentada, SEM ALTERAR A GRAMÁTICA (i.e., o que está entre os %%).
# Elimine os conflitos da especificação sintáctica apresentada, alterando EXCLUSIVAMENTE a gramática.
 
== Solução ==
 
[[category:Compiladores]]
[[category:Ensino]]

Latest revision as of 23:41, 5 December 2018