Professional Documents
Culture Documents
Contenido:
Lenguajes Formales.
Gramticas Formales.
Lenguajes Regulares.
Lenguajes Incontextuales.
Maquina de Turing.
Proceso de compilacin
Lenguajes Formales
Lenguajes Formales:
Los LENGUAJES FORMALES estn formados por
PALABRAS, las palabras son CADENAS y las cadenas
estn constituidas por SMBOLOS de un ALFABETO.
Lenguajes Formales
Smbolo:
Es el elemento constructivo bsico; es la entidad
fundamental, indivisible, a partir de la cual se forman los
alfabetos.
Ejemplos:
La letra a es un smbolo o carcter que forma parte del alfabeto
espaol, del alfabeto ingls, etc.
Los smbolos >, = y + son elementos del alfabeto de los operadores
de los lenguajes Pascal y ANSI C .
Lenguajes Formales
Alfabeto:
Es un conjunto (coleccin de objetos) no vaco y finito de
smbolos.
Se lo identifica, habitualmente, con la letra griega
(sigma) y con sus caracteres se construyen las palabras de
un lenguaje.
Ejemplo:
El alfabeto = {0, 1} proporciona los caracteres utilizados en la
construccin de los nmeros binarios.
Los nmeros enteros con signo en base 10 se construyen con
smbolos del siguiente alfabeto: = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -, +}
Lenguajes Formales
Cadena
Es una secuencia finita de caracteres tomados de cierto
alfabeto y colocados uno a continuacin de otro.
Se construye CONCATENANDO (yuxtaponiendo)
caracteres de un alfabeto dado.
Ejemplo:
abac (se lee a-b-a-c) es una cadena formada con caracteres del
alfabeto {a, b, c}.
101110 (uno-cero-uno-uno-uno-cero) es una cadena construida
con caracteres del alfabeto {0, 1}.
Lenguajes Formales
Longitud de una cadena
La LONGITUD de una cadena S (se representa |S|) es la
cantidad de caracteres que la componen.
Ejemplo:
La longitud de la cadena abac es: |abac| = 4.
La longitud de la cadena b es: |b| = 1.
Cadena vaca
Se representa (lambda)
Es la cadena que no tiene caracteres.
Es la cadena de longitud 0 (|| = 0).
Este smbolo no forma parte de ningn alfabeto.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
Lenguajes Formales
Potenciacin de un smbolo
cn representa la repeticin del carcter c, n veces.
Simplifica la escritura de cadenas.
Ejemplo: aaaaabbbbbbb = a5b7.
Lenguajes Formales
Potenciacin de una cadena
Si S es una cadena, entonces Sn (con n 1 y entero) representa la cadena que
resulta de concatenar la cadena S, consigo misma, n-1 veces.
S0 es (la cadena vaca), para cualquier cadena S
Ejemplo: Sea S = ab; entonces: S3 = SSS = (ab)3 = ababab.
Lenguajes Formales
Lenguajes Naturales Lenguajes Formales
Lenguaje Natural
Lenguaje hablado y/o escrito que es utilizado por los seres humanos
para comunicarse.
Caractersticas:
EVOLUCIONAN con el paso del tiempo, incorporando nuevos
trminos y nuevas reglas gramaticales para mejorar y actualizar la
comunicacin
Sus REGLAS GRAMATICALES surgen despus del lenguaje, para
poder explicar su estructura, es decir: su sintaxis
El SIGNIFICADO (o sea, la semntica) de cada palabra y de cada
oracin de un Lenguaje Natural es, en general, ms importante que su
composicin sintctica.
10
Lenguajes Formales
Lenguajes Naturales Lenguajes Formales
Lenguaje Formal
Conjunto de cadenas formadas con los caracteres de un alfabeto dado, y
tiene una caracterstica fundamental: es un lenguaje abstracto, en el que el
trmino FORMAL pone de manifiesto que, en esta disciplina, solo estamos
interesados en la forma de una cadena (sintaxis) y no en su significado
(semntica).
Definidos por reglas gramaticales PREESTABLECIDAS y se deben
ajustar rigurosamente a ellas. En consecuencia, un LF nunca puede
evolucionar.
Un LF puede ser descripto por enumeracin (extensin), por comprensin,
mediante una frase en un lenguaje natural (castellano) o mediante otras
formas especiales.
Ejemplo: Sea = {a}, un alfabeto con un solo smbolo. Los que siguen
son algunos LFs que se pueden construir sobre este alfabeto: L1 = {a}; L2
= {aa, aaa}; L3 = {, a, a18}.
11
Lenguajes Formales
Palabra
Una cadena es vaca, o bien est compuesta por una
sucesin de uno o ms caracteres que pertenecen a un
alfabeto dado.
Si una cadena pertenece a un determinado lenguaje,
decimos que es una PALABRA de ese lenguaje.
Propiedades:
longitud de una palabra
palabra vaca
concatenacin de dos o ms palabras
potenciacin de una palabra
prefijos y sufijos de una palabra
subpalabras
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
12
Lenguajes Formales
Cardinalidad de un LF
Es la cantidad de palabras que lo componen.
Ejemplos:
L = {a, ab, aab} es un lenguaje de cardinalidad 3 sobre el alfabeto {a, b}.
El lenguaje L = {} es un lenguaje de cardinalidad 1, ya que contiene una
sola palabra.
Sublenguajes
Dado que un Lenguaje Formal es un conjunto, un SUBLENGUAJE es
un subconjunto de un lenguaje dado.
Ejemplo:
Sea L1 = {a, ab, aab}. Entonces, L2 = {ab, aab} es un sublenguaje de L1,
mientras que L3 = { } es el sublenguaje vaco de L1.
13
Lenguajes Formales
Lenguajes formales finito
Lenguajes con un nmero finito de palabras
Ejemplo: L1 = {a, ab, aab}.
14
Lenguajes Formales
Lenguaje Universal
Dado un alfabeto , el LENGUAJE UNIVERSAL sobre este alfabeto
es un lenguaje infinito que contiene todas las palabras que se pueden
formar con los caracteres del alfabeto , ms la palabra vaca.
Se lo representa con la notacin *, que se lee sigma clausura o
sigma estrella.
Es cerrado bajo concatenacin.
Cualquier lenguaje L sobre el alfabeto es un sublenguaje de *. Por
lo tanto, existen infinitos lenguajes sobre un alfabeto dado.
Ejemplo: Si = {a, b}, entonces el Lenguaje Universal para este
alfabeto es: * = {, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, ...,
aabaabbbab, }
15
Lenguajes Formales
Operaciones con Lenguajes:
Unin: es el lenguaje que contiene las palabras de L1, de L2 o de ambos.
L1 U L2 = {x * : x L1 v x L2}
Complementacin: es el lenguaje que contiene todas las palabras sobre el alfabeto que
no pertenecen a L.
= {x * : x L}
Diferencia:
L1 L2 = L1 2
Diferencia simtrica
L1 L2 = (L1 2) U (1 L2)
Producto
L1 L2 = {x,y * : x L1 ^ x L2}
Potencia
Ln = {{} si n=0 v Ln-1 si n>0}
Cierre positivo
L+ = U Li i > 0
16
Lenguajes Formales
Operaciones con Lenguajes:
L* = {} U L+
L+ = L* L L+
L*L = LL* = L+ L* = L* L+ = L+
L*L* = L* pero L+ L+ = L2L*
(L*)* = (L+)* = (L*)+ = L*
(L+)+ = L+
* = {}
+ =
17
18
19
Gramticas Formales
Estructuras que generan las palabras que forman un Lenguaje
Formal.
Es un conjunto de producciones (reglas de re escritura) que se
aplican para obtener cada una de las palabras del LF que la GF
en cuestin genera.
Ejemplo: Sea el lenguaje L = {a}, formado por una sola
palabra. Este lenguaje es generado por una gramtica con una
nica produccin: S -> a (se lee S produce a).
Toda produccin est formada por tres partes:
el lado izquierdo,
el lado derecho, y
la flecha, que indica que el lado izquierdo de la produccin produce
(o es reemplazado por o equivale a) el lado derecho.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
20
Gramticas Formales
Definicin formal:
Toda GF es una 4-upla (VN, VT, P, S), donde:
VN es el vocabulario de no terminales o variables (un conjunto
finito),
VT es el vocabulario de terminales o caracteres del alfabeto sobre el
cual se construye el LF que es generado por la gramtica descripta
(otro conjunto finito),
P es el conjunto finito de producciones
S VN es un no terminal especial, llamado smbolo inicial (start) o
axioma o smbolo distinguido, desde el cual siempre debe
comenzar a aplicarse las producciones que generan todas las
palabras de un determinado LF
Ejemplo: G = ({S, T}, {a, b}, {S -> aT, T -> a, T -> b}, S).
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
21
Gramticas Formales
Jerarqua de Chomsky:
En 1956 y 1959, el lingista norteamericano Noam
Chomsky public dos trabajos sobre los Lenguajes
Naturales que, aplicados al rea de los Lenguajes Formales,
produjeron lo que se conoce como Jerarqua de Chomsky.
Establece una clasificacin (segn las restricciones que se
imponen a sus producciones ) de cuatro tipos de GFs que, a
su vez, generan cuatro tipos diferentes de LFs.
Tipos:
Gramticas Regulares o Gramticas Tipo 3
Gramticas Independientes del Contexto o Gramticas Tipo 2
Gramticas Dependientes del Contexto o Gramticas Tipo 1
Gramticas Irrestrictas o Gramticas Tipo 0
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
22
Gramticas Formales
Gramticas Regulares o racionales o de Kleene o Gramticas
Tipo 3
Una GF es Regular si sus producciones tienen las siguientes
restricciones:
el lado izquierdo debe tener un solo no terminal,
el lado derecho debe estar formado por un solo terminal, o un no terminal
seguido de un terminal.
el smbolo distinguido puede o no derivar a
Tipos
Lineales por la izquierda
P={(S
) | (A
Bv) | (A
v) / (A,B) VN, v VT}
23
Gramticas Formales
Gramticas Independientes del Contexto o
incontextuales o algebraicas o de Chomsky o
Gramticas Tipo 2
Una GF es Independiente del Contexto si sus producciones
tienen las siguientes restricciones:
el lado izquierdo debe tener un solo no terminal,
el smbolo distinguido puede o no derivar a
P={(S
) | (A
v) / A VN, v +}
Ejemplo: P = {(S ), (S01S1), (S0S10), (SA1),
(A0S10)}
Estas GICs son de gran utilidad en la representacin de la
sintaxis de los Lenguajes de Programacin.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
24
Gramticas Formales
Gramticas Dependientes del Contexto o
Contextuales o Gramticas Tipo 1
Una GF es Dependiente del Contexto si sus producciones
tienen las siguientes restricciones:
|| ||.
el smbolo distinguido puede o no derivar a
P={(S
) | (xAy
xvy) / (A VN, (x,y) *, v +}
Ejemplo: P = {(S ), (S0A100), (0A1011),
(0A0000)}
25
Gramticas Formales
Gramticas Irrestrictas o con Estructura de frase o
Gramticas Tipo 1
Una GF es Irrestricta si sus producciones no tienen ningn
restriccin
P={(u v) / u = xAy, u +, (v,x,y) *, A VN}
Ejemplo: P = {(S0), (0SA0A10), (A1), (A1S0)}
26
Gramticas Formales
Cada tipo de GF genera un tipo de LF cuyo nombre
deriva del nombre general de la correspondiente
gramtica.
As,
las GRs generan LENGUAJES REGULARES,
las GICs generan LENGUAJES INDEPENDIENTES DEL
CONTEXTO,
las GDCs generan Lenguajes Sensibles al Contexto y
las GIs generan Lenguajes Irrestrictos.
27
Gramticas Formales
Derivacin:
Es el proceso que permite obtener cada una de las palabras de un LF a partir del
axioma de una GF que lo genera y aplicando sucesivamente las producciones
convenientes de esa GF.
Existen diferentes formas de representar una derivacin:
en forma horizontal, utilizando el smbolo => en cada paso de una derivacin; S =>
aSb => aaSbb => aaabbb
en forma vertical, reemplazado un no terminal por su lado derecho para producir
una nueva lnea;
S
aSb
aaSbb
aaabbb
en forma de rbol.
28
29
30
31
Lenguajes Regulares
Son los lenguajes formales mas simples.
Importancia en el diseo de los LENGUAJES DE
PROGRAMACIN: los identificadores, las palabras
reservadas, las constantes numricas, los operadores y los
caracteres de puntuacin (Tcnicas de reconocimiento de
patrones).
La tarea de reconocimiento de patrones es manejada por el
analizador lxico del compilador.
Un LENGUAJE es REGULAR si:
Si el LF es FINITO,
Si existe una GRAMTICA REGULAR que lo genere.
Si se puede representar mediante una EXPRESIN REGULAR.
Si puede ser reconocido por un AUTMATA FINITO
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
32
Lenguajes Regulares
Ejemplos:
L1 = {anbn / 1 n 4} Es Regular
L2 = {an / n 1}
Es Regular
L3 = {anbn / n 1}
No es Regular
L4 = {an / 1 n 1000} Es Regular
L5 = {anbt / n 1, t 1} Es Regular
L6 = {(ab)n (cde)t az / n 1, t 1, z 1} Es Regular
L7 = {12n+10 / n 0}
Es Regular
33
Lenguajes Regulares
Expresiones Regulares
Es la forma mas precisa y til de REPRESENTAR a los
Lenguajes Regulares.
Mecanismo alternativo al igual que las gramticas regulares
para definir los lenguajes regulares.
Forman un metalenguaje.
Componentes:
Caracteres del alfabeto
Smbolo
Operadores:
Concatenacin .
Unin |
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
34
Lenguajes Regulares
Expresiones Regulares
Una expresin regular sobre un se define en forma inductiva como
sigue:
es una ER que denota al lenguaje vaco.
es una ER que denota el lenguaje que contiene nicamente a la cadena
vaca {}
a , a es una ER que denota el lenguaje que contiene nicamente a
cadena a, {a}
Sea r una ER que denota el lenguaje Lr, entonces (r) es tambin una
expresin regular para el mismo lenguaje.
r | s es una ER que denota la unin de los lenguajes denotados por r y s
r.s es una ER que denota la concatenacin de los lenguajes denotados por r
ys
r* es una ER que denota la clausura del lenguaje denotado por r.
35
Lenguajes Regulares
Expresiones Regulares
Propiedad de los operadores aa* <> (aa)*
( ) parntesis
* clausura
. concatenacin
| unin
Ejemplos:
(aa)*
aa*
(0|1)*
(0|1)*00(0|1)*
(1|10)*
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
36
Lenguajes Regulares
Expresiones Regulares
Propiedades de equivalencia. Sean a,b,c expresiones regulares sobre el alfabeto
Asociatividad de la unin a | (b | c) = (a | b) | c
Conmutatividad de la unin a | b = b | a
Asociatividad de la concatenacin (ab)c = a(bc)
Distributividad de la concatenacin respecto de la unin a(b | c) = ab | ac
Elemento neutro de la concatenacin a = a = a
Elemento neutro de la unin a | = | a = a
* =
a = a =
* =
a*a* = a*
aa* = a*a
(a*)* = a
a* = | a | aa | | an | an+1a*
a* = | aa*
a* = ( | a)n-1 | ana*
(a* | b*)* = (a*b*)* = (a | b)*
(ab)*a = a (ba)*
(a*b)*a* = (a | b)*
(a*b)* = (a | b)*b |
a+ = aa* = a*a
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
37
Lenguajes Regulares
Expresiones Regulares
Dos expresiones regulares son equivalentes si representan
el mismo lenguaje regular
Ejemplo: a | b = b | a ambos representan al L = {a,b}
38
Lenguajes Regulares
Expresiones Regulares
Operaciones sobre lenguajes regulares
Unin: Si L1 es representado por la ER a*b y L2 es representado por la ER
ba|b*, L1 U L2 es representado por la ER (a*b) | (ba|b*) = a*b|ba|b*
Concatenacin: Si L1 es representado por la ER a*b y L2 es representado
por la ER a|b*, el LR concatenacin L1L2 es representado por la ER
a*b(a|b*).
Clausura de Kleene: Si L es representado por la ER a*b, L* es
representado por la ER (a*b)*
Clausura positiva: Si L es representado por la ER a*b, L+ es representado
por la ER (a*b)+
Complemento: Si L es representado por la ER a(a|b)*, Lc es representado
por la ER b(a|b)*|
Interseccin: Si L1 es representado por la ER a(a|b)* y L2 es representado
por la ER (a|b)*b, L1 L2 es representado por la ER a(a|b)*b
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
39
Lenguajes Regulares
Expresiones Regulares y Lenguajes de programacin
Los componentes lxicos de un LP identificadores, palabras
reservadas, constantes, operadores constituyen diferentes LRs.
Ejemplos:
Identificador L(L|D)*
Constante real D+.D*
Palabras reservadas if|else|while
40
Lenguajes Regulares
Expresiones Regulares en Java (string.matches(regex))
Intervalos de caracteres
[abc]
a, b, o c
[^abc] Cualquier carcter excepto a, b, o c (negacin)
[a-zA-Z] Desde la a a la z o desde la A hasta la Z, incluidos
Cuantificadores de cantidad
X?
X*
X+
X{n}
X(n,}
X{n,m}
Operadores lgicos
XY
X|Y
(X)
X seguido de Y
XoY
X, como un grupo
41
42
43
Lenguajes Regulares
Autmatas Finitos
Es una herramienta abstracta que se utiliza para reconocer un determinado
Lenguaje Regular.
Es un modelo formal de un sistema que trabaja con entradas y salidas discretas.
Es un modelo matemtico de un sistema que recibe una cadena constituida por
caracteres de cierto alfabeto y tiene capacidad de determinar si esa cadena
pertenece al Lenguaje Regular que el Autmata Finito reconoce.
Es una mquina de estados finitos. Una mquina es una abstraccin matemtica
que capturan solamente el aspecto referente a las secuencias de eventos
(transiciones) que ocurren.
RECONOCER un lenguaje regular aceptar cada cadena que es una palabra
del Lenguaje Regular y rechazar cada cadena que no pertenece al lenguaje.
Una palabra es aceptada si:
Cadena ha sido consumida (se ha analizado todos los caracteres de la cadena)
El autmata finito se encuentra en un estado especial llamado ESTADO FINAL o
ESTADO DE ACEPTACION.
44
Lenguajes Regulares
Autmatas Finitos
Definicin formal <Q, , q0, F, >
Q: Conjunto finito de estados
: Alfabeto de entrada reconocidos por el autmata
q0: Estado inicial q0 Q , nico en un conjunto.
F: Conjunto de estados finales F C Q
: Funcin de transicin Q x Q
45
Lenguajes Regulares
Autmatas Finitos
Casos
La cadena ab pertenece al LR reconocido por este AF?
ACTIVIDAD 0a1b2RECONOCE
Se dice que la cadena x es aceptada por el AF M cuando (q0, x) F
Se define el Lenguaje aceptado por el AF M como
L(M) = {x * / (q0, x) F}
La cadena a es reconocida?
ACTIVIDAD 0a1RECHAZA
46
Lenguajes Regulares
a*b
b
(a|b)*
0
b
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
47
Lenguajes Regulares
Autmatas Finitos.
Hay dos maneras de equivocarse al disear un AF
Sobren palabras : El autmata acepte algunas palabras que no
debera aceptar.
Solucin INCORRECTA
48
Lenguajes Regulares
Autmatas Finitos. Tipos:
Autmatas Finitos Deterministas (AFD).
Deterministic Finite Automaton
Para cualquier estado en que se encuentre el autmata en un momento dado, la
lectura de un carcter determina, SIN AMBIGUEDADES, cul ser el estado de
llegada en la prxima transicin. (unvocamente determinado)
Es un AFN (ya que es un caso especial)
Se puede encontrar un AFD por cada AFN que acepte el mismo lenguaje.
49
Lenguajes Regulares
a(a|ba*)
a
2
a
b
M = (Q, , q0, F, )
Q = {0,1,2,3}
= {a,b}
q0 = 0
F = {2,3}
= {0=>a=>1, 1=>a=>2, 1=>b=>3, 3=>a=>3}
50
Lenguajes Regulares
AFD completo
Un AFD es completo si cada estado tiene exactamente una
transicin por cada carcter del alfabeto.
Un AFD es completo cuando su tabla de transiciones no tiene
huecos; si los tiene, el AFD es incompleto.
Completar un AFD significa eliminar los huecos de su tabla de
transiciones, agregando un nuevo estado, que se denomina
ESTADO DE RECHAZO o ESTADO DE NO ACEPTACION.
AFD equivalentes
Dos AFDs son EQUIVALENTES si reconocen al mismo Lenguaje
Regular.
51
Lenguajes Regulares
Autmata Finito No Determinista
(a|b)*abb
a
a
{0,1}
52
Lenguajes Regulares
Autmata Finito Determinista
(a|b)*abb
a
b
53
Lenguajes Regulares
Autmatas Finitos. Operaciones:
Complementacin: Se define el autmata complementario Mc como aquel que se
obtiene a partir de M dando a los estados no aceptadores el carcter de aceptadores y
viceversa
L(Mc) = ~L(M)
Mc = (Q, , q0, F=Q-F, )
Interseccin: M1 M2
M = (Q=Q1xQ2, , q0=q1,q2, F=F1xF2
p Q1 q Q2 w *
((p,q), w) = (1(p,w), 2(q,w))
(p,q)w = (pw, qw)
Unin: M1 U M2
M = (Q=Q1UQ2, , q0=q1Uq2, F=F1UF2, = 1U2)
(q,w) = 1(q,w) si q Q1
(q,w) = 2(q,w) si q Q2
Concatenacin: M1.M2
M = (Q=Q1UQ2, , q0=q1, F=F2
(q,a) = 1(q,a) si q Q1 y a
(q,a) = 2(q,a) si q Q2 y a
(q,) = q2 para cada q F1
54
(8) Disear un AFD que acepte las palabras en el alfabeto {a,b} en que la cantidad de as es impar.
(9) Disear un AFD que acepte las palabras en el alfabeto {0,1} en que las cadenas empiecen con 1 no
tienen un par de 0s consecutivos. (1|10)*
(10) Disee un AFD que reconozca la ER
(a) 1(1|0|-)*(1|0)|1
(b) (a|b)(a|b(a|b))*
(c) (0|1)(10)*
(d) a(bb*a)*
(e) a(aa)*
(f) (aa)+
(g) (0|1)*00
(h) (b|bab)+
(i) (ab|ba)+
(j) ba*
(k) (ba)*
(l) b*a*
55
Lenguajes Incontextuales
Es un lenguaje formal.
Generado por una Gramtica Independiente de
Contexto.
Ejemplos: expresiones aritmticas, sentencias de un
lenguaje de programacin.
56
Lenguajes Incontextuales
Lema del bombeo
Sea L un lenguaje regular.
Entonces existe un entero ("longitud de bombeo")
Tal que cualquier cadena w perteneciente a L, de longitud mayor o
igual que p,
Puede ser escrita como w = xyz (p. ej. dividiendo w en tres
subcadenas), de forma que se satisfacen las siguientes condiciones:
1. |y| 1
2. |xy| p
3. i / i 0, xyiz L
y es la subcadena que puede ser bombeada (borrada o repetida un
nmero i de veces como se indica en (3), y la cadena resultante seguir
perteneciendo a L).
(1) significa que la cadena y que se bombea debe tener como mnimo
longitud uno.
(2) significa que y debe estar dentro de los p primeros caracteres. No
hay restricciones acerca de x o z.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
57
Lenguajes Incontextuales
Autmata Finito Con Pila
Conocidos como autmatas push-down
Mas poderosos que los AF, porque adems de reconocer a
los Lenguajes Regulares tienen la capacidad de reconocer a
los Lenguajes Independientes de Contexto.
Adems de tener estados y transiciones, tiene una memoria
en forma de PILA (stack) que permite almacenar, retirar y
consultar cierta informacin que ser til para reconocer los
LICs. Su lgica es LIFO (Last In First Out)
Los AFD no tienen memoria: no pueden representar el
lenguaje: L = {xn yn , n N}
Es un dispositivo no determinstico.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
58
Lenguajes Incontextuales
Autmata Finito Con Pila
Definicin formal:
AP = <Q, , , q0, p0, F, >
Q: Conjunto finito de estados.
: Alfabeto de entrada
: Alfabeto de la pila (terminales, smbolos de la pila)
q0: Estado inicial
p0: Smbolo inicial de la pila, el que indica que la pila no tiene smbolos. Ejemplo: $
F: Conjunto de estados finales.
: Relacin de transicin ((Q, , ),(Q, )) (estado actual, smbolo del alfabeto que
se lee en la entrada, smbolo que se extrae de la pila, nuevo estado, smbolo que se
inserta en la pila)
Transiciones especiales:
(p,x,)=(q,z) (transita sin extraer nada de la pila)
(p,,s)=(q,) (transita sin avanzar en la cinta de entrada)
(p,,)=(q,) (transita sin avanzar en la cinta de entrada y sin extraer nada de la
pila)
(p,x,)=(q,) Autmata finito!!!!!
59
Lenguajes Incontextuales
Autmata Finito Con Pila
Un AP puede reconocer un LIC de dos maneras:
Por estado final, como en los AFs
Por pila vaca.
Teorema:
Para cada autmata de pila que acepte cadenas sin vaciar su pila, existe un
autmata que acepta el mismo lenguaje pero que vaca su pila antes de
llegar a un estado de aceptacin.
Vaciado de pila:
1) Se crea un nuevo estado inicial y se aade la transicin: (i,,)=(q0,#)
2) Para cada uno de los estados finales se aade un nuevo estado mediante la
transicin (f,,)=(s, )
3) Para cada smbolo de pila x se aade la transicin: (s,,x)=(s, )
4) Se aade un estado final nuevo y la transicin
(s,, #)=(F, )
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
60
Lenguajes Incontextuales
Ejemplo: Cualquier cadena que contenga un nmero de ys
menor o igual a que de xs. Pueden estar intercaladas.
L={xyx, xxy, xxyxyx, }
leo / saco / pongo
x//x
q
y/x/
61
Lenguajes Incontextuales
Ejemplo: S aSb |
a//a
FALTA
LEER
LEO
aabb
PILA
a
abb
a
a
b/a/
bb
aa
b
a
b
b/a/
62
Lenguajes Incontextuales
Ejemplo: L = {ww-1 / w,w-1 *}
SA|
A aa|bb|aAa|bAb
a//a
b//b
FALTA
LEER
LEO
abba
PILA
a
bba
a
b
//
ba
ba
ba
a/a/
b/b/
ba
b
a
a
63
Lenguajes Incontextuales
Ejemplo: S cAc
A b|bA
FALTA
LEER
LEO
cbbc
PILA
c
bbc
c//c
b//
bc
c
b
c
c
c/c/
64
Lenguajes Incontextuales
Ejemplo: xnynxn
x//x
p
//#
y//
//
x/x/
s
//
/#/
65
Lenguajes Incontextuales
Autmata Finito Con Pila
Para cada gramtica G independiente del contexto, existe un autmata de pila
M tal que L(G)=L(M)
Dada una gramtica G independiente del contexto, construimos un autmata de
pila M de la manera siguiente:
Designe el alfabeto de M como los smbolos terminales de G, y los smbolos de pila
de M como los smbolos terminales y no terminales de G, junto con el smbolo
especial #.
2) Designe los estados de M como i, p, q y f, donde i es el estado inicial y f es el
nico estado de aceptacin.
3) Introduzca la transicin (i, , ; p, #).
4) Introduzca una transicin (p, , ; q, S) donde S es el smbolo inicial de G.
5) Introduzca una transicin de la forma (q, , N; q, w) para cada regla de
reescritura N w en G (aqu empleamos nuestra nueva convencin que permite que
una sola transicin inserte ms de un smbolo de pila. W puede ser una cadena de
cero o ms smbolos, incluyento terminales y no terminales.
6) Introduzca una transicin de la forma (q, x, x; q, ) para cada terminal x de G (es
decir, para cada smbolo del alfabeto de M
7) Introduzca la transicin (q, , #; f , )
66
Lenguajes Incontextuales
Ejemplo: S zMNz
M aMa | z
N bNb | z
67
Lenguajes Incontextuales
Anlisis completo de la cadena zazabzbz que efecta
el autmata:
68
Lenguajes Incontextuales
Ejemplo: S aA
A Sb | b
/ Aa / S
/b/A
/ bS / A
b//b
a//a
p
//#
q
/S/
/#/
69
Lenguajes Incontextuales
Ejemplo: S xSy |
/ S / xSy
/S/
y/y/
x/x/
p
//#
q
//S
/#/
70
Lenguajes Incontextuales
Compilador LL
Es un analizador sintctico.
L: left to right: lee la entrada de izquierda a derecha.
L: left derivation: produce una derivacin por la izquierda.
Principio de previsin (lookahead): observar un
carcter de la palabra de entrada que an no ha sido ledo
El carcter ledo por adelantado nos permite en algunas
ocasiones decidir adecuadamente cual de las transiciones
del AP conviene aplicar.
71
Lenguajes Incontextuales
FALTA
LEER
Compilador LL
LEO
abcba
PILA
abcba
abcba
aSa
a
bcba
Sa
//S
bcba
bSba
b
/ S / aSA
/ S / bSb
/S/c
a/a/
b/b/
c/c/
cba
Sba
cba
cba
c
ba
ba
b
a
a
72
Lenguajes Incontextuales
FALTA
LEER
Compilador LL
LEO
aabbb
PILA
aabbb
aabbb
aSbb
a
abbb
Sbb
//S
abbb
aSbbb
a
bbb
/ S / aSb
/ S / aSbb
/S/
a/a/
b/b/
Sbbb
bbb
bbb
b
bb
bb
b
b
b
73
Lenguajes Incontextuales
Compilador LR
Es un analizador sintctico.
L: left to right: lee la entrada de izquierda a derecha.
R: righmost derivation: produce una derivacin mas a la derecha.
No tratan de adivinar una derivacin, sino que tratan de ir
reconociendo cadenas que correspondan al lado derecho de una regla
gramatical, para reemplazar por el lado izquierdo.
Recorren el rbol de derivacin de abajo hacia arriba, por lo que se
llaman tambin compiladores ascendentes. Cadena reconocida con el
smbolo distinguido en el tope de la Pila.
Se analiza el tope de la Pila
Operaciones:
Desplazar: pasar un carcter de la entrada al tope de la pila
Reducir: reemplazar en el tope de la pila el lado derecho de una regla
gramatical por el lado izquierdo de la misma.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
74
Lenguajes Incontextuales
Compilador LR
Ejemplo: S aA; ASb|b
i
//#
p
/S/
q
/#/
/ Aa / S
/ bS / A
/b/A
a//a
b//b
FALTA
LEER
PILA
ACCION
aabb
//#
aabb
DESP
abb
a#
DESP
bb
aa#
DESP
baa#
RED
Aaa#
RED
Sa#
DESP
bSa#
RED
Aa#
RED
S#
/S/
/#/
FIN
75
Lenguajes Incontextuales
Compilador LR
Ejemplo: S aSa|bSb|c
i
//#
p
/S/
q
/#/
/ aSa / S
/ bSb / S
/c/S
a//a
b//b
c//c
FALTA
LEER
PILA
ACCION
abcba
//#
abcba
DESP
bcba
a#
DESP
cba
ba#
DESP
ba
cba#
RED
ba
Sba#
DESP
bSba#
RED
Sa#
DESP
aSa#
RED
S#
/S/
/#/
FIN
76
Lenguajes Incontextuales
Compilador LR
Ejemplo: S cAc; AbA|b
i
//#
p
/S/
q
/#/
/ cAc / S
/ Ab / A
/b/A
b//b
c//c
FALTA
LEER
PILA
ACCION
cbbc
//#
cbbc
DESP
bbc
c#
DESP
bc
bc#
RED
bc
Ac#
DESP
bAc#
RED
Ac#
DESP
cAc#
RED
S#
/S/
/#/
FIN
f
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
77
Lenguajes Incontextuales
Compilador LR
Ejemplo: S aSb|aSbb|
i
//#
p
/S/
q
/#/
/ bSa / S
/ bbSa / S
//S
a//a
b//b
FALTA
LEER
PILA
ACCION
aabbb
//#
aabbb
DESP
abbb
a#
DESP
bbb
aa#
DESP
bbb
Saa#
DESP
bb
bSaa#
RED
bb
Sa#
DESP
bSa#
DESP
bbSa#
RED
S#
/S/
/#/
FIN
78
Lenguajes Incontextuales
Ejercicios
(1) En uno de sus viajes, Alicia pas por un pueblo dispuesta a encontrar
alojamiento para pasar la noche. Sin embargo, pronto se dio cuenta de
que no entenda una palabra a ninguno de los habitantes.
Al cabo de un tiempo de intentar, infructuosamente, establecer
comunicacin con alguno de ellos, se le acerc un muchacho de
aspecto bonachn que la salud cortsmente:
Buenos das.
Alicia respir aliviada.
Buenos das. Menos mal que me encuentro a alguien que me entiende!
Estaba ya a punto de marcharme de aqu. Qu lengua hablan en este
pueblo?
A decir verdad, hay en el pueblo dos dialectos diferentes. Si le interesa,
puedo hablarle sobre ellos.
Me gustara mucho.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
79
Lenguajes Incontextuales
Ejercicios (cont.)
Pues ver, en el lenguaje oficial, se utiliza una nica vocal, la a, combinada con dos
consonantes, la s y la b, para formar slabas. Una slaba puede ser, o bien una vocal, o
bien una consonante seguida por una vocal. Adems, para complicar las cosas, cuando
una slaba comienza por consonante, la slaba precedente puede terminar en s.
Eso es fcil, en mi idioma las slabas son muy similares. Y cmo se forman las palabras?
Una palabra siempre tiene una o varias slabas. Sin embargo, se da el caso de que todas las
palabras han de tener el mismo nmero de slabas acabadas en s, que de slabas acabadas
en a.
Ah, s? Qu lenguaje tan original! Entonces, basba es una palabra vlida, pero asbaa no
lo es, no?
Exacto. Pero eso no es todo, porque, como te dije, en el norte del pueblo se habla otro
dialecto.
En qu se diferencia?
Las palabras se forman de manera parecida, pero no hay eses al final de las slabas, por lo
que no existe la restriccin de que haya el mismo nmero de slabas acabadas en s que
acabadas en a.
Entonces, palabras vlidas del sur seran bassa y basba, y palabras vlidas del norte seran
aa, basa, o sasasa, verdad?.
As es!
80
Lenguajes Incontextuales
Ejercicios (cont.)
Se pide, para cada uno de estos dos dialectos:
En el caso de que sea un lenguaje regular,
a. Proporcionar una Expresin Regular para el lenguaje.
b. Construir un autmata finito determinista que acepte las palabras del
mismo.
c. Proporcionar una gramtica regular para el lenguaje.
En el caso de que sea independiente del contexto no regular,
a. Proporcionar una gramtica independiente del contexto para el lenguaje.
b. Proporcionar un autmata a pila LL que acepte las palabras del
lenguaje.
c. Analizar la palabra basba con un autmata de pila de tipo LR.
81
Lenguajes Incontextuales
Ejercicios
(2) Cual es el lenguaje que acepta el siguiente AP
0//0
0/1/
1/0/
1//1
82
Lenguajes Incontextuales
Ejercicios
(4) Obtenga la gramtica G tal que L(G) =
{xyxynzy2n+1; n 0}
Solucin: SxyxA; AyAyy | zy
83
Mquina de Turing
Los autmatas son insuficientes:
AF modelan adecuadamente mecanismos que requieren una
memoria pequea.
AP modelan adecuadamente mecanismos que requieren memoria
infinita que slo puede ser replicada con una pila LIFO (Last In First
Out)
{anbncn | n > 0} no es un lenguaje libre de contexto pero s es sensitivo
al contexto, es decir, es generado por una gramtica sensitiva al
contexto.
{anbncn | n 0} no es un lenguaje sensitivo al contexto (porque
contiene ) pero s es un lenguaje recursivamente numerable, es decir,
es generado por una gramtica sin restriccin.
84
Mquina de Turing
{anbncn | n 0} es un
lenguaje
recursivamente
enumerable
{anbncn | n > 0} es un
lenguaje sensitivo al
contexto
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
S aBTc | abc
T ABTc
T ABc
BA BX
BX YX
YX AX
AX AB
aA aa
aB ab
bB bb
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
S aBTc | abc |
T ABTc
T ABc
BA BX
BX YX
YX AX
AX AB
aA aa
aB ab
bB bb
85
Mquina de Turing
nbm}
{a
LR
{anbn}
X
LLC
nbncn}
{a
LSC
X
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
86
Mquina de Turing
Mquina abstracta definida por el matemtico ingls Alan Turing en
Proceedings of the London Mathematical Society 2:230-265, 1936.
Turing empez tratando de modelar a una computadora humana, es decir, a
un humano tratando de resolver algortmicamente un problema utilizando
papel y lpiz.
Reglas bsicas:
Slo se pueden escribir smbolos que pertenecen a un conjunto finito.
Cada accin que la computadora toma slo depende del smbolo que est siendo
examinado y del estado mental en ese momento.
Aunque el estado mental puede cambiar como resultado de los smbolos o clculos
que se han efectuado, el nmero de estados mentales distintos es finito.
Mquina abstracta
Examinar un smbolo individual en el papel.
Borrar un smbolo o reemplazarlo por otro.
Trasladar la atencin de una parte del papel a otra.
87
Mquina de Turing
Se tiene un alfabeto de entrada y un alfabeto,
posiblemente mayor, de los smbolos utilizados
durante la operacin o clculos de la mquina.
Un conjunto finito de estados que representan los
distintos estados mentales.
En lugar de una hoja de papel, se tiene una cinta
lineal semi-infinita con inicio en el extremo izquierdo
e infinita hacia la derecha. Esta cinta esta dividida en
cuadros, en cada uno de los cuales puede estar un
smbolo o un espacio en blanco (#).
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
88
Mquina de Turing
Caricatura de una MT
89
Mquina de Turing
Operacin de la MT:
La accin est determinada por el estado actual y el smbolo en la cinta y consiste
de tres partes
Reemplazar el smbolo en el cuadrado actual por otro que puede ser distinto o el mismo.
Mover la cabeza lectora a la derecha o a la izquierda (a menos que se encuentre en el
extremo izquierdo de la cinta) o quedarse donde est.
Hacer una transicin de estado, que puede ser distinto o el mismo.
90
Mquina de Turing
Definicin formal:
Una Mquina de Turing es un quinteto T = (Q, , , q0, )
Q es un conjunto finito de estados en el que no est includo los
estados de paro ha y hr.
es el alfabeto de entrada con el que se forman las cadenas a
procesar.
es el alfabeto de la cinta que contiene a pero no al espacio en
blanco (#).
q0 es el estado inicial y pertenece a Q.
La funcin de transicin
: Q ( {#}) Q {ha, hr} ( {#}) {#}) {R, L, S}
(q, X) = (r, Y, D) significa que si la mquina se encuentra en el
estado q y leyendo el smbolo X en la cinta, entonces la mquina
reemplaza X por Y, se mueve al estado r y mueve la cabeza lectora
en la direccin D.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
91
Mquina de Turing
Notacin grfica:
(q, X) = (r, Y, D) se puede representar grficamente
de la siguiente manera:
X/Y, D
q
92
Mquina de Turing
Configuracin inicial
# a
b b a
# # # ...
93
Mquina de Turing
Aceptacin de palabras por MT
Una palabra x * es aceptada por una MT T si empezando con la
configuracin inicial correspondiente a la palabra x, eventualmente se
llega al estado de aceptacin ha.
Note que no es necesario procesar toda la palabra para aceptarla.
El lenguaje aceptado por T es el conjunto de palabras aceptadas por T.
94
Mquina de Turing
Ejemplo 1: MT que acepta palabras sobre {a, b} que
inician con a
#/#,R
a/a,S
ha
b/b,S
#/#,S
hr
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
95
Mquina de Turing
Ejemplo 2: MT palabras en {a, b} que terminan con
a
a/a,R
b/b,R
1
#/#,R
#/#,L
a/a,S
ha
b/b,S
#/#,S
hr
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
96
Mquina de Turing
Ejemplo 3: MT que acepta (a | b)*aba (a | b)*
97
Mquina de Turing
Ejemplo 4: MT que acepta (a | b)*aba
98
Mquina de Turing
Ejemplo 5: MT que acepta palndromos sobre {a, b}.
99
Mquina de Turing
Ejemplo 6: MT que acepta el lenguaje L = {ss | s (a + b)*}
Este lenguaje no es libre de contexto
100
Mquina de Turing
Ejemplo 7: MT que acepta la reversa de un string
101
Mquina de Turing
Ejemplo 8: MT que calcula n % 2
102
Mquina de Turing
Ejemplo 9: MT que copia strings
103
Mquina de Turing
Ejemplo 10: MT que borra un smbolo
104
Mquina de Turing
Configuracin de una Mquina de Turing
Definida por:
El estado en el que se encuentra
El contenido de la cinta
La posicin de la cabeza lectora.
Representada como uqv cuando la MT se encuentra en el estado q, el
contenido de la cinta es la cadena uv (en ese orden, de izquierda a
derecha) y la cabeza lectora se encuentra en el primer smbolo de v.
La cinta slo contiene espacios blancos (#) a la derecha del ltimo
smbolo de v; para abreviar, estos blancos a la derecha de la palabra
no se indican en la configuracin . Por ejemplo, #1011q701111
representa la configuracin cuando el contenido de la cinta es
#101101111###..., el estado es q7 y la cabeza lectora se encuentra
sobre el segundo 0.
#
...
q7
105
Mquina de Turing
Aceptabilidad
Un lenguaje L es Turing-aceptable si existe una mquina de Turing que d
halt para toda entrada w L, es decir, la palabra w es aceptada por la
mquina de Turing.
Ejemplo: Mquina de Turing que acepte el lenguaje L = {1x | x = 2n para n
0}, es decir, cadenas de 1s cuya longitud es una potencia de 2.
Idea de construccin:
1) Barrer la palabra de izquierda a derecha tachando un 1 s y otro no.
2) Si en el paso 1) la cinta contiene slo un 1, entonces parar y aceptar.
3) Si en el paso 1) la cinta contiene ms de un 1 y el nmero de 1s es
impar, entonces rechazar.
4) Regresar la cabeza lectora al extremo izquierdo de la cinta.
5) Ir al paso 1).
106
Mquina de Turing
1/1,L
Ejemplo de aceptabilidad
x/1,L
x/x,R
1/#,L
#/#,L
1/x,R
#/#,R
#/#,R
1/x,R
#/#,L
1/1,R
#/#,S
ha
1/1,R
107
Mquina de Turing
Decidibilidad
Un lenguaje L es Turing-decidible si hay alguna MT que entrega un
resultado 1 si la entrada w est en L, y un resultado 0 en caso
contrario.
Debe quedar claro que para que una MT entregue como resultado 1 o
0, es condicin indispensable que la palabra de entrada haya sido
aceptada. Esto tiene la consecuencia siguiente:
Un lenguaje es Turing-decidible solamente si es Turing-aceptable.
108
Mquina de Turing
Ejemplo de decidibilidad
109
Mquina de Turing
Tesis de Church y lmites de MT
1.- Todo lenguaje T-decidible es T-aceptable.
2.- L es T-decidible si Lc es T-decidible.
3.- L es T-decidible si tanto L como Lc son T-aceptables.
110
Mquina de Turing
Se ha comparado la MT con:
Extensiones de la misma MT:
Cinta infinita a la izquierda
No determinismo
Varias cintas, varias cabezas
Otras mquinas:
Mquinas de Post
Autmatas de varias pilas
111
Mquina de Turing
Lmites de las MT
Problema del paro (halt) de una MT con una palabra w.
El lenguaje indecidible en este caso es el formado por palabras d(M)w
en que M da halt con la entrada w.
Teorema: No existe ninguna MT que decida el lenguaje formado por
palabras d(M)w en que M da halt con la entrada w.
112
Mquina de Turing
Fin de ejecucin:
Estado de paro (halt)
detiene la operacin.
acepta la palabra.
113
Proceso de Compilacin
Compilador:
Es un complejo programa que lee un programa escrito en
un lenguaje fuente y lo traduce a un programa equivalente
en un lenguaje objeto, normalmente mas cercano al
lenguaje de mquina.
Programa original programa fuente
Programa destino programa objeto
114
Proceso de Compilacin
Anlisis del programa fuente
En la compilacin , el anlisis esta formado por tres fases:
Anlisis lxico
Anlisis sintctico
Anlisis semntico
Anlisis lxico
Analizador lxico SCANNER
Detecta los diferentes elementos bsicos (lexemas) que constituyen un
programa fuente (identificadores, palabras reservadas, constantes,
operadores y caracteres de puntuacin)
Solo se ocupa de los Lenguajes Regulares que forman parte del Lenguaje
de Programacin.
Entrada caracteres
Salida tokens
Los espacios que separan a los lexemas son ignorados.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
115
Proceso de Compilacin
Anlisis del programa fuente
Anlisis sintctico
Analizador sintctico PARSER
Entrada tokens
Conoce la sintaxis del Lenguaje de Programacin
Determina si las construcciones que componen el programa son
sintcticamente correctas, agrupando los tokens en unidades.
Anlisis semntico
Tarea: verificacin de tipos, para que cada operador trabaje sobre
operandos permitidos segn la especificacin del Lenguaje de
Programacin.
Las rutinas semnticas llevan a cabo dos funciones:
Chequean la semntica esttica de cada construccin; es decir, verifican que la
construccin analizada sea legal y que tenga un significado. Verifican que las
variables involucradas estn definidas, que los tipos sean correctas, etc.
Si la construccin, es semnticamente correcta, las rutinas semnticas tambin
hacen la traduccin; es decir, generan el cdigo para una Maquina Virtual que,
a travs de sus instrucciones, implementa correctamente la construccin
analizada.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo
116