Vous êtes sur la page 1sur 23

UniversidadeEstadualdeSantaCruz

DepartamentodeCinciasExataseTecnolgicas
CursodeCinciadaComputao

Disciplina:Compiladores2011.1
Especificaodo1trabalho,verso2

AnalisadorLxicoparaPortugol
Professor

PauloCosta
Ilhus,BA Fevereirode2011

Sumrio
1. Instruesgerais.............................................................................................................................1 2. Especificaodotrabalho...............................................................................................................3 2.1. Modularizao.......................................................................................................................3 2.2. Autmato...............................................................................................................................3 2.3. Tabeladesmbolos................................................................................................................4 2.4. Geraodassadas................................................................................................................4 . 3. EspecificaolxicadalinguagemPortugol ...................................................................................5 . 3.1. Tiposdedados.......................................................................................................................5 3.2. Constantesevariveis...........................................................................................................5 3.3. Comandos..............................................................................................................................5 3.4. Usodemaisculas,minsculaseacentuao.......................................................................5 3.5. Operadores............................................................................................................................6 3.6. Comandos..............................................................................................................................6 3.7. Declaraodevariveis.........................................................................................................6 3.8. Expressesregulares.............................................................................................................6 3.9. Delimitadoreseoperadores..................................................................................................6 3.10. Comentrios...........................................................................................................................6 3.11. Erroslxicos...........................................................................................................................7 4. Impressodosresultadosparaorelatrio.....................................................................................7 4.1. Arquivodeentradaeerroslxicos........................................................................................7 4.2. Listadetokensreconhecidos.................................................................................................8 4.3. Tabeladesmbolos................................................................................................................9 5. Avaliao.......................................................................................................................................10 5.1. Defesa..................................................................................................................................10 5.2. Testes...................................................................................................................................10 5.3. Discrepncias.......................................................................................................................10 5.4. Critriosdeavaliao...........................................................................................................10 5.5. Pontuao............................................................................................................................11 6. Formulriodepravaliao.........................................................................................................15 6.1. Resumo................................................................................................................................15 6.2. Camposdoformulrio.........................................................................................................15 6.3. Refernciascruzadas...........................................................................................................16 6.4. SeoANomedoarquivodeentrada..............................................................................17 6.5. SeoBTratamentodemaisculas,minsculaseacentos.............................................17 6.6. SeoCDetalhesdeimplementao...............................................................................17 6.7. SeoDEstruturasdedadosdetamanhoarbitrrio.......................................................17 6.8. SeesEeFTokens ..........................................................................................................18 . 6.9. SeoGTabeladetransies...........................................................................................18 6.10. SeesHeITabeladesmbolos.......................................................................................19

ListadeTabelas
Tabela1Critriosdeavaliaoedescontosnanota......................................................................12

ListadeFiguras
Figura1ExemplodeprogramaPortugolincorreto..........................................................................7 Figura2Exemplodeavaliao:Listadeerros................................................................................13 Figura3Exemplodeavaliao:Descontosnasnotas....................................................................14 Figura4Exemplodeavaliao:Notas............................................................................................14 Figura5Estruturadoformulriodeavaliao...............................................................................16 Figura6Exemploderefernciacruzadanoformulriodeavaliao............................................16 Figura7Exemploderefernciacruzadanocdigoimpresso........................................................16

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1 1. Instrues gerais

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

1.1. O trabalho deve ser feito em grupos de dois alunos. 1.2. O cdigo deve ser implementado em C ou C++, em Windows, com o Dev-C++ 4.9.9.2, cujo instalador pode ser obtido em http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe 1.3. O trabalho deve ser entregue nos 10 minutos iniciais da primeira aula reservada para as defesas, em dois formatos: 1.3.1. Eletrnico: em pen drive ou CD, que ser devolvido pelo professor na aula seguinte. 1.3.2. Impresso: um relatrio, descrito a seguir. Importante: o preparo do relatrio muito trabalhoso, no deixe para o ltimo dia. 1.4. O relatrio deve conter os seguintes itens e nada mais, nesta ordem: 1.4.1. Capa contendo ao menos os nomes dos autores e a data da entrega. 1.4.2. Sumrio indicando contedos (listados a seguir) e respectivos nmeros de pgina. 1.4.3. Cdigo fonte integral do programa, com linhas numeradas (detalhes a seguir). 1.4.4. Representaes do autmato utilizado: 1.4.4.1. Diagrama de estados e transies, claro e legvel, desenhado com qualquer programa de computador. Diagramas desenhados a mo ou por qualquer motivo ilegveis, integral ou parcialmente, no sero corrigidos. 1.4.4.2. Tabela de transies de estados propriamente dita, usada pelo programa. 1.4.5. Resultados do processamento dos trs arquivos de teste. Para cada teste o resultado deve consistir de trs itens separados: 1.4.5.1. Contedo original do arquivo de teste e os erros lxicos marcados apropriadamente (veja as sees 3.11 na pg. 7 e 4.1 na pg. 7). 1.4.5.2. Lista de tokens reconhecidos no arquivo de entrada (seo 4.2, pg. 8). 1.4.5.3. Contedo da tabela de smbolos aps processar cada entrada (seo 4.3, pg. 9). 1.4.6. Formulrio de Pr-Avaliao preenchido a mo e de lpis. Para instrues sobre seu preenchimento, veja a seo 6 (pg. 15). 1.5. Como preparar o relatrio mtodo recomendado: 1.5.1. Use o documento Analisador Lxico Relatrio.doc fornecido pelo professor. Esse modelo pr-formatado simplificar a produo do relatrio. Adicione seus contedos sem mudar nenhuma formatao do documento (fonte, espaos entre linhas, margens, etc). 1.5.2. Observe atentamente os resultados dos testes fornecidos como modelo; construa as sadas impressas do seu programa exatamente da mesma maneira, nos mnimos detalhes. 1.5.3. Copie seu cdigo fonte, resultados dos testes etc. e cole no relatrio pr-formatado, preservando a formatao do documento (Editar | Colar especial | Texto no formatado). No use a opo Colar simples, pois isso manter a formatao do original, arruinando a formatao pr-definida. 1.5.4. No cabealho de qualquer pgina: digite os nomes dos autores e clique com o boto direito do mouse sobre a data para atualiz-la (Atualizar campo). 1.5.5. Clique com o boto esquerdo do lado esquerdo do sumrio e pressione F9 para atualiz-lo. 1.5.6. No preencha o Formulrio de Pr-Avaliao no Word; imprima o documento e s ento preencha-o a mo, seguindo as instrues na seo 6 (pg. 15). 1.6. Como preparar o relatrio mtodo alternativo: 1.6.1. Use qualquer processador de texto. Inclua tudo que est descrito no item 1.4 acima, exatamente na ordem listada, e nada mais. 1.6.2. A capa e o sumrio podem ter formatao livre. O cdigo fonte e os resultados dos testes devem sem formatados com fonte Lucida Console 10pt, espao simples entre as linhas e

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

