(Created page with "{{TOCright}} = Problem = Pretende-se utilizar a ferramenta YACC para criar um programa que aceite uma gramática livre de contexto e determine se esta é recursiva (directa ou i...") |
|||
(One intermediate revision by the same user not shown) | |||
Line 26: | Line 26: | ||
c : A ; | c : A ; | ||
− | + | = Solution = | |
− | [[category: | + | [[category:Compiladores]] |
− | [[category: | + | [[category:Ensino]] |
Contents |
Pretende-se utilizar a ferramenta YACC para criar um programa que aceite uma gramática livre de contexto e determine se esta é recursiva (directa ou indirectamente).
Indique a especificação YACC para o problema, bem como todas as funções auxiliares. Tal como nos exercícios de gramáticas atributivas, não são admitidas variáveis globais.
Assuma que o analizador lexical produz os seguintes símbolos (tokens):
: | ; tTER tNTER
A entrada textual corresponde a uma sequência de produções com a sintaxe utilizada pelo próprio YACC.
Os símbolos tTER e tNTER denotam símbolos terminais e não terminais, respectivamente. Assuma, por simplicidade, que apenas existem 10 símbolos não terminais, identificados pelos inteiros 0 a 9 na variável i associada ao símbolo tNTER.
Exemplo de programa:
x : b X | c Y ; b : x ; c : A ;