Documente Academic
Documente Profesional
Documente Cultură
De Coatzacoalcos
2016
Competencia a desarrollar.
Construir un analizador lxico a partir de un
lenguaje de programacin o un analizador lxico
(p. e. Flex, Lex, JavaCC).
Subtemas.
5.1
5.2
5.3
5.4
5.5
5.6
Introduccin al analizador
Lxico
Analizador
lexicogrfico
Analizador
Sintctico
Analizador
semntico
Optimizacin
Preparacin
Para la
Generacin
de cdigo
Tokens
Manejo de tablas
Tabla de smbolo.
Tabla de literales.
Tabla de ciclos
iterativos
Tabla de representacin intermedia
Manejo
de errores
E/S
Generacin
del cdigo
Tokens
Los tokens ( componentes lxicas ) son las unidades lxicas
bsicas del mismo modo en que las palabras y los signos de puntuacin
son las unidades bsicas de una oracin en ingles. Los tokens varan de
lenguaje en lenguaje, e incluso de compilador en compilador para el
mismo lenguaje. Algunos ejemplos de tokens son:
La palabra clave.
La constantes.
El identificador.
El operador.
Puntuacin.
Lexemas
Componentes lxico
Patrn
const
const
Const
Relacion
pi
Identificador
3.1416
numero
hola mundo
literal
Diagrama de transicin.
Los diagramas de transicin describen las acciones
necesarias para reconocer un token. Formalmente, un diagrama
de transicin es una grfica dirigida con arcos etiquetados. Y
estos se construyen mediante los siguientes smbolos:
Smbolo
Descripcin
Un circulo simple representa
a los nodos y estos a su vez
se denominan estados .
Un flecha representa a los
arcos que van etiquetados
con caracteres de entrada
que indican Caracteres
entrada
que
pueden
presentarse antes y despus
de cada estado.
Un circulo doble representa
un estado final o de
aceptacin.
1
No
es
letra
4
3
No es
letra o
dgito
Autmatas finitos.
Los diagramas de transicin son una instrumentacin de
un modelo formal denominado autmatas finitos, conocidos
tambin como maquinas de estado finito o ( con menos frecuencia
en la actualidad) mquinas secuenciales.
Los autmatas finitos vienen diferentes tipos:
No determinsticos (NFA, por su siglas en ingles).
Determinsticos (DFA, por la misma razn ).
Determinsticos mnimos.
Letra
dgito
3
Letra
dgito
$
Letra
dgito
Ejemplo: Este automta finito permite definir datos numricos como son:
enteros, reales y cientficos.( parte de un analizador lxico).
Dgito
q0
|+|-
q1
Dgito
q2
Dgito
Dgito
q3
Dgito
E|e
q4
E|e
q5
|+|-
q6
Dgito
q7
5.3.-Creacion de Tablas de
tokens
Tablas de Smbolos.
Es una estructura de datos que contiene un registro por
cada identificador, con los campos para los atributos del
identificador. La estructura de datos permite encontrar
rpidamente el registro de cada identificador y almacenar o
consultar rpidamente datos de ese registro.
Se examina la tabla de smbolos cada vez que se
encuentra un nombre en el texto fuente. Si se descubre un
nombre nuevo o nueva informacin sobre un nombre ya
existente, se producen cambios en la tabla.
Muchos compiladores establecen una tabla en el
momento del anlisis lexicogrfico y la llena con la informacin
del ltimo smbolo durante el anlisis semntico, cuando se
conoce ms informacin acerca del smbolo.
Atributos de smbolos.
Los atributos son independientes del lenguaje, pero
podra incluir los caracteres en el nombre, su tipo, e inclusive
informacin de asignacin de almacenamiento tal como cuntos
bytes ocupara el valor. Con frecuencia, el nmero de lnea
donde se declara el nombre que se registra, as como las lneas
donde se hace referencia al smbolo. Si el lenguaje contiene
mbitos, como la mayora los tiene, entonces el mbito se
introduce con frecuencia en la tabla de smbolos.
Atributo de mbito.
Los lenguajes estructurados en bloques permiten de
declaraciones; es decir, un nombre puede redefinirse para ser de
una clase diferente. Un problema semejante ocurre cuando
procedimientos o paquetes son anidados redefinen un nombre. El
mbito del nombre se limita al bloque o procedimiento en el que
se defina. El mbito, representado quizs el nmero, es entonces
un atributo para el nombre. Una tcnica alternativa es tener una
tabla de smbolos por separada para cada mbito.
Atributos especiales.
Los lenguaje de propsito especficos a menudo tienen
nombres especiales. Los lenguajes orientados a objetos, por
ejemplo, pueden tener nombres de mtodos, nombres de clase y
objeto, as como los tipos usuales. El mbito es de particular
importancia en los lenguajes orientados a objetos, porque los
nombre a menudo heredan operaciones desde la superclases
que las contienen.
Otros atributos.
Otros atributos para nombres incluyen los caracteres
reales en el identificador del nombre, el nmero de lnea en el
programa fuente donde este nombre se declara y los nmeros
de lnea donde ocurren las referencias.
1
Ejemplo de un programa
que ser empleado para
construir su tabla de
smbolo.
PROGRAMA Principal
Global a,b
PROCEDIMIENTO P (PARAMETRO x )
LOCAL a
COMIENZA { P }
..a
..b
..x..
TERMINA { P }
10
11
12
COMIENZA { PRINCIPAL }
Llama P (a)
TERMINA { PRINCIPAL }
Clase
mbito
Declaracin
Referencia
Programa
Lnea 1
Variable
Lnea 2
Lnea 11
Variable
Lnea 2
Lnea 7
Procedimiento
Lnea 3
Lnea 11
Parmetro
Lnea 3
Lnea 8
Variable
Lnea 4
Lnea 6
otros
1 parmetro, x
5.4.-Errores lxico
Manejo de errores.
Los programadores a menudo escriben programas
incorrectos, y un buen compilador deber ayudar al programador a
identificar y localizar errores. Es ms, considerar desde el principio
el manejo de errores puede simplificar la estructura de un
compilador y mejorar su respuesta a los errores.
La mitad del espacio ocupado por el cdigo de muchos
compiladores se dedica al manejo de errores. La deteccin, informe
y recuperacin de errores son mucho ms notorios para el usuario
promedio que la rapidez de un compilador o la rapidez del cdigo
emitido. Existen realmente cuatro facetas del manejo de errores :
Creacin de errores.
Deteccin de errores.
Informe de errores.
Recuperacin de errores.
Creacin de errores.
EL diseo de un lenguaje afecta la clase de errores que pueden
ocurrir, y es la manera ms fcil de cometer los errores.
Cuando un programador no complet entre comillas la cadena
definida y se dirigi a una nueva lnea. De nueva cuenta esto es un
error muy fcil de cometer. Por ejemplo:
String cad= Si no cierra las comillas, entonces todo el resto del
programa ser parte de la cadena de caracteres;
float y=0.0F ;
Informe de errores.
Con el fin de ser til, un mensaje de error debera
informar al usuario dnde se encuentra el error y, tanto como sea
posible, qu error es. Ms formalmente los mensajes de error
deberan informar la fuente del error y parametrizar el mensaje.
Por ejemplo:
En lnea 2, la palabra reservada inicial est mal escrita.
Fuente
Parmetros
como
un
operador
aplicado
un
operador
5.5.-Generadores de analizadores
lxicos