1.7.

1.8.

1.9. 1.10.

1.11.

1.12. 1.13.

margens de 2cm (todas as quatro). Em hiptese alguma use fonte proporcional como Times New Roman ou Arial. 1.6.3. Cdigo fonte: as linhas devem ser numeradas. Certifique-se que a impresso no contm linhas truncadas ou quebras de linha excessivas. Isso pode ser evitado usando fonte menor que 10pt (mas no a ponto de tornar o texto ilegvel) e identao moderada (p.ex. 2 espaos em branco por nvel de identao). 1.6.4. Inclua em cada pgina um cabealho contendo uma descrio do seu contedo. Exemplos: Cdigo fonte e Testes, prog3.ptg, Tokens reconhecidos. 1.6.5. Inclua o Formulrio de Pr-Avaliao, em branco, a ser preenchido a mo depois de impresso. Ele parte do documento Analisador Lxico Relatrio (ver item 1.5 acima). 1.6.6. Numere todas as pginas em uma nica sequncia, posicionando os nmeros no rodap da pgina, direita. No numere cada parte do documento a partir da pgina 1. 1.6.7. Imprima o relatrio, depois encaderne ou grampeie tudo em um nico volume. O que entregar no formato eletrnico: 1.7.1. Cdigo fonte do programa: Portugol.c 1.7.2. Cdigo executvel do programa: Portugol.exe 1.7.3. Representaes do autmato utilizado (ver item 1.4.4 acima). 1.7.4. Resultados do processamento dos trs arquivos de teste (ver item 1.4.5 acima). 1.7.5. Relatrio da verso impressa (ver item 1.4 acima), em formato Word ou equivalente. Como preparar a verso eletrnica do trabalho: 1.8.1. Crie uma pasta com os nomes dos autores, p.ex. JoseCarlos-AnaMaria 1.8.2. Crie nessa pasta principal quatro sub-pastas: Fonte, Executavel, Automato e Testes. 1.8.3. Coloque nessas sub-pastas o contedo listado no item 1.7 acima. 1.8.4. Compacte a pasta principal criando um arquivo .zip, p.ex. JoseCarlos-AnaMaria.zip 1.8.5. Grave esse arquivo em um CD ou copie-o para um pen drive e traga para a defesa. O trabalho ser defendido por cada grupo na data marcada, em uma espcie de avaliao oral. Maiores detalhes na seo 5.1 (pg. 10). No sero aceitos trabalhos entregues: a) por outros meios que no os especificados acima; b) sem as verses eletrnicas ou impressas; c) sem o Formulrio de Pr-Avaliao devidamente preenchido; ou d) fora do prazo. Quem faltar defesa por justa causa pode solicitar segunda chamada no protocolo da UESC, anexando a devida justificativa (p.ex. atestado mdico). 1.11.1. Se a 2 chamada no for solicitada no protoloco ou se for indeferida pelo departamento, o aluno ou a dupla ausente defesa ter nota zero no trabalho, sem direito a 2 chamada. 1.11.2. Se os dois membros da dupla faltarem defesa e seus pedidos de 2 chamada forem deferidos, o trabalho no ser avaliado, mesmo que tenha sido entregue no prazo. Ambos faro uma prova terica, individual e sem consulta, no dia e hora das provas de 2 chamada. 1.11.3. Se apenas um membro da dupla faltar defesa e seu pedido de 2 chamada for deferido, o trabalho s ser avaliado se estiver dentro das condies do item 1.10 acima. Nesse caso, o aluno presente defesa no ser penalizado na nota pela ausncia do parceiro; o ausente far uma prova terica, individual e sem consulta, no dia e hora das provas de 2 chamada. O cdigo fonte ser compilado e executado pelo professor, e os resultados sero utilizados na avaliao do trabalho, descrita na seo 5 (pg. 10). Trabalhos incompletos ou com erros recebero notas parciais, aps os descontos apropriados. No deixe de entregar o trabalho apenas porque est incompleto.

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1 2. Especificao do trabalho

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

O trabalho consiste na implementao de um analisador lxico para a linguagem de programao fictcia Portugol. O programa deve ser invocado na linha de comando da seguinte forma:
Portugol.exe prog1.ptg

onde Portugol.exe o executvel e prog1.ptg um arquivo texto contendo um programa escrito na linguagem Portugol. O analisador lxico deve: reconhecer as palavras reservadas, operadores e delimitadores e utilizar cdigos nicos para todos eles; criar e atualizar uma tabela de smbolos para os tokens que possuem lexemas; e ser implementado como uma subrotina (funo ou mtodo) que, a cada chamada: processa a entrada caractere por caractere, ainda que o arquivo seja lido todo de uma vez; identifica um nico token na entrada; e retorna o cdigo do token e, se for o caso, uma referncia sua entrada na tabela de smbolos. Em um compilador real, o analisador sinttico chamaria o lxico sempre que precisasse de um token; ao receber o novo token, efetuaria seu processamento segundo o mtodo de anlise sinttica adotado. No decorrer da anlise sinttica o compilador construiria uma representao do programa fonte a partir dos tokens, geralmente na forma de uma rvore sinttica, usando uma pilha para armazen-los temporariamente. Nesse mesmo princpio, seu analisador lxico deve ser implementado como uma subrotina a ser chamada pelo analisador sinttico sempre que este necessitar de um novo token. A funo main deve simular o analisador sinttico, chamando sucessivamente o analisador lxico e obtendo tokens um de cada vez, at que no haja mais tokens. No implemente no analisador lxico um lao que consome todos os tokens de uma vez. Utilize um token extra, p.ex. tkEOF, para sinalizar o final do arquivo. Apesar deste trabalho no lidar com anlise sinttica, os tokens no sero descartados. O item 1.4.5.2 (pg. 1) menciona a lista de tokens que seu programa deve imprimir; mais detalhes na seo 4.2 (pg. 8). 2.1. Modularizao O analisador lxico possuir funcionalidades bem definidas e independentes umas das outras, como leitura do arquivo de entrada, reconhecimento de palavras reservadas, manuteno da tabela de smbolos, impresso de mensagens de erro e gerao das sadas. Implemente essas funcionalidades distintas atravs de funes separadas e projete as passagens de parmetros a fim de evitar ao mximo o uso de variveis globais. 2.2. Autmato O analisador lxico deve ser baseado em um autmato finito determinstico guiado por uma tabela de transies entre estados. Essa tabela deve ser implementada explicitamente, atravs de uma matriz contendo estados de transio, indexada pelo estado atual e pelo prximo smbolo na entrada. Veja a seo 6.9 (pg. 18) para um exemplo de cdigo que efetua a transio entre estados consultando a tabela de transies. Para facilitar a implementao do autmato, intercepte palavras reservadas logo aps a deteco de um identificador. Ou seja, no se preocupe em reconhecer palavras reservadas desde o incio; procure apenas por cadeias que satisfaam a definio de identificadores. Ao encontrar um identificador, verifique se uma palavra reservada, p.ex. chamando uma funo que retorna o cdigo da palavra reservada ou 1 se o identificador no for palavra reservada. Obviamente tal funo deve conhecer as palavras reservadas da linguagem, por isso aconselha-se coloc-las numa tabela. Alguns autores as colocam na tabela de smbolos, mas uma tabela apenas de palavras reservadas, separada da tabela de smbolos, seria mais apropriada. Em suma: o reconhecimento de palavras reservadas pode ser feito atravs de: 1) um autmato simples que reconhece um identificador e depois decide se palavra reservada, ou 2) um autmato mais complexo, com um estado para cada letra de cada palavra reservada e que reconhece palavras reservadas separadamente dos identificadores. Nos dois casos o autmato deve reconhecer todos os tokens da linguagem, e no apenas palavras reservadas e identificadores. O diagrama do autmato deve ser completo e legvel. Todos os estados devem ser numerados. Os estados do diagrama devem corresponder fielmente aos da tabela de transies.
Paulo Costa 2011 Especificao do 1 Trabalho (Verso 2) 3

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1
2.3. Tabela de smbolos

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

