Redes

Solo disponible en BuenasTareas
  • Páginas : 8 (1970 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de diciembre de 2010
Leer documento completo
Vista previa del texto
Analizador Lexicográfico

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...
tracking img