Attribute Grammars/Exercise 11: Operadores Lógicos: Difference between revisions

From Wiki**3

< Attribute Grammars
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Problema ==
#REDIRECT [[ist:Attribute Grammars/Exercise 11: Operadores Lógicos]]
 
Pretende-se construir uma gramática atributiva (em C++) que avalie expressões lógicas. As expressões podem ser constituídas por literais '''p''' ou '''q''', ou por aplicações dos operadores lógicos: '''#''' (conjunção lógica – operador binário), '''@''' (disjunção lógica inclusiva – operador binário), '''/''' (negação lógica – operador unário). Assuma que os terminais '''p''' e '''q''' têm definido o atributo booleano val (respectivamente, igual ao valor C++ '''true''', para ''verdadeiro''; e '''false''', para ''falso''). O operador unário tem precedência superior aos binários e '''#''' tem precedência superior a '''@'''. É possível usar parênteses (curvos) para alterar as precedências.
 
# Identifique a gramática atributiva correspondente ao problema. Descreva o significado e o tipo de cada atributo. Que tipo de gramática obteve?
# Identifique a árvore de sintaxe decorada (apresentando o valor lógico da expressão no nó raiz da árvore) e o grafo de dependências para a expressão '''(p@q)#/(p#q)'''
# Escreva uma especificação YACC que implemente a gramática descrita em 1. Codifique toda a especificação (incluindo as zonas de declarações e de regras) e todas as funções auxiliares. Não utilizar variáveis globais.
 
== Gramática Atributiva ==
 
== Árvore Sintáctica Decorada e Grafo de Dependências ==
 
== Especificação YACC ==
 
 
[[category:Compiladores]]
[[category:Ensino]]

Latest revision as of 23:18, 5 December 2018