|
|
Line 1: |
Line 1: |
| {{TOCright}}
| | #REDIRECT [[ist:The YACC Parser Generator/Exercise 1]] |
| = 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 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 ;
| |
| | |
| == Solution ==
| |
| | |
| [[category:Compiladores]] | |
| [[category:Ensino]]
| |