Title: Compiladores
1Compiladores
Análisis Léxico
Oscar Bonilla obonilla_at_galileo.edu Universidad
Galileo
2Flex
Generador de Analizadores Léxicos diseñado por
Vern Paxson
Formato del archivo de entrada
Definiciones Reglas Código de usuario
Definiciones literal
3Ejemplo
/ un scanner para un lenguaje similar a Pascal
/ include ltmath.hgt DIGIT 0-9 ID
a-za-z0-9
4Ejemplo
DIGIT printf( "An integer s
(d)\n", yytext, atoi(yytext) ) DIGI
T"."DIGIT printf("A float s
(g)\n", yytext, atof(yytext) ) ift
henbeginendprocedurefunction printf("A
keyword s\n", yytext ) ID printf
("An identifier s\n", yytext) """-""""/"
printf("An operator s\n", yytext) ""\n""
/ eliminar comentarios /
\t\n / eliminar blancos / . printf
("Invalid token s\n", yytext)
5Ejemplo
main(int argc, char argv) argv,
--argc if (argc gt 0) yyin fopen(argv0,
"r") else yyin stdin() yylex()
6Cómo lo corremos?
- Lo guardamos en un archivo (pascal.lex)
- flex pascal.lex
- cc -o pascal lex.yy.c
- ./pascal prueba.pas
- .....