You are on page 1of 116

Compiladores e Intrpretes

Coordinador: Prof. Ing. Pablo Pandolfo

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

Contenido:
Lenguajes Formales.
Gramticas Formales.
Lenguajes Regulares.
Lenguajes Incontextuales.
Maquina de Turing.
Proceso de compilacin

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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 .

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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, -, +}

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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}.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Concatenacin de dos cadenas


La operacin de CONCATENACIN aplicada a cadenas (S1S2)
produce una nueva cadena formada por los caracteres de la primera
cadena seguidos inmediatamente por los caracteres de la segunda
cadena.
Ejemplo: Sean las cadenas S1 = aab y S2 = ba; entonces, S1S2 =
aabba.
NO ES CONMUTATIVA
La cadena vaca () es la IDENTIDAD para la concatenacin. Esto es:
para cualquier cadena S, S = S = S.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Prefijo de una cadena:


Es una secuencia de cero o ms caracteres iniciales de esa cadena.
Ejemplo: Sea la cadena abcd. Entonces, sus prefijos son: , a, ab, abc y abcd
(la cadena completa).

Sufijo de una cadena:


Es una secuencia de cero o ms caracteres finales de esa cadena.
Ejemplo: Sea la cadena abcd. Entonces, sus sufijos son: , d, cd, bcd y abcd.

Subcadena de una cadena:


es una secuencia de caracteres que se obtiene eliminando cero o ms caracteres
iniciales y cero o ms caracteres finales de esa cadena.
Ejemplo: Sea la cadena abcd. Entonces, sus subcadenas son: abcd, bcd, cd, d,
abc, ab, a, bc, b, c y .
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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}.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

13

Lenguajes Formales
Lenguajes formales finito
Lenguajes con un nmero finito de palabras
Ejemplo: L1 = {a, ab, aab}.

Lenguajes formales infinitos


Lenguajes con una cantidad infinita de palabras, pero cada una de
longitud finita (no existen las palabras de longitud infinita).
Ejemplo: L = {an / n 1} es un LF infinito ya que no existe un lmite
superior para el suprandice n. Cada palabra de este lenguaje est
formada por una secuencia de una o ms aes. Por ello, la concatenacin
de dos palabras cualesquiera de este lenguaje producir siempre otra
palabra del lenguaje L. Por esta propiedad, se dice que este lenguaje L
es cerrado bajo la concatenacin.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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, }

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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}

Interseccin: es el lenguaje que contiene las palabras de L1 y de L2.


L1 L2 = {x * : x L1 ^ 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 estrella (de Kleene)


L* = U Li i 0

Cierre positivo
L+ = U Li i > 0

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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+
* = {}
+ =

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

17

Lenguajes Formales - Ejercicios


(1) Dado el alfabeto = {a, b, c}, escriba las palabras del lenguaje L = {x / x }.
(2) Cul es la cardinalidad del lenguaje L = {, a, aa, aaa}?
(3) Describa, mediante una frase en castellano, el lenguaje del Ejercicio 2.
(4) Escriba todas las palabras del lenguaje L = {a2n+1 / 1 n 4}.
(5) Sea el lenguaje L = {, a, ba, abc}. Cul es el mnimo alfabeto sobre el que se puede
construir este lenguaje?
(6) Sea el lenguaje L = {0, 00, 01, 010}. Escriba una concatenacin de dos palabras que
produce otra palabra de este lenguaje.
(7) Sea el lenguaje anterior. Escriba una concatenacin de dos palabras que produce una
cadena que no es palabra del lenguaje.
(8) Sea el lenguaje del Ejercicio (6). Escriba tres sublenguajes de L, de distinta cardinalidad.
(9) Describa, mediante una frase en castellano, el lenguaje L = {anbn / 1 n 3000}.
(10) Sea = {a, b} y sea el lenguaje *. Cuntas palabras de longitud 3 tiene este lenguaje?
Y cuntas de longitud 4?
(11) Sea el lenguaje infinito L = {abn / n 1}. Escriba las tres palabras de menor longitud.
(12) Sea el lenguaje infinito L = {(ab)n / n 1}. Escriba las tres palabras de menor longitud.
(13) Sea el alfabeto = {0, 1}. Describa, por comprensin, un lenguaje infinito L sobre
(que no sea *).
(14) Describa, mediante una frase en castellano, el lenguaje definido en el ejercicio anterior.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

18

Lenguajes Formales - Ejercicios


IMPLEMENTACIN EN ANSI C o JAVA
Para cada una de los ejercicios que siguen, construir
en ANSI C O JAVA la funcin solicitada y un
programa que la pruebe con todos los datos
constantes que sean necesarios.
(15) Longitud de una cadena
(16) Determinar si una cadena dada es vaca.
(17) Concatenacin de dos cadenas.
(18) Determinar si una subcadena es Prefijo de una cadena
dada.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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}