A tabela de smbolos deve conter informaes apenas sobre tokens que possuem lexemas. Para cada token, essas informaes consistem de: cdigo numrico do token; lexema do token; lista de ocorrncias do token no arquivo de entrada (linha e coluna). Uma combinao tokenlexema s pode ser includa uma nica vez na tabela de smbolos, ou seja, sem duplicao. A impresso da tabela de smbolos est descrita na seo 4.3 (pg. 9). 2.4. Gerao das sadas Em um compilador real, o analisador sinttico no tem, em princpio, acesso direto ao programa de entrada, apenas aos tokens retornados pelo analisador lxico e a seus respectivos atributos, armazenados na tabela de smbolos. Neste trabalho, o analisador sinttico apenas minimamente simulado pela funo main do programa principal, mas isso no muda as seguintes observaes: 1. Algumas informaes sobre o cdigo fonte, no arquivo de entrada, no so acessveis ao analisador sinttico. Exemplo: natureza e posio dos erros lxicos. 2. Algumas informaes sobre o cdigo fonte, independentemente de serem ou no acessveis ao analisador sinttico, esto disponveis apenas aps o trmino da anlise lxica, quando todo o arquivo de entrada tiver sido processado. Exemplo: quantidade e posio de lexemas duplicados no cdigo fonte. Aplicadas ao presente trabalho, essas observaes tm implicaes importantes para a gerao das sadas descritas nas sees 4.1 a 4.3 (pgs. 7 a 9). Assim, necessrio refletir sobre quando e como cada uma dessas sadas ser produzida. Considere a observao 1 acima. Segundo ela, o analisador lxico estaria em melhor posio que o sinttico para produzir as trs sadas especificadas. Mesmo que essas sadas sejam produzidas pelo analisador lxico, h pelo menos duas opes sobre o momento de faz-lo: 1. Gerar as sadas simultaneamente, durante a anlise lxica, medida que o arquivo de entrada for lido e os tokens forem reconhecidos. 2. Gerar as sadas uma de cada vez, na ltima chamada ao analisador lxico, imediatamente aps o reconhecimento do token de fim de arquivo. importante compreender as implicaes de cada uma dessas opes. Considere, por exemplo, a listagem do arquivo de entrada e dos erros lxicos, descrita na seo 4.1 (pg. 7). Se as mensagens de erro forem impressas ao final da anlise lxica (opo 2 acima), ento ser necessrio guardar uma lista de erros encontrados, com tipo e posio na entrada, em uma estrutura de dados adicional. Por outro lado, se as mensagens de erro forem impressas no instante em que os erros forem detectados (opo 1 acima), tal estrutura de dados adicional ser desnecessria. O mesmo se aplica lista de tokens encontrados na entrada, descrita na seo 4.2 (pg. 8). Essa lista pode ser criada durante a anlise lxica, armazenando os tokens em uma estrutura auxiliar, para ser impressa ao final da anlise (opo 2 acima), mas ela tambm pode ser criada em paralelo anlise lxica, imprimindo tokens medida que forem reconhecidos (opo 1 acima). A impresso da tabela de smbolos, descrita na seo 4.3 (pg. 9), mais problemtica. Cada token inserido na tabela deve ser impresso uma nica vez, acompanhado de uma lista de posies no arquivo de entrada onde ele ocorre. Isso significa que a impresso da tabela de smbolos no pode ocorrer em paralelo anlise lxica, medida que os tokens forem reconhecidos (opo 1 acima). Qualquer que seja a estratgia empregada para a produo das sadas, necessrio garantir que as informaes necessrias estaro disponveis no local e momento certos. Isso pode exigir a alocao e gerenciamento de estruturas de dados adicionais, aumentando o consumo de memria e o tempo de execuo do programa. Maior consumo de memria e tempo de execuo podem ser o preo justo por um processamento mais adequado da entrada.

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1 3. Especificao lxica da linguagem Portugol
3.1. Tipos de dados

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

