Professional Documents
Culture Documents
Anlisis Lxico
Oscar Bonilla
obonilla@galileo.edu
Universidad Galileo
Anatoma de un compilador
Programa (character stream)
Analizador Lxico (Scanner)
Token stream
Analizador Sintctico (Parser)
Parse Tree
Analizador Semntico
Intermediate Representation
Optimizador de Cdigo
Optmized Intermediate Representation
Generador de Cdigo
Assembly code
Qu es un analizador lxico?
Source Program Text
Ejemplos de Tokens:
Tokens
Ejemplos de no-tokens
va r 1
10
va r 1<=
Num(10)
ID(var1) leq_op
10 Num(10)
var1 ID("var1")
va r 1
10
va r 1<=
Num(10)
ID(var1) leq_op
Otro Ejemplo:
floatmatch0(chars)/*findazero*/
{if(!strncmp(s,"0.0",3))
return0.;
}
FLOAT ID(match0) LPAREN CHAR STAR ID(s) RPAREN
LBRACE IF LPAREN BANG ID(strncmp) LPAREN ID(s)
COMMA STRING(0.0) COMMA NUM(3) RPAREN RPAREN
RETURN REAL(0.0) SEMI RBRACE EOF
Estructuras Lgicas II
Alfabeto: conjunto finito de smbolos.
A = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
Cuerda: secuencia finita de smbolos del
alfabeto.
s = 543
Cuerda Nula: cuerda especial de
longitud cero.
Estructuras Lgicas II
""
abc
abc
(a|)
Asumimos que la cerradura de Kleene
tiene precedencia sobre la concatenacin.
abc
(a|)
ab*
a (b*)
(a|)
a (b*)
ab*
ab | c
abc
(a b) | c
Ms abreviaturas
[abcd]
( a | b | c | d)
[b -g]
[b -gM -Qkr]
[bcdefgMNOPQkr]
M?
M+
M M*
[bcd
En resumen
a
M|N
MN
MN
M*
M+
M?
[a -zA -Z]
.
"a.+*"
un caracter ordinario.
El string vaco.
Otra forma de escribir el string vac
Alternacin, elegir M o N.
Concatenacin, M seguida de N
Otra forma de escribir concatenacin.
Repeticin (cero o ms veces).
Repeticin (una o ms veces)
Opcional, cero o una ocurrencia de
Alternacin de un conjunto de caracteres.
Un punto sustituye cualquier caract
excepto nueva lnea.
Strings entre comillas no son interp
Algunos ejemplos
( 0 | 1 )* 0
b*abb*a?
[ab]*aa[ab]*
(0|1|2|3|4|5|6|7|8|9)
dgito dgito*
-?posint
int (. posint)?
Analizadores Lxicos
Dos reglas ms
Match ms largo
El substring inicial ms largo de la entrada que puede
construirse con una expresin regular es tomado como
el siguiente token.
Prioridad de Reglas
Para un match ms largo en particular, la primer
expresin regular que genere el string determina el
tipo de token. El orden en que se escriben la
expresiones regulares es importante.
Ahora s:
if8
if 8
ID
IF NUM
Pregunta