Ficha Nº6
Exercício Nº2
2008.04.29

Calculadora Aritmética


Considere a seguinte linguagem, já apresentada nas aulas teóricas, que permite interactuar com uma calculadora:
? id
Instrução de leitura: permite ler do teclado um valor que deverá ser guardado numa variável de nome id;
! exp
Instrução de escrita: permite escrever no monitor o valor da expressão exp que recebe como argumento;
id = exp
Instrução de atribuição: permite associar a uma variável identificada por id o valor da expressão exp;

Numa expressão podem ser utilizados os seguintes operadores/operandos: valores do tipo inteiro, identificadores de variáveis, '+', '-', '*', '/', '(' e ')'.

Considere o seguinte exemplo válido escrito nesta linguagem:
? a
b = 2 * a + 3
c = b + a
! b
! c

A marca de fim de ficheiro representará o fim da interacção.

Tente, então, desenvolver as seguintes alíneas:

(a)Especifique uma GIC para a linguagem em causa;

(b)Especifique o analisador léxico em flex;

(c)Especifique o analisador sintáctico em yacc;

(d)Especifique a makefile.

(e)Depois de testar a análise sintáctica acrescente as acções semânticas necessárias para o cálculo das expressões e para a leitura e a escrita de valores.