Temario Lenguajes Automata
Temario Lenguajes Automata
Temario Lenguajes Automata
Apuntes
Profesor:
Equipo: 1
Alumnos:
1.
2.
3.
4.
5.
6.
NDICE
Introduccin............................................................................................................. 4
1.1
Alfabeto.......................................................................................................... 5
1.2
Cadena........................................................................................................... 6
Bibliografa............................................................................................................. 38
5.1 Funciones del analizador lxico........................................................................40
5.2 Componentes lxicos, patrones y lexemas......................................................43
5.3 Creacin de Tabla de tokens............................................................................ 44
5.4 Errores lxicos.................................................................................................. 45
5.5 Generadores de analizadores Lxicos..............................................................46
Bibliografa............................................................................................................. 47
6.1
GLC............................................................................................................... 49
Introduccin
Pgina 3 de 60
Pgina 4 de 60
UNIDAD 1:
INTRODUCCIN A LA TEORA DE LENGUAJES FORMALES.
1.1 Alfabeto
ALFABETO Se llama alfabeto a un conjunto finito, no vaco, cuyos elementos se
denominan letras o smbolos. Se denomina palabra a toda secuencia finita de
letras formada con los smbolos de un alfabeto. Se definen los alfabetos por la
enumeracin de los smbolos que contiene.
Pgina 5 de 60
Smbolos:
Es una entidad abstracta que no se puede definir, ya que se dejara como una
axioma. Igual que se define un punto en la geometra.
La cual normalmente los smbolos son letras (a, b, c,. z), dgitos (0,1,9,
caracteres (+, -, *, /,>,< ..). los smbolos pueden estar formados por varias letras o
caracteres.
Alfabeto:
El alfabeto o abecedario es un conjunto de letras, con un determinado orden.
Podramos precisamente decir que el alfabeto es un conjunto de letras (caracteres o
grafemas) de un sistema de escritura, cada una representa aproximadamente un
fonema (consonante o vocal).
1.2 Cadena
Una cadena o palabra es una secuencia finita de smbolos yuxtapuestos. Por ejemplo
a, b, c son smbolos y casa es una cadena.
LONGITUD DE CADENA
La longitud de una cadena w, es el nmero de smbolos que componen una cadena.
Por ejemplo: CASA tiene una longitud 4.
Habitualmente, se emplean las letras minsculas del principio del alfabeto (o dgitos)
para designar a los smbolos y las letras minsculas del final del alfabeto,
normalmente w, x, y y z, para designar cadenas.
CADENA VACIA
La cadena vaca, denotada por E es aquella que presenta cero apariciones de
smbolos, es una cadena que puede construirse en cualquier alfabeto.
CONCATENACIN DE CADENAS
La concatenacin de dos cadenas, es la cadena que se forma al escribir la primera
seguida de la segunda, sin que haya espacio entre ellas.
Por ejemplo la concatenacin de padre y madre es: padremadre.
En la concatenacin de dos cadenas u y v, es pegar las dos cadenas para formar
una nueva.
Ejemplo: sea u= ab, v= ca, w= bb.
Pgina 6 de 60
Entonces:
Uv= abca.
Vw= cabb.
(uv)w= abcabb.
U(vw)= abcabb.
El resultado de la concatenacin de u, v, y w es independiente del orden en que las
operaciones son ejecutadas. Matemticamente esta propiedad es conocida como
asociatividad.
1.3. Lenguajes Formales
Por ejemplo, un alfabeto podra ser el conjunto {a,b}, y una gramtica podra definir a
las frmulas bien formadas como aquellas que tienen el mismo nmero de smbolos a
Pgina 7 de 60
que b. Entonces, algunas frmulas bien formadas del lenguaje seran: ab, ba, abab,
ababba, etc.; y el lenguaje formal sera el conjunto de todas esas frmulas bien
formadas.
Para algunos lenguajes formales existe una semntica formal que puede interpretar y
dar significado a las frmulas bien formadas del lenguaje. Sin embargo, una
semntica formal no es condicin necesaria para definir un lenguaje formal, y eso es
una diferencia esencial con los lenguajes naturales.
En algunos lenguajes formales, la palabra vaca (esto es, la cadena de smbolos de
longitud cero) est permitida, notndose frecuentemente mediante, o.
Ejemplos de lenguajes formales
Un conjunto de todas las palabras sobre {a,b}.
El conjunto {an : n} es un nmero primo.
El conjunto de todos los programas
determinado lenguaje de programacin.
sintcticamente
vlidos
en
un
Sintaxis
Semntica
Operaciones
Pgina 8 de 60
Se pueden utilizar varias operaciones para producir nuevos lenguajes a partir de otros
dados. Supngase que L1 y L2 son lenguajes sobre un alfabeto comn. Entonces:
La concatenacin L1L2 consiste de todas aquellas palabras de la forma vw donde v
es una palabra de L1 y w es una palabra de L2
La interseccin L1&L2 consiste en todas aquellas palabras que estn contenidas
tanto en L1 como en L2
La unin L1L2 consiste en todas aquellas palabras que estn contenidas ya sea en
L1 o en L2
El complemento ~L1 consiste en todas aquellas palabras producibles sobre el
alfabeto de L1 que no estn ya contenidas en L1
El cociente L1/L2 consiste de todas aquellas palabras v para las cuales existe una
palabra w en L2 tales que vw se encuentra en L1
La estrella L1* consiste de todas aquellas palabras que pueden ser escritas de la
forma W1W2...Wn donde todo Wi se encuentra en L1 y n 0. (Ntese que esta
definicin incluye a en cualquier L*)
La intercalacin L1*L2 consiste de todas aquellas palabras que pueden ser escritas
de la forma v1w1v2w2...vnwn; son palabras tales que la concatenacin v1...vn est
en L1, y la concatenacin w1...wn est en L2
Una pregunta que se hace tpicamente sobre un determinado lenguaje formal L es
cun difcil es decidir si incluye o no una determinada palabra v. Este tema es del
dominio de la teora de la computabilidad y la teora de la complejidad computacional.
Por contraposicin al lenguaje propio de los seres vivos y en especial el lenguaje
humano, considerados lenguajes naturales, se denomina lenguaje formal a los
lenguajes artificiales propios de las matemticas o la informtica, los lenguajes
artificiales son llamados lenguajes formales (incluyendo lenguajes de programacin).
Sin embargo, el lenguaje humano tiene una caracterstica que no se encuentra en los
lenguajes de programacin: la diversidad.
Lenguajes
Se considera el conjunto S* que consta de todas las cadenas finitas de elementos del
conjunto S. Existen muchas interpretaciones posibles de los elementos de S*, segn
la naturaleza de S. Si se piensa en S como un conjunto de palabras, entonces S* se
puede considerar como la coleccin de todas las oraciones posibles formadas con
palabras de S. Por supuesto, tales oraciones no necesariamente tienen sentido ni
Pgina 9 de 60
Pgina 10 de 60
un
Editores de estructuras
Un editor de estructuras toma como entrada una secuencia de rdenes para construir
un programa fuente. El editor de estructuras no solo realiza las fuentes de creacin y
modificacin de textos de un editor de textos ordinarios, sino que tambin analiza el
texto del programa, imponiendo al programa fuente
Ejemplos:
Editores de C, Pascal, Visual Studio (Fox Pro, Basic, etc.).
Gandalf es un conjunto de varios subproyectos. Su objetivo principal fue crear un
entorno completo de desarrollo de software, y no slo un entorno de programacin.
Doxygen: Genera documentacin de cdigo C/C++ en forma de pginas web,
incluyendo diversos ndices, el cdigo fuente coloreado e indexado, e incluso
diagramas de dependencia entre mdulos.
Javadoc: Para lenguaje Java. Usa un formato prefijado de comentario para las
descripciones, incluyendo marcas HTML embebidas y palabras clave introducidas con
el smbolo @. Se generan documentos en forma de pginas web.
Impresoras estticas
Una impresora esttica analiza un programa y lo imprime de forma que la estructura
del programa resulte claramente visible.
Por ejemplo los comentarios pueden aparecer con un tipo de letra especial, y las
proposiciones pueden aparecer con una indentacin proporcional a la profundidad de
su anidamiento en la organizacin jerrquica de las proposiciones.
EJEMPLOS: Word, Excel,
Power Point, Photoshop, etc.
Pgina 13 de 60
Pgina 14 de 60
*Esquema de un traductor
Tipos de traductores.
Compiladores
Es aquel traductor que tiene como entrada una sentencia en lenguaje formal y como
salida tiene un fichero ejecutable, es decir, realiza una traduccin de un cdigo de alto
nivel a cdigo mquina (tambin se entiende por compilador aquel programa que
proporciona un fichero objeto en lugar del ejecutable final).
Intrpretes
Es como un compilador, solo que la salida es una ejecucin. El programa de entrada
se reconoce y ejecuta a la vez. No se produce un resultado fsico (cdigo mquina)
sino lgico (una ejecucin). Su principal ventaja es que permiten una fcil depuracin.
Entre los inconvenientes podemos citar, en primer lugar, la lentitud de ejecucin, ya
que al ejecutar a la vez que se traduce no puede aplicarse un alto grado de
optimizacin.
1.7 Fases de un Compilador
Anlisis Lxico: Esta fase se encarga de verificar si todas las cadenas pertenecen o
no al lenguaje. Es decir realiza un anlisis smbolo por smbolo indicando el token por
cada uno de los elementos reconocidos o el error en caso de no reconocer. Este
anlisis no logra detectar muchos errores por su caracterstica.
Anlisis Sintctico: En esta fase se analiza la estructura de las expresiones en base a
Pgina 15 de 60
gramticas. Aqu ya se puede determinar si una estructura por ejemplo una expresin
matemtica mal formada. El anlisis que se realiza es jerrquico es decir en base a
rboles de derivacin que se obtienen de las mismas gramticas.
Anlisis Semntico: Este anlisis es ms difcil de formalizar, determina el tipo de los
resultados intermedios, comprobar que los argumentos que tienen un operador
pertenecen al conjunto de operadores posible, y si son compatibles entre s.
Generacin de Cdigo Intermedio: El cdigo intermedio es una representacin en
base a elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase de
optimizacin de cdigo.
Optimizacin de Cdigo: Consiste en realizar una mejora en el cdigo intermedio,
para reducir el nmero de lneas y hacer que la ejecucin sea ms rpida
Generacin de Cdigo: Llegamos a la generacin de cdigo ensamblador o cdigo
mquina del procesador que nos interese
Bibliografa
Pgina 16 de 60
ER primitivas: , , {a | a }
Si y son ER, entonces son tambin ER: + (unin), (concatenacin), *
(cierre), ().
No existen otras reglas para la construccin de ER sobre .
Ejemplos de usos.
-Comandos de bsqueda, e.g., grep de UNIX.
-Sistema de formato de texto: Usan notacin de tipo expresin regular para describir
patrones.
-Convierte la expresin regular a un DFA o un NFA y simula el autmata en el archivo
de bsqueda.
-Generadores de analizadores - Lxicos. Como Lex o Flex.
-Los analizadores lxicos son parte de un compilador. Dividen el programa fuente en
unidades lgicas (tokens) divide el programa fuente en unidades.
-Produce un DFA que reconoce el token.
Las expresiones regulares denotan lenguajes.
Por ejemplo, la expresin regular: 01* + 10* denota todas las cadenas que son o un 0
seguido de cualquier cantidad 1's o un 1 seguida de cualquier cantidad de 0's.
Operaciones de los lenguajes:
-Unin: Si L y M son dos lenguajes, su unin se denota por L U M.
-Concatenacin: La concatenacin es: LM o L.M.
-Cerradura (o cerradura de Kleene): Si L es un lenguaje su cerradura se denota por L
*.
Si E es una expresin regular, entonces L(E) denota el lenguaje que define E. Las
expresiones se construyen de la manera siguiente:
Las contantes y son expresiones regulares que representan a los lenguajes L (Q) =
{Q} y L () L = respectivamente.
-Si a es un smbolo, entonces es una expresin regular que representan al lenguaje: L
(a) = {a}.
2.2. Operaciones
Unin o Alternativa: Consideremos dos lenguajes diferentes definidos sobre el mismo
alfabeto L1 W() y L2 W(). Se denomina unin de ambos lenguajes al lenguaje
formado por las palabras de ambos lenguajes:
L1 U L2={ x | x L1 x L2}
Pgina 18 de 60
L+=ULi
i=1
Lenguaje obtenido uniendo el lenguaje con todas sus potencias posibles excepto L.
Si L no contiene la palabra vaca, la clausura positiva tampoco
Cierre o Clausura de un lenguaje: Se define el cierre o clausura de un lenguaje L
como:
L* = U Li
i=0
Lenguaje obtenido uniendo el lenguaje con todas sus potencias posibles, incluso L.
Todas las clausuras contienen la palabra vaca.
Existen tres operaciones bsicas que se pueden realizar sobre las ER:
-Seleccin de alternativas: Se indica con el operador |(barra vertical). Si r y s son
ER, entonces r | s es una ER que define a cualquier cadena que concuerde con una r
o una s, tambin se dice que r | s , es la unin de los lenguajes de r y s y lo podemos
definir: L( r | s ) = L( r ) U L( s ). Esta operacin se puede extender a ms de dos ER.
-Concatenacin: Se indica con la yuxtaposicin de las ER. Si r y s son ER, entonces
rs es una ER que define a cualquier cadena que concuerde con la concatenacin de r
Pgina 19 de 60
Bibliografa
http://10380054.galeon.com/u2.htm. (s.f.).
Pgina 20 de 60
es un alfabeto finito;
Pgina 21 de 60
es el estado inicial;
es una funcin de transicin;
es un conjunto de estados finales o de aceptacin.
Este autmata finito est definido sobre el alfabeto ={0,1}, posee dos estados s1 y s2,
y sus transiciones son (s1,0)=s2, (s1,1)=s1, (s2,0)=s1 y (s2,1)=s2. Su estado inicial
ess1, que es tambin su nico estado final.
Los autmatas finitos se pueden representar mediante grafos particulares, tambin
llamados diagramas de estados finitos, de la siguiente manera:
salida
smbolo llegada
q
(q,) Q
Q
s1
s2
s1
s1
s2
s1
s2
s2
0 1
*s1 s2 s1
s2
s1 s2
3.2 Clasificacin de AF
Un autmata finito determinista (abreviado AFD) es un autmata finito que adems es
un sistema determinista; es decir, para cada estado en que se encuentre el autmata,
y con cualquier smbolo del alfabeto ledo, existe siempre a lo ms una transicin
posible desde ese estado y con ese smbolo.
Un autmata finito (AF) o mquina de estado finito es un modelo computacional que
realiza cmputos en forma automtica sobre una entrada para producir una salida.
Este modelo est conformado por un alfabeto, un conjunto de estados finitos, una
funcin de transicin, un estado inicial y un conjunto de estados finales. Su
funcionamiento se basa en una funcin de transicin, que recibe a partir de un estado
inicial una cadena de caracteres pertenecientes al alfabeto (la entrada), y que va
Pgina 23 de 60
1,2,3
S1
1
1,2,3
start
1,2,3
2
S0
S2
Sf
1,2,3
3
S3
Pgina 24 de 60
Este autmata reconoce el lenguaje de las cadenas sobre {1, 2, 3} que terminan en
un smbolo que haya aparecido previamente.
4
start
8
6
Mientras que este reconoce el lenguaje definido por la expresin regular a*. ( a | b).
En ambos casos podemos ver que existen estados para los cuales hay ms de una
transicin ante un mismo smbolo de entrada:
S0
S1
(0,) = {1,3}
Desde el punto de vista de programacin, esta situacin es importante que no
suceda, debido a que se dificulta la representacin del AF y disminuye sensiblemente
la eficiencia del reconocedor. Por tal motivo es conveniente poder transformar un
AFND en un AFD equivalente, o sea, que reconozca el mismo lenguaje. Por otra
parte, los AF que se obtienen a partir de expresiones regulares son no deterministas
con -transiciones.
Pgina 26 de 60
Con un diagrama:
Cada estado no final se representa con un crculo; cada estado final se representa
con un doble crculo; se seala el estado inicial con una flecha entrando, sin etiqueta;
por cada transicin (q,a)=t se dibuja una flecha dirigida del estado departida q al de
llegada t etiquetada.
Ejemplos:
La mquina M1 del ejemplo se representa con una tabla
ab
p q r
qpq
*r r r
Determinsticos
Para cada estado y para cada smbolo se determina uncamente un solo estado:
a, c
b
e
e
0
a, c
1
Pgina 27 de 60
Dada una cadena w existe slo una forma recorrer el diagrama de transicin de
estados del AF
No Determinsticos
Para algunos estados, dado un smbolo a, existe un conjunto de estados siguientes
para elegir
a, b, c
b
e0
e1
: E x A P(E)
a,
b
a,
b
Pgina 30 de 60
Bibliografa
http://www.itescam.edu.mx/portal/asignatura.php?clave_asig=SCD1015&carrera=ISIC-2010-224&id_d=170 Unidad: 3. (s.f.).
Pgina 31 de 60
Pgina 32 de 60
Dnde: f: (E - F) x (A B) E x (A B) x (I, O, D)
I = movimiento del cabezal a la izquierda.
O = movimiento nulo.
D = movimiento a la derecha.
La mquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la
que el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor.
Las operaciones que se pueden realizar en esta mquina se limitan a:
Avanzar el cabezal lector/escritor para la derecha.
Avanzar el cabezal lector/escritor para la izquierda.
Una mquina de Turing es un autmata que se mueve sobre una secuencia lineal de
datos. En cada instante la mquina puede leer un solo dato de la secuencia
(generalmente un carcter) y realiza ciertas acciones en base a una tabla que tiene
en cuenta su "estado" actual (interno) y el ltimo dato ledo.
Entre las acciones est la posibilidad de escribir nuevos datos en la secuencia;
recorrer la secuencia en ambos sentidos y cambiar de "estado" dentro de un conjunto
finito de estados posibles.
Pgina 37 de 60
Bibliografa
http://10380054.galeon.com/u4.htm . (s.f.).
Pgina 38 de 60
Definiciones.
Tokens:
Pgina 40 de 60
Otras Funciones:
-Manejo del fichero de entrada del programa fuente: abrirlo, leer sus caracteres,
cerrarlo y gestionar posibles errores de lectura.
Pgina 41 de 60
DO 5 I=1.25 o
DO 5
Pgina 42 de 60
operadores aritmticos
operadores
relacionales
operadores lgicos
operador de asignacin
identificadores
constantes
cadenas
literales
signos de puntuacin
libreras
La transicin para a debe llevar a un estado etiquetado con el conjunto {l, n, nd},
(Siendo l la cadena vaca),
La transicin para i a un estado etiquetado {n, nto}
La transicin para n a un estado etiquetado {l,to}
La transicin para t a un estado etiquetado {o}
Una etiqueta de estado L que etiquete a un estado objetivo de una transicin para un
smbolo a se denomina etiqueta derivativa L con transicin a
Un estado es estado final si y slo si su etiqueta contiene la cadena vaca l
Crear un estado inicial q0 y
Etiquetarlo con el conjunto de entrada L0;
Situar q0 en una cola de estados Q;
Mientras Q no est vaca hacer:
{
Eliminar de Q el estado qi ;
Generar las etiquetas derivativas a partir de la etiqueta Li del estado qi ;
Para cada etiqueta derivativa Lj con transicin a hacer:
{
Si no existe un estado qj etiquetado Lj entonces:
Crear qj y ponerlo en Q ;
Crear un arco etiquetado a desde qi a qj ;
}
}
Marcar como estados finales a todos aquellos que contienen en su etiqueta a l
Se pueden usar varias tcnicas para acelerar el algoritmo y ahorrar espacio
Las etiquetas pueden guardarse mediante dispersin para producir un sistema de
firmas que acelere sus bsquedas.
Como las tablas de transiciones son muy escasas, se pueden guardar en una lista
corta que se consulte cada vez que se necesite hacer una transicin a partir de un
estado.
Estas listas no suelen tener ms de tres o cuatro elementos, as que su bsqueda
ser razonablemente rpida.
Bibliografa
http://www.gedlc.ulpgc.es/docencia/seminarios/rit/Analisis_lexico/sld046.htm Tema de
la unidad 5. (s.f.).
Pgina 47 de 60
6.1 GLC.
Pgina 48 de 60
Herramienta formal que puede ser vista tanto desde un punto de vista
generador como estructurador.
G = (V, T, P, S)
S V, smbolo inicial
U T, eventualmente vaca ( = )
Pgina 49 de 60
los nodo interiores del rbol estn etiquetados por los smbolos no terminales
si un nodo interior etiquetado por A, posee como hijos los nodos etiquetados
por X1, X2,Xn , entonces A X1,X2, Xn es una produccin de la
gramtica, en donde Xi , representa smbolo terminal o no terminal.
Pgina 50 de 60
Para cada cadena del lenguaje generado por una gramtica es posible construir (al
menos) un rbol de derivacin, en el cual cada hoja tiene como rtulo uno de los
smbolos de la cadena.
rbol de derivacin.
Ejemplo:
Sea G=(N, T, S, P) una GLC con P: S ab|aSb
La derivacin de la cadena aaabbb ser: S aSb aaSbb aaabbb y el rbol de
derivacin:
Una gramtica formal est en Forma normal de Chomsky si todas sus reglas de
produccin son de alguna de las siguientes formas:
A BC o
A a o
Variables generativas:
Variables tiles:
Si existe una derivacin desde el smbolo inicial usando que produce una
sentencia , es decir, existe $ * X * donde , * y *T.
Pgina 52 de 60
Los diagramas sintcticos, de sintaxis o diagramas del ferrocarril son una forma de
representar una gramtica libre de contexto. Representan una alternativa grfica para
la Forma de Backus-Naur (BNF, por sus siglas en ingls) o la Forma Extendida de
Backus-Naur (EBNF, por sus siglas en ingles).
Los diagramas de ferrocarril son ms comprensibles para la mayora de la gente.
Alguna parte de la popularidad del formato de intercambio de datos JSON se debe a
su representacin en los diagramas de ferrocarril.
Un segundo mtodo alternativo para desplegar las producciones de ciertas
gramticas de tipo 2 es el diagrama de sintaxis. sta es una imagen de las
producciones que permite al usuario ver las sustituciones en forma dinmica, es decir,
verlas como un movimiento a travs del diagrama. En la figura 10.5 se ilustrar los
diagramas que resultan de la traduccin de conjuntos de producciones tpicos, que
son, por lo general, todas las producciones que aparecen en el lado derecho de algn
enunciado BNF.
Pgina 53 de 60
Tipos de Ambigedad
Dentro del estudio de gramticas existen dos tipos fundamentales de ambigedad,
los cuales son:
Ambigedad Inherente:
Las gramticas que presentan este tipo de ambigedad no pueden utilizarse para
lenguajes de programacin, ya que por ms transformaciones que se realicen sobre
ellas, nunca se podr eliminar completamente la ambigedad que presentan:
Un lenguaje L es inherentemente ambiguo si todas sus gramticas; si existe cuando
menos una gramtica no ambigua para L, L no es ambiguo.
Pgina 54 de 60
FIRST: Sea G:= (V; ; Q0; P) una gramtica libre de contexto. Para cada forma
sentencial (V U )* y para cada k N definiremos la funcin.
En otras palabras, el operador F IRST k asocia a cada forma sentencial los primeros k
smbolos de cualquier forma terminal alcanzable desde mediante derivaciones
masa la izquierda".
FOLLOW: Con las mismas notaciones anteriores, para cada forma sentencial (V
U )* definiremos la funcin FOLLOWG GK () del modo siguiente.
Pgina 55 de 60
Analizador Descendente:
Se construye el rbol de anlisis sinttico partiendo del smbolo inicial y aplicando las
producciones mediante derivaciones por la izquierda, el smbolo a expandir es el que
est ms a la izquierda.
Analizador Ascendente:
Se construye el rbol de anlisis sinttico partiendo de la frase a reconocer y
aplicando las producciones mediante reducciones hasta llegar al smbolo inicial de la
gramtica.
Ejemplo:
G= ({+,*, ID, (,)}, {E, T, P},E, P)P={E:=E+T | T; T:=T*P | P; P:= ID | (E) }FraseID + ( ID *
ID )
Ejemplo:
G= ({+,*, ID, (,)}, {E, T, P},E, P)P={E:=E+T | T; T:=T*P | P; P:= ID | (E) }FraseID + ( ID *
ID )
Un compilador es un sistema que en la mayora de los casos tiene que manejar una
entrada incorrecta. Sobre todo en las primeras etapas de la creacin de un programa,
es probable que el compilador se utilice para efectuar las caractersticas que debera
proporcionar un buen sistema de edicin dirigido por la sintaxis, es decir, para
determinar si las variables han sido declaradas antes de usarla, o si faltan corchetes o
algo as.
Por lo tanto, el manejo de errores es parte importante de un compilador y el escritor
del compilador siempre debe tener esto presente durante su diseo.
Hay que sealar que los posibles errores ya deben estar considerados al disear un
lenguaje de programacin. Por ejemplo, considerar si cada proposicin del lenguaje
de programacin comienza con una palabra clave diferente (excepto la proposicin
de asignacin, por supuesto). Sin embargo, es indispensable lo siguiente:
El compilador debe ser capaz de detectar errores en la entrada;
El compilador debe recuperarse de los errores sin perder demasiada
informacin;
Y sobre todo, el compilador debe producir un mensaje de error que permita al
programador encontrar y corregir fcilmente los elementos (sintcticamente)
incorrectos de su programa.
Errores Sintcticos.
Muchos errores de naturaleza sintctica Recuperacin: Al producirse un error el
compilador debe ser capaz de informar del error y seguir compilando. (Ideal).
El manejo de errores de sintaxis es el ms complicado desde el punto de vista de la
creacin de compiladores. Nos interesa que cuando el compilador encuentre un error,
se recupere y siga buscando errores. Por lo tanto el manejador de errores de un
analizador sintctico debe tener como objetivos:
Indicar los errores de forma clara y precisa. Aclarar el tipo de error y su
localizacin.
Recuperarse del error, para poder seguir examinando la entrada.
Un buen compilador debe hacerse siempre teniendo tambin en mente los errores
que se pueden producir; con ello se consigue:
Errores semnticos.
Pgina 57 de 60
Funciones polimrficas: Son aquellas que trabajan con argumentos cuyo tipo
puede cambiaren distintas llamadas a la funcin.
GNU bison:
Es un programa generador de analizadores sintcticos de propsito general
perteneciente al proyecto GNU disponible para prcticamente todos los sistemas
operativos, se usa normalmente acompaado de flex aunque los analizadores lxicos
se pueden tambin obtener de otras formas.
Grammatica:
Pgina 58 de 60
Bibliografa
http://10380054.galeon.com/u6.htm . (s.f.).
COLUSIN
Pgina 59 de 60
Pgina 60 de 60