Escolar Documentos
Profissional Documentos
Cultura Documentos
LEX FLEX JLEX AT&T GNU Bison MKS Lex Abraxas Lex Posix Lex
etc.
3.
Determinar los tokens Definir un patrn para cada uno Escribir los patrones en el formato de la herramienta
Generador de analizador lxico (herramienta)
Lexico.I
Lexico.java
especificaciones
Tabla de transiciones
LEX
Lex.yy.c
Lex.yy.c
Compilador de C
a.out
a.out
Especificaciones en LEX
Un programa en fuente para el LEX consta de tres partes: Seccin de definiciones (declaraciones) %% Seccin de reglas (regla de produccin) %% Seccin de subrutinas usadas (procedimientos auxiliares)
ejemplo
%{
%}
%% if return IF; else return ELSE; {num} return NUM; {ident} return IDENT; \( return PARAB; \) return PARCE;
%% main() { int ret; while((ret=yylex())!=0) { switch(ret) { case IF: ... break; case ELSE: break; } } }
Ejemplo
%{ /* * * * */ %}
ejemplo que reconoce si una palabra es verbo o no, para el idioma ingles. Solo algunos verbos
%% [\t ]+
/* ignora blancos*/
is | am | are | were | was | be | being | been | do | does | did | will | would | should | can | could | has | have | had | go {printf(%s: es un verbo\n, yytext)} [a-zA-Z]+ {printf(%s: no es un verbo\n,
yytext)}
.|\n
{ECHO;}
%% main() { yylex() }