Lineales por la derecha


P={(S
 ) | (A
vB) | (A
v) / (A,B) VN, v VT}

Ejemplo: P = {(SC0), (SD1), (C1), (DC1)}


Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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)}

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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)}

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Se llama Lenguaje generado por una gramtica G. al conjunto de todas las


palabras que derivan a partir del axioma.
L(G) = {x * : S  x}

Dos gramticas G y G son equivalentes si generan el mismo lenguaje, es decir,


si L(G) = L(G)
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

28

Gramticas Formales - Ejercicios


(1) Describa el orden en que se aplican las producciones para generar las palabras
del lenguaje formal L ={aa, aab}
(2) La produccin O  Genera la palabra vaca?
(3) Qu lenguaje formal genera la gramtica G = ({S,T}, {a,b}, {SaT, T a,
T }, S) ?
(4) Sea la gramtica formal con producciones: {SaT | bQ , Ta|b, Qa| }
a) La gramtica con estas seis producciones genera la cadena bab? Justifique
b) Cul es el lenguaje formal generado por esta gramtica? Justifique.

(5) Escriba la definicin formal y las producciones de una GR que genere el


Lenguaje Regular L = {anb / 1n3}
(6) Escriba la definicin formal y las producciones de una GR que genere el
Lenguaje Regular L = {anbn / 0n2}
(/) Indique cual es la mnima palabra del LR generado por la GR {SaS|aT, Tb}.
Escriba la sucesin de producciones que aplicara para generar la palabra aaab
(8) Escriba una GR que genere cualquier secuencia de uno o ms digitos decimales.
(9) Justifique:
a) Una GR es siempre una GIC
b) Una GIC es siempre una GR

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

29

Gramticas Formales - Ejercicios


(10) Cual es la mnima palabra generada por la GIC {SaSb | a} Cual es la palabra que le
sigue en longitud? Describa por comprensin, el LIC generado por la GIC
(11) Sea el lenguaje L = {anbn+1 / n0}. Escriba las producciones de una GIC que lo genere.
(12) Sea el lenguaje L = {a2nbn+1ar / n1, r0}. Escriba la definicin formal de una GIC que lo
genere.
(13) Dada la GIC {SaSb | ab}, determine aplicando una derivacin vertical, si la cadena
aaabbbb es una palabra del LIC generado por esta GIC. Dibuje la misma derivacin en forma
de rbol.
(14) Sea el LF infinito L = {anbcn / n 1}. Describa la Definicin Formal de una GIC que
genere este LF.
(15) Dada la GIC construida en el punto anterior, utilice DERIVACIN VERTICAL para
determinar si las siguientes cadenas son o no palabras del LF generado:
a) aaabccc
b) aabbcc
c) aaabcc
d) aabccc
e) aaaccc

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

30

Gramticas Formales - Ejercicios


(16) Supongamos un Lenguaje de Programacin en el que sus expresiones
aritmticas estn formadas por los nmeros enteros 2 y 6, el operador de
suma y siempre termina con un punto y coma. Algunas expresiones
aritmticas de este Lenguaje de Programacin son: {6; 2+2+6; } Vamos a
construir una GIC que genere la totalidad de estas expresiones aritmticas.
Para ello, debemos definir el vocabulario de noterminales, el vocabulario
de terminales, el axioma y el conjunto de producciones. Supongamos que el
vocabulario de noterminales esta formado por: S (el axioma), E (de
expresin) y T (de trmino). Los terminales son 2, 6, + y ; (punto y coma).
Las producciones de la GIC que genera el lenguaje de estas expresiones
aritmticas son: {SE; ET | E+T T2 | 6}
a) Determine, aplicando derivacin a izquierda, si 6; es una expresin correcta.
b) Determine, aplicando derivacin a izquierda, si 6+6+6+; es una expresin
correcta.
c) Determine, aplicando derivacin a derecha, si 6+6+6+; es una expresin
correcta.
d) Determine, aplicando derivacin a izquierda, si 6+6+6+2; es una expresin
correcta.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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}

