Objetivo: Contruir um programa usando o flex (ou lex). A ideia é usar o flex para fazer um pequeno compilador/interpretador de uma linguagem MUITO simples.
Linguagem:
A linguagem usa variáveis inteiras, números inteiros e 4 comandos: atribuição, impressão, adição e subtração.
Os símbolos são:
Letras maiúsculas e minúsculas são diferentes. Espaços em branco podem aparecer como separadores e em qualquer quantidade.
Um valor (<valor>) pode ser tanto um inteiro (<inteiro>) como um identificador (<id>). Caso seja um inteiro, o valor é o valor nominal deste inteiro. Caso seja um identificador, o valor é o valor da variável identificada pelo identificador.
Os comandos tem as formas e signifcados abaixo.
Variáveis não são previamente declaradas e tem inicialmente o valor 0 (zero).
Entrada: um arquivo texto
Saída: O programa deve executar o código lido diretamente, sem gerar código intermediário. A saída deve ser o resultado de possíveis chamadas ao comando "print".
Exemplo:
Entrada
let a = 2 add b 5 sub a b print a print b
Saída
-3 5
Execução do Programa: Entrada padrão e saída padrão. (Filtro)
Nome do executável: simples
Entrega do trabalho:
O trabalho deve ser entregue sob a forma de um arquivo de nome fulano.tar.gz, sendo que fulano deve ser substituído pelo seu "login name".
O arquivo fulano.tar.gz, uma vez expandido, deve criar os arquivos dentro de um diretório com nome fulano (lembrando que fulano deve ser substituído pelo seu "login name").
Arquivos: Makefile, fontes (arquivos flex) e um README.txt tudo dentro de um tar.gz com o nome do seu login.
O arquivo fulano.tar.gz deve ser entregue como anexo de mensagem enviada para andre@inf.ufpr.br. O Subject desta mensagem deve ser "Entrega do trabalho 1 de CI1211".
No arquivo README.txt deve estar o nome dos alunos e uma descrição das decisões tomadas durante a elaboração do trabalho. Por exemplo, como será a estruturas de dados que guarda as variáveis.
O trabalho pode ser feito em equipes de até 2 alunos. Neste caso fulano deve ser substituído por uma string com os dois logins.
Correção: