Está en la página 1de 10

Captulo 3: Anlisis Lxico

Teora de Autmatas y Compiladores [ICI-445] Captulo 3: Anlisis Lxico


Dr. Ricardo Soto
[ricardo.soto@ucv.cl] [http://www.inf.ucv.cl/rsoto]

Escuela de Ingeniera Informtica Ponticia Universidad Catlica de Valparaso

Marzo, 2010

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

1/10

Captulo 3: Anlisis Lxico

1. Introduccin
El analisis lxico corresponde a la primera fase de un compilador. Es la encargada de recibir el programa fuente y reconocer los tokens.

Programa Fuente

Analizador Lxico Tokens Analizador Sintctico Analizador Semntico Generador Cdigo Intermedio Optimizador Cdigo Intermedio Generador Cdigo Objeto Programa Objeto

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

2/10

Captulo 3: Anlisis Lxico

2. Funciones del Analizador Lxico


Generar una lista ordenada de tokens a partir de los caracteres de entrada Interactuar con el analizador sintctico, envindole los tokens generados
Token Programa Fuente

Analizador Lxico
Nuevo Token?

Analizador Sintctico

Deteccin de errores lxicos Guardar informacin de los tokens, necesaria para el proceso de compilacin.
Nota El analizador lxico tambin se conoce como scanner, lexer o tokenizer.

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

3/10

Captulo 3: Anlisis Lxico

3. Herramientas para implementar analizadores lxicos

Autmatas nitos...
a..z, A..Z, , , 0..9 q1 a..z, A..Z q2 ( ) : q5 = q6 q3

Generadores de analizadores lxicos:


Lex, Flex (http://ex.sourceforge.net/) JFlex (http://jex.de/) Ragel (http://www.complang.org/ragel/) ANTLR (http://www.antlr.org/) ...

0..9

q0

q4

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

4/10

Captulo 3: Anlisis Lxico

4. Implementacin de analizadores lxicos en ANTLR


Denicin de Tokens Palabras reservadas
tokens { INT_TYPE REAL_TYPE BOOL_TYPE STRING_TYPE ... BEGIN_RW END_RW IF_RW ELSE_RW WHILE_RW ... TRUE_LITERAL FALSE_LITERAL ... }

= = = = = = = = =

"int" "real" "bool" "string" "begin" "end" "if" "else" "while"

; ; ; ; ; ; ; ; ; ; ;

= "true" = "false"

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

5/10

Captulo 3: Anlisis Lxico

4. Implementacin de analizadores lxicos en ANTLR


Denicin de Reglas Letras
LETTER : a..z | A..Z ;

Dgitos
DIGIT : 0..9;

Identicadores
IDENT options {testLiterals=true;} // Comprobar palabras reservadas : (LETTER|_) (LETTER|DIGIT|_)* ;

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

6/10

Captulo 3: Anlisis Lxico

4. Implementacin de analizadores lxicos en ANTLR


Denicin de Reglas Smbolos de puntuacin
SEMICOLON COMMA DOT COLON ... : : : : ; , . : ; ; ; ;

Parntesis
LEFT_PAREN RIGHT_PAREN LEFT_BRACE RIGHT_BRACE LEFT_BRACKET : : : : : ( ) { } [ ; ; ; ; ;

RIGHT_BRACKET //opcin para mensajes de error options { paraphrase="a right bracket (])"; } : ] ;

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

7/10

Captulo 3: Anlisis Lxico

4. Implementacin de analizadores lxicos en ANTLR

Denicin de Reglas Operadores Matemticos


PLUS SUB STAR SLASH ... : : : : + - * / ; ; ; ;

Operadores Relacionales
EQUAL NOT_EQUAL GR_EQUAL LE_EQUAL ... : : : : == != >= <= ; ; ; ;

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

8/10

Captulo 3: Anlisis Lxico

4. Implementacin de analizadores lxicos en ANTLR

Denicin de Reglas Nmeros


NUM_LITERAL : (( DIGIT )+ . ) => ( DIGIT )+ . ( DIGIT )+ { $setType (REAL_LITERAL); } | ( DIGIT )+ { $setType (INT_LITERAL); } ;

Blancos
WS : (( | \t | \f) | ( \n | \r ) { newline(); } ) { _ttype = Token.SKIP; } ;

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

9/10

Captulo 3: Anlisis Lxico

5. Ejercicios
Implemente el analizador lxico del lenguaje MiLe (Micro Lenguaje) Tokens
var begin end numeric string if else for in or and

Puntuacin, parntesis y operadores


. , ; { } [] () + - * / < > != == <= >= =

Nmeros e identicadores
number ::= (digit)+ ("." (digit)+)? ident ::= (letter|_) (letter|digit|_)*

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

10/10

También podría gustarte