Compiladores

T2 - Analisador de expressão com tabela de símbolos

Última ocorrência: 2023/02 em Universidade Lasalle Canoas

Objetivo

Entender o processo de definição de uma linguagem de programação simples e a implementação utilizando tabelas de símbolos.

Tarefas

Dada a gramática livre de contexto:

ETEEEEεTFTT+ETETεFVFFEF/EFεVnumnum[09][09]

onde + representa a operação de soma, representa a operação de subtração, representa a operação de multiplicação e / representa a operação de divisão; e que [az] representa um conjunto de caracters ASCII iniciado em a e terminado em z, e que a representa zero ou mais repetições do caracter a.

Alterar a gramática para que seja possível realizar operações de potenciação com o operador \^, por exemplo 2\^5=32, e operações de atribuição de valores a identificadores, onde os identificadores podem ser definidos como id[azAZ][azAZ09], e que esses identificadores possam ser utilizados nas expressões, por exemplo a=23+4 / b.

Altere a implementação do trabalho T1 para que o avaliador de expressões utilize a nova gramática. O novo avaliador deve aceitar múltiplas expressões, sendo que cada expressão deve ser definida em uma linha, por exemplo:

b = 18 * 2

Artefatos

Deve ser entregue apenas o link para um repositório público no Github ou outro serviço de armazenamento de repositórios Git.

O repositório deverá conter a implementação do trabalho, e um arquivo README (sugere-se o formato Markdown e um arquivo README.md) contendo instruções para a execução do sistema.

A nova gramática deve estar descrita no arquivo README do repositório.

Caso o trabalho inclua questões a serem respondidas, essas questões devem ser respondidas no README.

Observações

Recursos para a elaboração deste trabalho