H trs tipos de dados em Portugol: inteiro, decimal e cadeia, equivalentes, respectivamente, ao int, float e string de C. No existe o tipo char nem modificadores como short, long e unsigned de C. Um inteiro consiste de ao menos um dgito, com sinal opcional, mas sem ponto decimal ou expoente. Assim, -15 deve ser reconhecido como o token tk_INTEIRO, bem como +001 e 1234567890. Um decimal consiste de ao menos um dgito e ponto decimal, com sinal opcional, mas sem expoente. Assim, -.15 deve ser reconhecido como o token tk_DECIMAL, bem como +0. e 12345.67890 . Note que +. deve ser reconhecido como o token tk_MAIS e, a seguir, produzir erro lxico no . pois em Portugol o ponto s pode ocorrer como parte de uma constante decimal com ao menos um dgito. Uma cadeia uma sequncia de caracteres delimitada por aspas duplas e totalmente contida em uma nica linha. Uma cadeia aberta em uma linha e fechada em outra deve gerar erro lxico. Assim, -.15 deve ser reconhecido como o token tk_CADEIA, bem como \n e . 3.2. Constantes e variveis Constantes podem ser de qualquer um dos trs tipos acima. Os termos constante e literal so equivalentes, no sentido que constantes so valores numricos ou strings que aparecem literalmente no cdigo fonte. No h variveis do tipo cadeia em Portugol, apenas do tipo inteiro, declaradas atravs da palavra reservada inteiro , e do tipo decimal, declaradas atravs da palavra reservada decimal. Uma declarao inteiro ou decimal pode conter uma ou mais variveis; no caso de declarao mltipla, as variveis devem ser separadas por vrgulas. Identificadores (nomes de variveis) devem comear com uma letra e conter apenas letras, dgitos e sublinhado; letras acentuadas no so permitidas. No trecho de programa ao lado, 2 uma constante do tipo inteiro e Media : uma constante do tipo cadeia; seu analisador lxico deve reconhec-los como tais. 3.3. Comandos O comando mostre aceita variveis ou constantes como argumentos; obtenha aceita apenas variveis. Contudo, cada comando obtenha ou mostre aceita apenas um argumento. Assim, a impresso de texto e valores numricos misturados deve ser feita com vrios comandos mostre. Todo comando deve ser finalizado por ponto e vrgula, exceto os comandos se e para. Todos os comandos devem ser tratados como palavras reservadas. Sua sintaxe e semntica so irrelevantes para o analisador lxico; a descrio acima visa apenas ajud-lo a compreender os arquivos de teste. 3.4. Uso de maisculas, minsculas e acentuao
Nomes de identificadores

media := soma/2; mostre (Media :); mostre (media);

Letras maisculas ou minsculas so permitidas e distinguveis: media, Media, MeDiA e MEDIA devem ser tratados como identificadores diferentes. Rejeite acentos no reconhecimento de identificadores: media deve ser aceito como identificador, mas mdia deve causar erro lxico e a mensagem de erro deve apontar o como caractere invlido.
Palavras reservadas

Letras maisculas ou minsculas so permitidas e indistinguveis: para, Para, PaRa e PARA so todos formas vlidas do mesmo comando de repetio, devendo ser reconhecidos como a mesma palavra reservada. Rejeite os acentos no reconhecimento dos tokens: ate deve ser reconhecido como palavra reservada, mas at deve causar erro lxico e a mensagem de erro deve apontar o como caractere invlido.
Paulo Costa 2011 Especificao do 1 Trabalho (Verso 2) 5

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1
3.5. Operadores Aritmticos Lgicos Relacionais Atribuio 3.6. Comandos Unrios ( ) ( ) nao Binrios + e ou = <> <* > /

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

>=

<

<=