Dos expresiones regulares son diferentes si representan a


diferentes lenguajes regulares
Ejemplo: a(a | b) <> (a | b)a

Expresin regular universal (ERU)


Expresin regular que representa al Lenguaje Universal sobre un
alfabeto dado.
Representa al LR que contiene la palabra vaca y todas las palabras
que se pueden formar con caracteres del alfabeto dado.
Ejemplo: = {a,b}, la ERU es (a|b)*
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Expresiones regulares extendidas


Las ERs tambin se emplean para representar datos que sern procesados
por diversas herramientas de software.
Toda herramienta de software que necesite representar ERs para su
posterior procesamiento, considera a estas expresiones como un lenguaje:
El Lenguaje de las Expresiones Regulares.
Un metalenguaje es un lenguaje que se usa para describir otro lenguaje.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Intervalos de caracteres predefinidos


. Cualquier carcter
d Un numero: [0-9]
D Todo menos un numero: [^0-9]
s Un espacio en blanco: [ x0Bf ]
S Todo menos un espacio en blanco: [^s]
w Una letra: [a-zA-Z_0-9]
W Todo menos letras: [^w]

Cuantificadores de cantidad
X?
X*
X+
X{n}
X(n,}
X{n,m}

X, una o ninguna vez


X, cero o ninguna vez
X, una o mas veces
X, exactamente n veces
X, por lo menos n veces
X, por lo menos n veces pero no mas de m veces

Operadores lgicos
XY
X|Y
(X)

X seguido de Y
XoY
X, como un grupo

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

41

Lenguajes Regulares Ejercicios ER


(1) Escriba una ER que defina el siguiente lenguaje: identificadores de
cualquier longitud que comience con a y contenga a, b o c. No pueden
terminar con c y adems no pueden contener dos c seguidas.
(2) Escriba una ER que represente al LR L = {anbn / 1n3}
(3) Describa mediante una frase sin ambigedades, el LR representado por
la ER a(b|a)b
(4) Determine si las siguientes ERs son equivalentes: aa|ab|ba , a(a|b)|ba y
ab|ba|aa. Justifique su respuesta.
(5) Escriba una ER que represente al LR: Todas las palabras sobre el
alfabeto {a,b} que tienen longitud 100 y terminan con 28 bes.
(6) Sea el LR: Todas las palabras sobre el alfabeto {a,b,c} que:
a) Comienzan con 16 aes, terminan con 16 aes y tienen una longitud total de
1200 caracteres.
b) Comienzan con 342 bes y terminan con 100 repeticiones de cualquiera de
los caracteres del alfabeto (pero siempre uno solo de ellos)

(7) Compare las ER a1000 y a*. Informe sus conclusiones.


Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

42

Lenguajes Regulares Ejercicios ER


(8) Escriba las tres palabras de menor longitud de LR representado por la ER (aba)*
(9) La cadena a24b24a24 es una palabra de LR representado por la ER (aba)*? Justifique su
respuesta.
(10) Describa, mediante una frase, el LR representado por la ER (a|b)+
(11) Sea la ER a+ba+. Describa por comprensin, el LR representado por esta ER
(12) Escriba las nicas palabras comunes a los LRs representados por las ERs (ab)* y a*b*
(13) Defina mediante una frase, el LR representado por la ER (b*ab*ab*)*
(14) Construya la ER que representa al LR: Todos los nmeros binarios que comienzan con
un 1 o con un 0. el cual puede estar seguido por una secuencia de 1s.
(15) Construya la ER que representa al LR: Todas las palabras que comienzan con una
secuencia de dos o mas 1s seguida de un 0 como ltimo carcter o que comienzan con una
secuencia de dos o ms 0s seguida de un 1 como ltimo carcter.
(16) Si el alfabeto fuera todos los dgitos decimales, Cul sera la ERU sobre ese alfabeto?
(17) Dado dos LRs representados, respectivamente, por las ERs (a|b)*a* y a24b, escriba dos
ERs que representen la unin de los dos LRs. Escriba cinco palabras del LR unin
(18) Sean los LRs representados por las ERs a*bc y b(a|b)*. Escriba la ER que representa a la
concatenacin de estos dos LRs. Escriba las cinco palabras de menor longitud del LR
concatenacin.
(19) Sea L = {anbct / n,t >= 1}. Escriba la ER que representa a L+

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Ejemplo: ab (lenguaje regular finito)


