Compiladores Prof.a Mariella Berger Trabalho 4 – Tabela de Funções Primitivas e Tabela de Variáveis 1. Modificações ● Não mais é necessário verificar se o valor a ser inserido corresponde ao mesmo tipo da variável. Você poderá fazêlo dentro dos analisadores léxico e sintático no próximo trabalho. Ou seja, a observação “No momento em que for inserir um valor de uma variável, verifique se o valor corresponde ao mesmo tipo desta variável. Caso não corresponda, apresente a mensagem “Erro de tipo.” ” não é mais válida. Entretanto, caso você já tenha realizado tal verificação, não é necessário realizar mudanças. ● O trabalho foi adiado para dia 03/06/2007. 2. Objetivo O objetivo do trabalho 4 é a criação da Tabela de Variáveis e da Tabela de Funções Primitivas de seu Compilador. 3. Implemetação Você deverá utilizar o módulo Tabela Hash do Trabalho 1 para implementar sua Tabela de Variáveis e sua Tabela de Funções Primitivas. Uma rápida descrição dos 2 módulos do trabalho segue: 1. Tabela de Variáveis: • Cada variável deve possuir: nome, valor e tipo. • • • Os tipos possíveis de variáveis são: inteiro, caracter e string. Você deverá implementar ao menos as funções: Incluir variável (incluir nome, incluir tipo e incluir valor), Consultar variável (consultar se existe, consultar tipo, consultar valor), Alterar valor de Variável e Imprimir Variável. Este módulo será testado da seguinte maneira: ./trab4 v variaveis.txt entrada.txt saida.txt onde: • variaveis.txt: arquivo contendo as variáveis utilizadas em cada teste. Este arquivo terá, por linha, os campos nome da variável seguido do tipo da variável seguido do valor da variavel, sempre separados por espaços em branco. Após o valor da variável terá um enter. Exemplo: x inteiro 10 y inteiro 15 contador inteiro 1 x inteiro 70 a string “Eu amo a Tia Mariella” b caracter 'c' • entrada.txt: arquivo de entrada para realização dos testes das variáveis. Este arquivo será composto (por linha), pelo nome de variável. Após o nome da variável terá um enter. Exemplo: x y z contador a b • saida.txt: arquivo contendo o resultado de sua análise. Exemplo: variavel: x, tipo: inteiro, valor: 70 variavel: y, tipo: inteiro, valor: 15 A variavel z nao foi encontrada na tabela de variaveis. variavel: contador, tipo: inteiro, valor: 1 variavel: a, tipo: string, valor: “Eu amo a Tia Mariella” variavel: b, tipo: caracter, valor: 'c' 2. Tabela de Funções Primitivas • As funções primitivas da linguagem com suas respectivas aridades são: • leia: 1 • imprima: 1 • +: 2 • : 2 • • • • • • div: 2 mul: 2 max: 3 mod: 2 Você deverá implementar as funções: • Consultar se é Função Primitiva • Consultar Aridade de Função Este módulo será testado da seguinte maneira: ./trab4 f entrada.txt saida.txt onde: • entrada.txt: arquivo de entrada para realização dos testes das funções primitivas. Exemplo: leia + soma div mod ** • saida.txt: arquivo contendo o resultado de sua análise. Exemplo: leia: aridade 1 +: aridade 2 A funcao soma nao foi encontrada na tabela de funcoes primitivas. : aridade 2 div: aridade 2 mod: aridade 2 A funcao ** nao foi encontrada na tabela de funcoes primitivas. 4. Considerações Importantes • Seu programa deve ser, obrigatoriamente, compilado com o utilitário make. Crie um arquivo Makefile que gere como executável para o seu programa um arquivo de nome trab4. • Crie códigos claros e organizados. Utilize um estilo de programação consistente. Comente o seu código extensivamente. Isto ajudará no momento da correção. 5. Avaliação • A nota do trabalho terá um total de 10 pontos. A pontuação será calculada automaticamente de acordo com a percentagem de erros/acertos em um benchmark prédefinido; • • Testarei todos os trabalhos no Linux (Fedora Core 1) com o compilador GCC. Usem somente comandos C padrão ANSI, para garantir que não teremos problemas com a versão do compilador. Serão contemplados com nota zero os trabalhos que se enquadrarem em uma ou mais situações abaixo: ✗ Plágio; ✗ Programa não compila; ✗ Não está de acordo com as especificações. 6. Entrega Este trabalho deve ser feito em grupo de até 2 componentes e entregue até o dia 31 de maio de 2007, às 23:59:59hs. Ele deve ser enviado para [email protected]. O assunto da mensagem deve ser : Para a turma de Ciência da Computação: compcc:trab4:<nome1>:<nome2> Para a turma de Engenharia de Computação compec:trab4:<nome1>:<nome2> Ex: compcc:trab4:Mariella Berger:Jociel Andrade O nome do arquivo com o trabalho enviado em anexo deve ser trab4.tar.gz. Ele será descompactado da seguinte forma: tar xvzf trab4.tar.gz e deverá gerar um arquivo chamado Makefile, com as regras de compilação do programa, e os arquivos com os códigos fontes. Ao digitar: make all deve ser gerado o executável trab4 Após o envio você receberá uma confirmação de recebimento do trabalho. Caso isso não aconteça, reenvie o seu trabalho para o mesmo endereço. Na mensagem de confirmação do seu trabalho haverá um hash MD5. Para garantir que o arquivo enviado não foi corrompido, compare o MD5 do email com o gerado em sua máquina. Isso é feito com o seguinte comando no terminal: md5sum trab4.tar.gz Caso os valores sejam diferentes, o seu arquivo foi corrompido: reenvie o trabalho novamente. O recebimento dos trabalhos é automatizado. Siga as instruções à risca pois algum erro na submissão pode inviabilizar a entrega do seu trabalho. Não escreva o seu nome com caracteres estendidos (á, ç, etc.). Não utilize contas de email do HOTMAIL, TERRA ou BOL pois as mensagens enviadas por esses servidores não seguem o padrão. Assim, o programa de recebimento automático não consegue detectar o seu email. Não deixe para entregar seu trabalho no último instante. Você poderá perder o prazo e ter seu trabalho invalidado. 7. Observações Mais detalhes serão discutidos em sala de aula. Considerações feitas em sala terão mais relevância do que as contidas nesta especificação. Qualquer eventual erro ou discrepância encontrada nesta especificação deve ser notificado à professora imediatamente para que seja corrigida. 8. Dúvidas Em caso de dúvidas no trabalho contateme em [email protected].