inicio comandos fim se expresso entao comandos fim_se se expresso entao comandos senao comandos fim_se para identificador de expresso a expresso comandos fim_para para identificador de expresso a expresso passo expresso comandos fim_para obtenha ( identificador ); mostre ( identificador ); mostre ( inteiro ); mostre ( decimal ); mostre ( cadeia ); identificador <- expresso; 3.7. Declarao de variveis inteiro : identificador ; inteiro : identificador , , identificador ; decimal : identificador ; decimal : identificador , , identificador ; 3.8. Expresses regulares Constante inteira: [+|-]? dgito + Constante decimal: [+|-]? [[dgito * . dgito +]|[dgito + . dgito *]] Identificador: letra [ letra | dgito| _ ] * dgito: [0-9] letra: maiscula ou minscula sem acentos, ou seja, [a-zA-Z] 3.9. Delimitadores e operadores Delimitadores devem ser identificados por tokens prprios, p.ex. tk_dois_pts e tk_pt_virg ao invs de apenas tkDelim para os dois pontos (:) e o ponto-e-vrgula (;). Idem para os operadores. 3.10. Comentrios Existem dois tipos de comentrios: de linha e de bloco. Comentrios de linha so iniciados pelos caracteres /* e terminam no final da linha, por exemplo:
numero: x, y, z; numero: maior, menor; /* /* Tres valores a serem ordenados O maior e o menor dos tres * *}

Comentrios de bloco so demarcados pelas sequncias {* e *}, por exemplo:


{* Este programa le tres numeros * e os coloca em ordem crescente numero: x, y, z, maior, menor; Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Comentrios devem ser ignorados pelo analisador lxico. Ao encontrar o incio de comentrio de bloco, o analisador deve consumir e descartar caracteres da entrada at encontrar o final do comentrio ou o final do arquivo, o que ocorrer primeiro. Um comentrio de bloco aberto e no fechado deve gerar erro lxico do tipo Comentrio no fechado; a seguir, a anlise deve ser retomada a partir da linha seguinte quela onde o comentrio foi aberto, efetivamente transformando o comentrio de bloco em comentrio de linha. 3.11. Erros lxicos Ao detectar um erro lxico o analisador deve fornecer, logo abaixo da linha de cdigo correspondente, uma descrio clara e completa da posio e da natureza do erro. Um exemplo fornecido na seo 4.1 (pg. 7). No modifique os arquivos de teste; use-os exatamente como esto, mesmo com caracteres ou comandos inexistentes na linguagem ou comentrios com sintaxe incorreta. No procure nos arquivos de teste nenhuma indicao sobre a ortografia ou a sintaxe correta de Portugol: os testes podem conter erros deliberadamente.

4. Impresso dos resultados para o relatrio


A seo 1.4.5 (pg. 1) lista trs sadas que devem ser geradas para cada arquivo de teste. A seguir, descries detalhadas dessas sadas, ilustradas com exemplos produzidos a partir do programa Portugol na Figura 1.
Figura 1 Exemplo de programa Portugol incorreto.

{* Ex-00-incorreto.ptg *} incio decimal: n, r; imprima ("Digite um nro:"); leia (n); r <- raiz (n); imprima ("Raiz(n) = "); imprima(r); fim

4.1. Arquivo de entrada e erros lxicos A primeira sada consiste do contedo original da entrada (arquivo de teste completo) com todas as linhas numeradas e os erros lxicos marcados apropriadamente, imediatamente aps as linhas que contm os erros. Essa marcao deve consistir de: uma localizao visual da posio do erro, as coordenadas da posio do erro (nmeros da linha e da coluna onde o erro se encontra), e uma descrio clara e precisa da natureza do erro. Aps sinalizar um erro lxico o analisador deve continuar a processar o arquivo de entrada at encontrar o prximo token. O analisador no deve retornar token de erro. Os comentrios de linha e de bloco podem ou no ser includos na sada; isso fica a seu critrio. Ao processar o programa na Figura 1, seu analisador lxico deve gerar a seguinte sada:
LISTA DE ERROS LXICOS EM "Ex-00-incorreto.ptg" [ [ [ [ [ [ [ [ 3] incio --^ Erro lxico na linha 3 coluna 2: Caracter invlido '' 4] decimal: n, r; 5] imprima ("Digite um nro:"); 6] leia (n); 7] r <- raiz (n); 8] imprima ("Raiz(n) = "); 9] imprima(r); 10] fim

TOTAL DE ERROS: 1 Paulo Costa 2011 Especificao do 1 Trabalho (Verso 2) 7

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1
4.2. Lista de tokens reconhecidos

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

A segunda sada consiste de uma lista de tokens reconhecidos em cada linha da entrada, com as linhas numeradas. Para cada token, imprima seu nome, seu cdigo numrico e, quando for o caso, a posio do respectivo lexema na tabela de smbolos. Aps a lista de tokens reconhecidos, seu analisador lxico deve gerar um resumo mostrando o nmero total de ocorrncias de cada token. Ao processar o programa na Figura 1, seu analisador lxico deve gerar a seguinte sada (ou algo parecido, dependendo da estratgia de correo de erros que voc empregar):
LISTA DE TOKENS RECONHECIDOS EM "Ex-00-incorreto.ptg" +-----+-----+-----+---------------+-------------------+--------------+ | LIN | COL | COD | TOKEN | LEXEMA | POS TAB SIMB | +-----+-----+-----+---------------+-------------------+--------------+ | 3 | 1 | 2 | tk_IDEN | in | 1 | | | 4 | 2 | tk_IDEN | cio | 2 | | 4 | 3 | 9 | tk_decimal | | | | | 10 | 26 | tk_dois_pts | | | | | 12 | 2 | tk_IDEN | n | 3 | | | 13 | 24 | tk_virg | | | | | 15 | 2 | tk_IDEN | r | 4 | | | 16 | 25 | tk_pt_virg | | | | 5 | 3 | 2 | tk_IDEN | imprima | 5 | | | 11 | 27 | tk_abre_par | | | | | 12 | 5 | tk_CADEIA | "Digite um nro:" | 6 | | | 28 | 28 | tk_fecha_par | | | | | 29 | 25 | tk_pt_virg | | | | 6 | 3 | 2 | tk_IDEN | leia | 7 | | | 8 | 27 | tk_abre_par | | | | | 9 | 2 | tk_IDEN | n | 3 | | | 10 | 28 | tk_fecha_par | | | | | 11 | 25 | tk_pt_virg | | | | 7 | 3 | 2 | tk_IDEN | r | 4 | | | 5 | 35 | tk_atrib | | | | | 8 | 2 | tk_IDEN | raiz | 8 | | | 13 | 27 | tk_abre_par | | | | | 14 | 2 | tk_IDEN | n | 3 | | | 15 | 28 | tk_fecha_par | | | | | 16 | 25 | tk_pt_virg | | | | 8 | 3 | 2 | tk_IDEN | imprima | 5 | | | 11 | 27 | tk_abre_par | | | | | 12 | 5 | tk_CADEIA | "Raiz(n) = " | 9 | | | 24 | 28 | tk_fecha_par | | | | | 25 | 25 | tk_pt_virg | | | | 9 | 3 | 2 | tk_IDEN | imprima | 5 | | | 10 | 27 | tk_abre_par | | | | | 11 | 2 | tk_IDEN | r | 4 | | | 12 | 28 | tk_fecha_par | | | | | 13 | 25 | tk_pt_virg | | | | 10 | 0 | 7 | tk_fim | | | | | 2 | 1 | tk_EOF | | | +-----+-----+-----+---------------+-------------------+--------------+ RESUMO +-----+----------------+------+ | COD | TOKEN | USOS | +-----+----------------+------+ | 1 | tk_EOF | 0 | | 2 | tk_IDEN | 13 | | 3 | tk_INTEIRO | 0 | | 4 | tk_DECIMAL | 0 | Paulo Costa 2011 Especificao do 1 Trabalho (Verso 2) 8

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1
| 5 | tk_CADEIA | 2 | | 6 | tk_programa | 0 | | 7 | tk_fim | 1 | | 8 | tk_int | 0 | | 9 | tk_decimal | 1 | | 10 | tk_obtenha | 0 | | 11 | tk_mostre | 0 | | 12 | tk_para | 0 | | 13 | tk_de | 0 | | 14 | tk_a | 0 | | 15 | tk_passo | 0 | | 16 | tk_fim_para | 0 | | 17 | tk_se | 0 | | 18 | tk_entao | 0 | | 19 | tk_senao | 0 | | 20 | tk_fim_se | 0 | | 21 | tk_e | 0 | | 22 | tk_ou | 0 | | 23 | tk_nao | 0 | | 24 | tk_virg | 1 | | 25 | tk_pt_virg | 6 | | 26 | tk_dois_pts | 1 | | 27 | tk_abre_par | 5 | | 28 | tk_fecha_par | 5 | | 29 | tk_menor | 0 | | 30 | tk_menor_igual | 0 | | 31 | tk_maior | 0 | | 32 | tk_maior_igual | 0 | | 33 | tk_diferente | 0 | | 34 | tk_igual | 0 | | 35 | tk_atrib | 1 | | 36 | tk_mais | 0 | | 37 | tk_menos | 0 | | 38 | tk_vezes | 0 | | 39 | tk_dividido | 0 | | 1 | tk_EOF | 1 | +-----+----------------+------+ | 0 | TOTAL | 37 | +-----+----------------+------+ TOTAL DE ERROS: 1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

4.3. Tabela de smbolos A terceira sada consiste do contedo da tabela de smbolos ao final do processamento do arquivo de entrada. Ao processar o programa na Figura 1, seu analisador lxico deve gerar a seguinte sada (ou algo parecido, dependendo da estratgia de correo de erros que voc empregar):
TABELA DE SMBOLOS - "Ex-00-incorreto.ptg" +-----+------------+------------------+-------------------------------+ | POS | TOKEN | LEXEMA | POS NA ENTRADA (linha,coluna) | +-----+------------+------------------+-------------------------------+ | 1 | tk_IDEN | in | ( 3, 1) | | 2 | tk_IDEN | cio | ( 3, 4) | | 3 | tk_IDEN | n | ( 4, 12) ( 6, 9) ( 7, 14) | | 4 | tk_IDEN | r | ( 4, 15) ( 7, 3) ( 9, 11) | | 5 | tk_IDEN | imprima | ( 5, 3) ( 8, 3) ( 9, 3) | | 6 | tk_CADEIA | "Digite um nro:" | ( 5, 12) | | 7 | tk_IDEN | leia | ( 6, 3) | | 8 | tk_IDEN | raiz | ( 7, 8) | | 9 | tk_CADEIA | "Raiz(n) = " | ( 8, 12) | +-----+------------+------------------+-------------------------------+

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1 5. Avaliao
5.1. Defesa

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Cada trabalho ser defendido oralmente pelos autores atravs de questionamentos individuais sobre: a qualidade do cdigo (legibilidade, uso de comentrios, nomes de identificadores, etc.); os algoritmos implementados e sua lgica; as estruturas de dados utilizadas e suas justificativas; os resultados dos testes; e as escolhas feitas para lidar com situaes inesperadas ou no descritas neste documento. Um dos objetivos da defesa demonstrar a autoria do trabalho. No necessrio que ambos os autores implementem juntos todo o cdigo; cada um pode implementar uma parte, mas ambos devem conhecer bem o conjunto. Um trabalho ser bem defendido se cada autor demonstrar claramente que conhece todo o cdigo e for capaz de justificar todas as decises de implementao adotadas. Um trabalho mal defendido sofrer um desconto subjetivo na nota aps a aplicao dos critrios objetivos de avaliao descritos a seguir. 5.2. Testes O analisador lxico ser testado com outros programas em Portugol alm dos trs arquivos de teste fornecidos. Os testes adicionais s sero divulgados junto com as notas do trabalho. 5.3. Discrepncias Cada trabalho deve ser acompanhado do cdigo fonte, executvel, resultados de testes e relatrio impresso. O cdigo fonte ser compilado pelo professor e usado no processamento dos trs arquivos de testes. Os resultados dos testes assim gerados sero comparados com os resultados dos testes entregues com o trabalho. Discrepncias resultaro em descontos na nota, conforme a Tabela 1 (pg. 12). Especificamente, sero verificadas discrepncias nas comparaes entre Cdigo fonte impresso e cdigo fonte entregue em formato eletrnico; Cdigo executvel recompilado e cdigo executvel entregue em formato eletrnico; Resultados dos testes impressos e resultados dos testes entregues em formato eletrnico; Resultados dos testes impressos e resultados dos testes gerados pelo cdigo recompilado.

Se o cdigo fonte em formato eletrnico der erro de compilao ou execuo, o trabalho no ser corrigido e a nota ser zero. No evento de qualquer outra discrepncia, o professor decidir o que ser corrigido e o que ser descartado. A fim de evitar esses problemas, certifique-se de usar a verso final do cdigo fonte para compilar o executvel e efetuar os testes. Certifique-se tambm que as verses do cdigo fonte, cdigo executvel e testes entregues nos dois formatos (impresso e eletrnico) so idnticas. Em hiptese alguma sero admitidas correes, substituies ou ajustes de qualquer natureza aps a entrega. 5.4. Critrios de avaliao O trabalho ser avaliado segundo 61 critrios divididos em 4 grupos e 18 sub-grupos: Grupo 1: Material entregue Sub-grupo 1: Cdigo fonte Sub-grupo 2: Cdigo executvel Sub-grupo 3: Diagrama do autmato Sub-grupo 4: Tabela de transies do autmato Sub-grupo 5: Listagem do arquivo de entrada Sub-grupo 6: Lista de tokens Sub-grupo 7: Tabela de smbolos

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

10

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1
Grupo 2: Qualidade do cdigo Sub-grupo 8: Identificadores Sub-grupo 9: Comentrios Sub-grupo 10: Clareza e correo dos algoritmos Sub-grupo 11: Diagramao e impresso Grupo 3: Implementao Sub-grupo 12: Tokens Sub-grupo 13: Palavras reservadas Sub-grupo 14: Transies entre estados Sub-grupo 15: Tabela de smbolos Sub-grupo 16: Comentrios Grupo 4: Erros Sub-grupo 17: Marcao clara Sub-grupo 18: Marcao correta 5.5. Pontuao

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Os critrios de avaliao esto detalhados na Tabela 1 (pg. 12). A coluna Peso contm os pesos relativos de cada um dos 61 critrios. A coluna Ocorrncia lista os erros e tudo o mais que ser penalizado, seguidos dos pontos deduzidos em cada critrio (coluna Desc). Aps os descontos, a pontuao obtida em cada sub-grupo e em cada grupo de critrios se limitar faixa de 0 a 10. Um erro ou omisso pode gerar diversos descontos. Considere, a ttulo de exemplo, a avaliao de trabalhos entregues em semestres anteriores. A Figura 2 (pg. 13) mostra os erros cometidos por trs duplas em seus trabalhos. A Figura 3 (pg. 14) mostra os descontos efetuados nas notas de todos os trabalhos da turma. A Figura 4 (pg. 14) mostra as notas obtidas.

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

11

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Tabela 1 Critrios de avaliao e descontos na nota.

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

12

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Figura 2 Exemplo de avaliao: Lista de erros.

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

13

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Figura 3 Exemplo de avaliao: Descontos nas notas.

Figura 4 Exemplo de avaliao: Notas.

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

14

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1 6. Formulrio de pr-avaliao

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

A ltima parte do relatrio o formulrio de pr-avaliao, a ser preenchido pelos prprios alunos. Esse formulrio visa: 1. Padronizar a correo dos trabalhos, garantindo no apenas a objetividade dos critrios de avaliao como tambm sua aplicao uniforme. 2. Simplificar a correo dos trabalhos atravs de referncias cruzadas conectando objetos de avaliao ao cdigo que os implementa. Note a terminologia empregada: Critrios de avaliao Esto listados na pgina anterior. Aplicados a um trabalho, resultam na nota. Objetos de avaliao Esto listados no formulrio de pr-avaliao. Consistem de caractersticas da implementao e funcionalidades do cdigo s quais sero aplicados os critrios de avaliao propriamente ditos. O formulrio de pr-avaliao deve ser impresso em branco e preenchido antes da defesa, a mo, de lpis (a fim de evitar rasuras desnecessrias) e com letra legvel. A seguir, instrues para o preenchimento das vrias sees do formulrio. 6.1. Resumo O formulrio inicia com a seo Resumo, onde devem ser fornecidas informaes gerais sobre o trabalho como sistema operacional, linguagem e compilador utilizados. As informaes solicitadas so autoexplicativas, mas atente aos seguintes detalhes: No campo Auto-avaliao indique a nota que voc imagina que receber quando o trabalho for avaliado de acordo com os critrios aqui descritos. Note que esforo ou boa vontade no so critrios de avaliao. A informao fornecida nesse campo no ser utilizada no cmputo da nota. No campo Pontos fortes descreva as maiores qualidades do seu trabalho, como aspectos particularmente bem implementados ou recursos adicionais alm dos especificados. Seja breve e especfico. Ex.: tabela de smbolos no suficientemente especfico; tabela de smbolos eficiente e compacta sim. No campo Pontos fracos descreva as maiores fraquezas do seu trabalho, como recursos ausentes ou aspectos cuja implementao ineficiente, incompleta ou incorreta. Siga a orientao acima. 6.2. Campos do formulrio O restante do formulrio consiste de: Rtulos Todos os objetos de avaliao foram rotulados com cdigos de trs caracteres (uma letra e dois dgitos) entre colchetes e em letras vermelhas, p.ex. [A01]. A letra indica a categoria onde o respectivo objeto de avaliao foi agrupado; no exemplo anterior, A indica a categoria Nome do arquivo de entrada (programa Portugol). O nmero de dois dgitos nico em cada categoria. Objetos de avaliao J foram explicados. Posies no cdigo fonte (sob a coluna Evidncia) Locais, no cdigo fonte, onde os respectivos objetos de avaliao esto implementados. Uma posio indicada pelo nmero da pgina no trabalho impresso e pelo nmero da linha de cdigo. Mltiplas pginas ou linhas podem ser indicadas com 23 28 ou 23, 25, 28. Comentrios Espao reservado para notas explicativas que os autores julgarem indispensveis correo do trabalho. Use apenas se realmente necessrio, com notas muito breves. A Figura 5 (pg. 16) mostra a estrutura do formulrio de avaliao com seus respectivos campos: rtulos (circulados em laranja) objetos de avaliao (em verde) posies no cdigo fonte (em rosa) comentrios (em azul)
Especificao do 1 Trabalho (Verso 2) 15

Paulo Costa 2011

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Figura 5 Estrutura do formulrio de avaliao.

6.3. Referncias cruzadas O restante do formulrio utiliza o sistema de referncias cruzadas j mencionado. Essa uma maneira simples de evidenciar, no cdigo fonte, at que ponto os critrios de avaliao foram atendidos. A idia consiste em conectar cada objeto de avaliao com o respectivo trecho de cdigo atravs de duas anotaes: No formulrio, ao lado de cada objeto de avaliao: o local, no cdigo fonte, onde est implementado. O local indicado por dois nmeros: da pgina no trabalho impresso e da linha de cdigo. Mltiplas pginas ou linhas podem ser indicadas por 2328 ou 23, 25, 28. Exemplo:
Figura 6 Exemplo de referncia cruzada no formulrio de avaliao.

No cdigo impresso, esquerda dos nmeros de linha: os rtulos dos objetos de avaliao que aquele trecho de cdigo implementa. Exemplo:
Figura 7 Exemplo de referncia cruzada no cdigo impresso.

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

16

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1
6.4. Seo A Nome do arquivo de entrada Indique se o nome do arquivo de entrada (programa em Portugol)

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

est fixo no cdigo, p.ex. FILE *arquivo = fopen (r, teste1.ptg), fornecido em tempo de execuo, via teclado, na prpria linha de comando que invocou o programa, fornecido em tempo de execuo, via mouse ou teclado, atravs de uma interface grfica, ou fornecido por algum outro meio; nesse caso, descreva o meio.

6.5. Seo B Tratamento de maisculas, minsculas e acentos Indique se: Letras maisculas e minsculas so distinguidas em palavras reservadas. Se forem, ento ate ser reconhecido como o token tkAte, mas Ate e ATE sero reconhecidos como identificadores. Se no forem, ento ate, Ate e ATE sero reconhecidos como o mesmo token tkAte. Letras maisculas e minsculas so distinguidas em nomes de identificadores. Se forem, ento media, Media e MEDIA sero reconhecidos como identificadores distintos, cada um com seu lexema prprio na tabela de smbolos. Se no forem, ento media, Media e MEDIA sero reconhecidos como o mesmo identificador, dando origem a um nico lexema na tabela de smbolos. Letras acentuadas so rejeitadas em palavras reservadas. Se forem, ate ser reconhecido como o token tkAte, mas at e AT causaro erros lxicos. Se no forem, ento ate, at e t sero reconhecidos como o mesmo token tkAte. Letras acentuadas so rejeitadas em nomes de identificadores. Se forem, media ser reconhecido como identificador, mas mdia e mdi causaro erros lxicos. Se no forem, ento media, mdia e mdi sero reconhecidos como identificadores distintos, cada um com seu lexema prprio na tabela de smbolos, ou media, mdia e mdi sero reconhecidos como o mesmo identificador, dando origem a um nico lexema na tabela de smbolos. 6.6. Seo C Detalhes de implementao Indique se: Comentrios de nica linha tratados corretamente. Comentrios de mltiplas linhas tratados corretamente. Retorna token para sinalizar um comentrio. Retorna token para sinalizar um erro lxico. Retorna token para sinalizar fim de arquivo (p.ex. tkEOF). 6.7. Seo D Estruturas de dados de tamanho arbitrrio Indique se h alguma estrutura de dados (p.ex. vetor, array, string, tabela) de tamanho arbitrrio. Por tamanho arbitrrio entende-se, por exemplo: Um string de tamanho fixo para armazenar linhas do arquivo de entrada. Um array de tamanho fixo para armazenar as ocorrncias de um identificador no arquivo de entrada. Uma tabela de smbolos com tamanho mximo fixo. Em todos esses casos, o tamanho fixo dado por uma constante, independente de seu valor ou do mecanismo de programao usado (constante numrica, macro, expresso aritmtica equivalente a um valor constante, etc). A arbitrariedade consiste em fixar, em tempo de compilao, o tamanho de uma estrutura de dados cuja
Paulo Costa 2011 Especificao do 1 Trabalho (Verso 2) 17

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

real necessidade de espao depende do contedo arquivo de entrada, portanto s pode ser conhecida em tempo de execuo. Assim, uma tabela de smbolos com capacidade para armazenar 500 milhes de identificadores tem tamanho arbitrrio, pois no se sabe, em tempo de compilao, quantos identificadores sero encontrados em determinado arquivo de entrada. Por outro lado, um array de tamanho fixo para armazenar palavras reservadas no tem tamanho arbitrrio, pois o conjunto de palavras reservadas da linguagem fixo e independe dos arquivos de entrada, de modo que o espao necessrio para seu armazenamento j conhecido em tempo de compilao. Repetindo: o que caracteriza uma estrutura de dados de tamanho arbitrrio no simplesmente o tamanho constante, mas o tamanho constante quando no se sabe, a priori, quanto espao ser realmente necessrio. A maneira correta de lidar com essa questo alocar a estrutura de dados dinamicamente, ainda que com um valor inicial arbitrrio, e, se necessrio, redimension-la durante a execuo do programa. 6.8. Sees E e F Tokens Indique: Como os tokens foram declarados. Marque apenas uma das opes abaixo: Atravs de uma enumerao (p.ex. enum em C). Atravs de #define em C. Como variveis do tipo inteiro (p.ex. int em C). Como constantes do tipo inteiro (p.ex. const int em C). Como cadeias de caracteres (p.ex. char[] em C). De alguma outra maneira; nesse caso, fornea uma descrio. O que o scanner fornece ao parser. Marque todas as opes que se aplicarem: O cdigo numrico do token (p.ex. 12). A cadeia do nome do token (p.ex. tkIden). A posio do lexema na tabela de smbolos (p.ex. 25). A cadeia do lexema (p.ex. media). Outras informaes; nesse caso, fornea uma descrio. Quando e como o scanner fornece tokens ao parser. Marque todas as opes que se aplicarem: Um token por chamada, atravs de um comando return. Um token por chamada, atravs de uma varivel global (p.ex. int ou array). Todos os tokens de uma vez, ao final da anlise lxica. Outro; fornea uma descrio.

6.9. Seo G Tabela de transies Indique (marque todas as opes que se aplicarem): Se as transies de estados so guiadas por comandos if ou switch. Exemplo: if (estado == 13) { ... estado = 5; } Se as transies de estados so guiadas por uma tabela de transies. Exemplo: switch (estado) { ... case 13: { ... } case 14: { ...} ... } prox_Simb = leia_Proximo_Caracter(); estado = tabela_Transicoes[estado][prox_Simb]; Se a tabela de transies foi implementada, descreva a estrutura de dados utilizada.
Paulo Costa 2011 Especificao do 1 Trabalho (Verso 2) 18

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Se a tabela realmente consultada para fazer as transies (como no exemplo acima), ou se foi implementada mas nunca usada. Se a tabela consultada uma nica vez no lao mais interno do analisador lxico. Se a tabela consultada vrias vezes, ou seja, se h vrios comandos de consulta no cdigo. Se a tabela foi impressa e includa no relatrio junto com o diagrama do autmato. Se a tabela congruente com o diagrama do autmato, ou seja, se o diagrama e a tabela contm exatamente as mesmas informaes. Se a tabela nica para todos os testes, ou se h uma tabela para cada teste realizado. 6.10. Sees H e I Tabela de smbolos Indique (marque todas as opes que se aplicarem): Sobre a tabela de smbolos: Se no foi implementada em nenhuma estrutura de dados. Se foi implementada em uma estrutura de dados compartilhada com outras informaes, p.ex. um nico array para a tabela de smbolos e para a lista de palavras reservadas. Se foi implementada em uma estrutura de dados prpria e exclusiva, ou seja, no contm nada alm de informaes relativas tabela de smbolos. Se foi implementada, qual a estrutura de dados usada (p.ex. lista encadeada, array, tabela hash). Se permite duplicao de lexemas, p.ex. o lexema de um identificador aparece em mais de uma posio da tabela de smbolos. Sobre as palavras reservadas: Se no so armazenadas de forma alguma na tabela de smbolos. Se os cdigos numricos dos tokens so armazenados na tabela de smbolos como inteiros. Se os nomes dos tokens so armazenados na tabela de smbolos como strings. Se os tokens so armazenados na tabela de smbolos de outra forma como? Se os lexemas so armazenados na tabela de smbolos como strings. Se os lexemas so armazenados na tabela de smbolos de outra forma como? Sobre os operadores: Se no so armazenadas de forma alguma na tabela de smbolos. Se os cdigos numricos dos tokens so armazenados na tabela de smbolos como inteiros. Se os nomes dos tokens so armazenados na tabela de smbolos como strings. Se os tokens so armazenados na tabela de smbolos de outra forma como? Se os lexemas so armazenados na tabela de smbolos como strings. Se os lexemas so armazenados na tabela de smbolos de outra forma como? Sobre os delimitadores: Se no so armazenadas de forma alguma na tabela de smbolos. Se os cdigos numricos dos tokens so armazenados na tabela de smbolos como inteiros. Se os nomes dos tokens so armazenados na tabela de smbolos como strings. Se os tokens so armazenados na tabela de smbolos de outra forma como? Se os lexemas so armazenados na tabela de smbolos como strings. Se os lexemas so armazenados na tabela de smbolos de outra forma como? Sobre os identificadores: Se no so armazenadas de forma alguma na tabela de smbolos. Se os cdigos numricos dos tokens so armazenados na tabela de smbolos como inteiros. Se os nomes dos tokens so armazenados na tabela de smbolos como strings. Se os tokens so armazenados na tabela de smbolos de outra forma como? Se os lexemas so armazenados na tabela de smbolos como strings. Se os lexemas so armazenados na tabela de smbolos de outra forma como?
Paulo Costa 2011 Especificao do 1 Trabalho (Verso 2) 19

Universidade Estadual de Santa Cruz


Disciplina: Compiladores 2011.1

Trabalho 1: Analisador Lxico


Especificao (Verso 2)

Sobre as constantes numricas: Se no so armazenadas de forma alguma na tabela de smbolos. Se os cdigos numricos dos tokens so armazenados na tabela de smbolos como inteiros. Se os nomes dos tokens so armazenados na tabela de smbolos como strings. Se os tokens so armazenados na tabela de smbolos de outra forma como? Se os lexemas so armazenados na tabela de smbolos como nmeros inteiros. Se os lexemas so armazenados na tabela de smbolos como strings. Se os lexemas so armazenados na tabela de smbolos de outra forma como? Sobre os literais: Se no so armazenadas de forma alguma na tabela de smbolos. Se os cdigos numricos dos tokens so armazenados na tabela de smbolos como inteiros. Se os nomes dos tokens so armazenados na tabela de smbolos como strings. Se os tokens so armazenados na tabela de smbolos de outra forma como? Se os lexemas so armazenados na tabela de smbolos como strings. Se os lexemas so armazenados na tabela de smbolos de outra forma como? Se as informaes armazenadas na tabela de smbolos so acompanhadas das posies (linha e coluna) onde ocorreram no arquivo de entrada. Descreva qualquer outra informao armazenada na tabela de smbolos.

Paulo Costa 2011

Especificao do 1 Trabalho (Verso 2)

20

Vous aimerez peut-être aussi