ACTIVIDAD 0a1b2  RECONOCE
b

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

La cadena abab es reconocida?


ACTIVIDAD 0a1b2a??RECHAZA

La cadena baa es reconocida?


ACTIVIDAD 0b??RECHAZA

Ejemplo: a*b (lenguaje regular infinito)


Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Falten palabras : palabras en el lenguaje que no son aceptadas por


el autmata cuando debera serlo.
Solucin  INCOMPLETA

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Autmatas Finitos No Determinitas (AFN).


Non-deterministic Finite Automaton
Permite cero, una o ms transiciones a partir de un estado con un determinado
smbolo de entrada.
Una cadena de entrada se dice que es aceptada por un AFN si existe una secuencia
de transiciones, correspondiente a la cadena de entrada, que lleva del estado inicial a
algn estado final.
Acepta transiciones vacas: el autmata puede cambiar de estado sin tener que leer
ningn smbolo de la entrada (arcos sin etiquetas entre pares de estados).

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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}

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

51

Lenguajes Regulares
Autmata Finito No Determinista
(a|b)*abb
a
a

Sea M = (Q, , q0 , F , ) un AFN,


Se define el lenguaje aceptado por el
AFN M como:
L(M) = {x * / (qo,x) F }

{0,1}

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

52

Lenguajes Regulares
Autmata Finito Determinista
(a|b)*abb

a
b

El nmero de estado de un AFN puede llegar


a ser logartmicamente menor que el nmero
de estados del mnimo AFD que reconozca el
mismo lenguaje.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

54

Lenguajes Regulares Ejercicios AF


(1) Sea el {a, b} y el LR {a, aba}
(a) Dibuje el AF que reconoce este LR
(b) Describa los diferentes casos posibles y sus actividades.

(2) Disee un AF que reconozca la ER a*bb*a


(3) Disee un AF que reconozca la ER (a|b|c|d)*
(4) Disee un AF que reconozca la ER a(ab)+
(5) Disee un AF que reconozca la ER a*|ab
(6) Escriba la definicin formal de un AF que reconozca el LR Todas las palabras sobre el alfabeto
{a,b,c} que tienen por lo menos tres letras
(7) Sea el AFD definido formalmente de la siguiente manera: M = (Q, , q0, F, ) Q={0,1,2,3};
={a,b,c}; q0=0; F={2,3}; ={0=>a=>1, 1=>c=>2, 1=>b=>3, 3=>a=>3}
(a) Describa formalmente el AFD equivalente con la completa.
(b) Escriba una ER que represente al LR reconocido por este AFD.
(c) Describa las actividades de este AFD para todos los casos posibles.

(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*

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

55

Lenguajes Incontextuales
Es un lenguaje formal.
Generado por una Gramtica Independiente de
Contexto.
Ejemplos: expresiones aritmticas, sentencias de un
lenguaje de programacin.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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!!!!!

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Lenguaje aceptado por el AP: L(M)


Es la coleccin de todas las cadenas que acepta M
Los lenguajes aceptados por los autmatas de pila incluyen los lenguajes
regulares

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/

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

61

Lenguajes Incontextuales
Ejemplo: S  aSb |
a//a

FALTA
LEER

LEO

aabb

leo / saco / pongo

PILA

a
abb

a
a

b/a/

bb

aa
b

a
b

b/a/

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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/

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

64

Lenguajes Incontextuales
Ejemplo: xnynxn

x//x

p
//#

y//

//

x/x/

s
//

/#/

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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 , )

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

66

Lenguajes Incontextuales
Ejemplo: S  zMNz
M  aMa | z
N  bNb | z

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

67

Lenguajes Incontextuales
Anlisis completo de la cadena zazabzbz que efecta
el autmata:

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

68

Lenguajes Incontextuales
Ejemplo: S  aA
A  Sb | b

/ Aa / S
/b/A
/ bS / A
b//b
a//a

p
//#

q
/S/

/#/

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

69

