(Created page with "{{TOCright}} == Problema == Uma máquina reconhece os símbolos de '''0''' a '''9''', '''~''' e '''!'''. Os símbolos de '''0''' a '''9''' são organizados em sequências pos...") |
(→Gramática Atributiva) |
||
Line 14: | Line 14: | ||
'''E''' representa uma expressão; '''N''' representa um número; '''S''' representa uma sequência de dígitos não delimitada; e '''D''' representa uma sequência de dígitos delimitada. O atributo booleano '''v''' representa o valor associado a cada símbolo. | '''E''' representa uma expressão; '''N''' representa um número; '''S''' representa uma sequência de dígitos não delimitada; e '''D''' representa uma sequência de dígitos delimitada. O atributo booleano '''v''' representa o valor associado a cada símbolo. | ||
− | [[image:attrgram14.jpg]] | + | [[image:attrgram14.jpg|500px]] |
Como se pode ver pelas acções semânticas associadas à gramática, todos os atributos são sintetizados, pelo que a gramática é do tipo S. | Como se pode ver pelas acções semânticas associadas à gramática, todos os atributos são sintetizados, pelo que a gramática é do tipo S. |
Uma máquina reconhece os símbolos de 0 a 9, ~ e !. Os símbolos de 0 a 9 são organizados em sequências possivelmente delimitadas por !. Se a sequência numérica não estiver delimitada, então o seu valor é simplesmente o do seu maior dígito (em base 10). Sequências delimitadas indicam o número correspondente aos dígitos em base 10. O operador ~ calcula o valor da soma dos seus argumentos (este operador é associativo à esquerda).
Exemplo: à sequência 1934~!26!~12 corresponde ao valor 9+26+2=37.
E representa uma expressão; N representa um número; S representa uma sequência de dígitos não delimitada; e D representa uma sequência de dígitos delimitada. O atributo booleano v representa o valor associado a cada símbolo.
Como se pode ver pelas acções semânticas associadas à gramática, todos os atributos são sintetizados, pelo que a gramática é do tipo S.
Considerando que a gramática acima é do tipo S, a realização em YACC é trivial e deixa-se como exercício para o leitor.