Escolar Documentos
Profissional Documentos
Cultura Documentos
Fluxo de entrada
Compilador
Lex
lex.yy.c
a.out
Compilador
C
a.out
Sequncia 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
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
http://erinaldosn.wordpress.com