Lenguajes Incontextuales
Ejemplo: S  xSy |
/ S / xSy
/S/
y/y/
x/x/

p
//#

q
//S

/#/

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

71

Lenguajes Incontextuales
FALTA
LEER

Compilador LL

LEO

abcba

Ejemplo: S  aSa | bSb | c

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

72

Lenguajes Incontextuales
FALTA
LEER

Compilador LL

LEO

aabbb

Ejemplo: S  aSb | aSbb |

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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!

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

81

Lenguajes Incontextuales
Ejercicios
(2) Cual es el lenguaje que acepta el siguiente AP

0//0
0/1/

1/0/
1//1

(3) Disee el AP que reconoce el lenguaje generado por


esta gramtica:
S|A
A
 aAb | bAa | ab | ba
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

82

Lenguajes Incontextuales
Ejercicios
(4) Obtenga la gramtica G tal que L(G) =
{xyxynzy2n+1; n 0}
Solucin: SxyxA; AyAyy | zy

(5) Construya la tabla de anlisis sintctico LR para la


cadena zxzxyzyz
S  zABz
A  xAx | z
B  yBy | z

(6) Grafique y defina el AP de anlisis sintctico LL para la


siguiente gramtica:
S  AA | 0
A  SS | 1

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

La cinta sirve como dispositivo de entrada y salida as como la memoria disponible


para utilizar durante la operacin o clculos de la mquina.
Diferencias de una MT con un autmata
La cabeza lectora se puede mover a la izquierda o derecha o quedarse donde est.
Puede modificar los datos de entrada.
Puede examinar parte de los datos de entrada, modificarlos, irse a otro lugar de la cinta y
ejecutar ciertos clculos, regresar a re-examinar los datos de entrada, repetir cualquiera
de estas acciones y quizs detener el proceso antes de procesar todos los datos de
entrada.
En lugar de que un subconjunto de los estados sean estados finales o de aceptacin,
tendremos dos estados de paro que son un estado de aceptacin ha y un estado de rechazo
hr .

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

92

Mquina de Turing
Configuracin inicial

# a

b b a

# # # ...

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Rechazo de palabras por MT


Una palabra x * es rechazada por una MT T si empezando con la
configuracin inicial correspondiente a la palabra x, eventualmente se
llega al estado de rechazo hr.
Note que no es necesario procesar toda la palabra para rechazarla.
Es costumbre omitir el estado de rechazo y rechazar una palabra
cuando no existe una transicin, es decir, cuando la mquina se queda
colgada.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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)*

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

97

Mquina de Turing
Ejemplo 4: MT que acepta (a | b)*aba

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

98

Mquina de Turing
Ejemplo 5: MT que acepta palndromos sobre {a, b}.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

99

Mquina de Turing
Ejemplo 6: MT que acepta el lenguaje L = {ss | s (a + b)*}
Este lenguaje no es libre de contexto

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

100

Mquina de Turing
Ejemplo 7: MT que acepta la reversa de un string

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

101

Mquina de Turing
Ejemplo 8: MT que calcula n % 2

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

102

Mquina de Turing
Ejemplo 9: MT que copia strings

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

103

Mquina de Turing
Ejemplo 10: MT que borra un smbolo

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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).

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Si un lenguaje no es Turing-decidible se dice que es indecidible. Mas


adelante veremos lenguajes indecidibles.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

108

Mquina de Turing
Ejemplo de decidibilidad

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

No hay ningn tipo de mquina abstracta ms poderosa que


la MT (es decir, que acepte / decida clases de lenguajes ms
grandes).
La tesis de Church no ha sido ni probada ni refutada.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Otros paradigmas: clculo lambda

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

112

Mquina de Turing
Fin de ejecucin:
Estado de paro (halt)
detiene la operacin.
acepta la palabra.

Ciclo infinito o colgar la mquina


ejecucin nunca termina o no puede continuar.
la palabra es rechazada.

Un lenguaje para el que existe una Mquina de Turing que lo acepte


se dice que es un lenguaje recursivamente numerable.

Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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

Partes del proceso de compilacin:


ANALISIS  a partir del programa fuente, crea una
representacin intermedia del mismo.
SINTESIS  a partir de esta representacin intermedia,
construye el programa objeto.
Universidad Kennedy Compiladores e Intrpretes Prof. Ing. Pablo Pandolfo

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