Redes
Software de Sistemas Mónica Pinto Alarcón Curso 2005/2006
1
Introducción
Programa Fuente = Serie de Símbolos
Los símbolos representan las construcciones del lenguaje
Variables, etiquetas, palabras reservadas, constantes, operadores
El analizador léxico identifica los significados de estas construcciones Lee el programa fuente carácter a carácter Los comparacon patrones que representan unidades sintácticas primarias o tokens
2/38
1
Introducción
Un analizador léxico: Transforma el programa fuente a tiras de tokens Cada token pueden tener asociado uno o varios atributos
Ejemplo: Un atributo de un token puede ser un puntero a la tabla de símbolos o un puntero a la tabla de constantes.
3/38
Ejemplo 1
posición := principal + velocidad * 60IDENT ASIGNACION IDENT MAS IDENT POR ENTERO
Tabla de Símbolos
TOKEN IDENT IDENT IDENT ENTERO
ATRIBUTO
SIMBOLO posición principal velocidad
INFORMACIÓN
Ej. tipo de la variable
... ...
60
4/38
2
Funciones del Analizador Lexicográfico
Funciones Básicas
Leer carácter a carácter del programa fuente. Entregarle los tokens identificados al analizador sintáctico Producirparte del listado con los errores de compilación
Funciones Complementarias
Ignorar del programa fuente los comentarios, espacios en blanco y tabuladores. Reconocer las palabras reservadas del lenguaje. Reconocer las variables y asignarles una posición en la tabla de símbolos. Relacionar mensajes de error con el número de línea en el que aparecen.
5/38
Lexemas, expresiones regulares ytokens
perimetro := radio + 47
Token
IDENT ASIG MAS
Lexema
perimetro, radio, pi, hola := +
Expr. Regular
Expr. Reg. LEX
(a+...+z+_)(a+...+z+_+0+...+9)* [a-zA-Z_][a-zAZ0-9_]* := + (0+...+9)(0+...+9)* (F+f)(O+o)(R+r) := + [0-9]+ [Ff][Oo][Rr]
ENTERO 47, 1234567, 0 PR_FOR For, for, FOR
IDENT ASIG IDENT MAS ENTERO
6/38
3
Lexemas, expresiones regulares y tokens
Lexemas: Soncaracteres o conjuntos de caracteres (palabras) que pertenecen al léxico del lenguaje. Expresiones Regulares (Patrones): Definen las reglas que permiten identificar los componentes léxicos o tokens. Tokens: Son los componentes léxicos generados por el analizador lexicográfico Atributos: Son información adicional para cada componente léxico que serán utilizadas en el análisis semántico y/o en lafase de síntesis (ej. Lexema, Tipo, Valor, Línea). Depende del token
7/38
Ejemplo 2
Expresiones Regulares
a*(b | c)+
bccbcbccbc abbbccc abbcbcccbbc
L1 = {w : w=a*(b | c)+}
(0-9)*.(0-9)+
0.236425 3567.45627 .753473 5.0
L2 = {w: w=(0-9)*.(0-9)+} a* 0 o más “a” (b | c) “b” o “c” c+ 1 o más “c” 0-9 0 ó 1 2 ó …ó 9
8/38
4
Ejemplo 3
Expresión Regular
end loopif read start varwrite [0-9]+ [a-zA-Z](_?([a-zA-Z0-9]))* , ; ( ) [+-] [*/] “”|””|””|”=“ := [ \n] .
Token
end loopif read start var write entero id coma pyc pari pard opsum opmul oprel asig -
Atributos
valor Puntero tabla símbolos Constante identificando + o – Constante identificando * o / Constante identificando op. 9/38 -
Implementación del Analizador Lexicográfico
Estrategias de ImplementaciónImplementación automática
Especificación de los patrones de la gramática Uso de LEX
Implementación manual
Codificación con estructuras condicionales (if, case, …)
10/38
5
LEX
Uso básico:
Implementación de la fase de Análisis Lexicográfico de un compilador Uso combinado con el Analizador sintático YACC
Otros usos de Lex:
Transformaciones sencillas de ficheros fuente
Ej: Dado un textocompletamente en mayúsculas convertirlo en un texto en formato “frase”: mayúscula sólo la primera letra de una palabra tras un punto.
11/38
LEX
Acepta una especificación del lenguaje de programación mediante un conjunto de expresiones regulares A cada expresión regular se le puede asociar código C que se ejecutará cuando se el correspondiente lexema en el programa de entrada Genera un...
Regístrate para leer el documento completo.