|
|
(2 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| == Problema ==
| | #REDIRECT [[ist:The YACC Parser Generator/Exercise 4]] |
| Pretende-se fazer uma calculadora de expressões lógicas usando a interpretação dirigida pela sintaxe. A calculadora utiliza 10 variáveis designadas pelos números 0 a 9 da variável ival associada ao token '''VAR'''. Os literais verdadeiro e falso são designados pelos tokens '''VERD''' e '''FALS''', respectivamente. O cálculo é efectuado através de uma sequência de expressões terminadas por ';' ou ',' consoante o resultado da expressão deva ser impresso ou não, respectivamente. A atribuição de uma expressão a uma variável é efectuada pelo operador '=', não associativo. As expressões utilizam os seguintes operadores, por ordem decrescente de prioridade:
| |
| | |
| * '''negação lógica:''' operador unário pré-fixado, não associativo, designado por '!'.
| |
| * '''E lógico:''' operador binário, associativo à esquerda, designado por '&'.
| |
| * '''OU inclusivo lógico:''' operador binário, associativo à esquerda, designado por '|'.
| |
| * '''OU exclusivo lógico:''' operador binário, associativo à direita, designado por ' ~ '.
| |
| * '''comparação:''' operadores binários, '==', e '!=', associativos à esquerda, designados por '''EQ''' e '''NE'''.
| |
| | |
| A prioridade dos operadores pode ser alterada utilizando parenteses curvos '(' e ')'. No início todos os registos têm o valor lógico falso.
| |
| | |
| Todas as rotinas auxiliares devem ser codificadas.
| |
| | |
| == Solução ==
| |
| | |
| [[category:Compiladores]]
| |
| [[category:Ensino]] | |