Professional Documents
Culture Documents
a.out
Fluxo de entrada
a.out
Sequncia de tokens
Um arquivo de entrada, Lex.1, escrito na linguagem Lex e descreve o analisador lxico a ser gerado. O compilador Lex transforma Lex.1 em um programa C, e o armazena em um arquivo que sempre se chama Lex.yy.c. Esse ltimo arquivo compilado pelo compilador C em um arquivo sempre chamado a.out. A sada do compilador C o analisador lxico gerado, que pode receber como entrada um fluxo de caracteres e produzir como sada um fluxo de tokens.
Padro Significado [a-d] qualquer caractere entra a, b, c e d [^ab] qualquer caractere, exceto a ou b . qualquer caractere, exceto mudana de linha {xxx} a expresso regular representada pelo nome xxx H muitas outras convenes de metacaractes Lex.
http://erinaldosn.wordpress.com
Compiladores 3
Exemplo: programa Lex adicionar nmeros de linhas a linhas de um texto, e imprimir o novo texto para a sada padro.
Insero de cdigo em C
Qualquer texto entre %{ e %} na seo de definio ser copiado diretamente no programa de sada externamente a todos os procedimentos. Qualquer texto na seo de procedimentos auxiliares ser copiado diretamente no programa de sada no final do cdigo Lex. Qualquer cdigo seguinte a uma expresso regular (separado dela por pelo menos um espao) na seo de aes (aps o primeiro %%) ser inserido no ponto apropriado no procedimento de reconhecimento yylex e executado quando ocorrer um casamento com a expresso regular correspondente. O cdigo em C que representa uma ao pode ser uma declarao nica em C ou uma declarao composta por declaraes apresentadas entre chaves.
Exerccios
1. Escreva os seguintes programas, utilizando Lex ou outra linguagem: a) Modifique os nmeros de notao decimal para hexadecimal, com uma estatstica impressa. b) Selecione somente linhas que terminam ou iniciam com a letra a, apagando todo o resto. c) Converte caixa alta em caixa baixa, exceto dentro de comentrios. d) Copie um programa C, substituindo cada instncia da palavra-chave float por double. e) Considere que um arquivo uma sequncia de palavras separadas por espao em branco. Toda vez que encontrar uma palavra: i. Iniciando em consoante, mova-a para o fim da palavra e inclua ay. ii. Iniciando em vogal, insira ay ao fim da palavra.
Bibliografia
Compiladores: princpios, tcnicas e ferramentas Aho, Alfred. Lam, Monica. Sethi, Ravi. Ullman, Jeffrey D. So Paulo: Pearson Addison-Wesley, 2008. Compiladores: princpios e prticas Louden, Kenneth C. So Paulo: Pioneira Thomson Learning, 2004
http://erinaldosn.wordpress.com
Implementao de linguagens de programao: Compiladores Price, Ana. Toscani, Simo Porto Alegre: Bookman: Instituto de Informtica da UFRGS, 2008.
http://erinaldosn.wordpress.com