Title: Paradigmas y Perspectivas Futuras en Computaci
1Introducción a la Teoría de Lenguajes
Curso de Compiladores
Preparado por Manuel E. Bermúdez, Ph.D. Profesor
Asociado University of Florida
2Introducción a la Teoría de Lenguajes
Definición Un alfabeto (o vocabulario) S es un
conjunto finito de símbolos. Ejemplo Alfabeto
de Pascal - / lt (operadores)? begin
end if var (Palabras reservadas)? ltidentifiergt
(Identificadores)? ltstringgt (hileras)? ltinte
gergt (enteros)? , ( ) (puntuación)?
Nota Todos los identificadores son representados
por un símbolo, porque S debe ser finito.
3Introducción a la Teoría de Lenguajes
Definición Una secuencia t t1t2tn de símbolos
de un alfabeto S es una hilera. Definición La
longitud de la hilera t t1t2tn (se denota
t) es n. Si n 0, la hilera es e, la hilera
vacía. Definición Dadas las hileras s
s1s2sn t t1t2tm, la concatenación de s
y t se denota st, y es la hilera
s1s2snt1t2tm.
4Introducción a la Teoría de Lenguajes
Nota eu u ue, uev uv, para hileras
cualesquier u,v (incluyendo e)? Definición S
es el conjunto de todas las hileras de símbolos
de S. Nota S es llamada la clausura transitiva
y reflexiva de S. S está descrito por un grafo
(S, ), donde denota concatenación, y hay un
nodo de inicio designado, e.
5Introducción a la Teoría de Lenguajes
Ejemplo S a, b. (S, ) S es
contablemente infinito no se puede calcular todo
S. Solo se pueden calcular subconjuntos finitos
de S. Pero SÍ se puede calcular si una hilera
dada pertenece a S.
aa
a
a
aba
b
a
ab
a
b
abb
e
b
ba
a
b
b
bb
6Introducción a la Teoría de Lenguajes
- Ejemplo S Vocabulario de Pascal.
- S Todos los posibles programas potenciales
de Pascal, i.e. todas las posibles entradas al
compilador de Pascal. - Deseamos especificar L ? S, los programas de
Pascal correctos. - Definición Un lenguaje L sobre un alfabeto S es
un subconjunto de S.
7Introducción a la Teoría de Lenguajes
- Ejemplo S a, b.
- L1 ø es un lenguaje
- L2 e es un lenguaje
- L3 a es un lenguaje
- L4 a, ba, bbab es un lenguaje
- L5 anbn / n gt 0 es un lenguaje
- donde an aaa, n veces
- L6 a, aa, aaa, es un lenguaje
- Nota L5 es un lenguaje infinito, pero descrito
finitamente.
8Introducción a la Teoría de Lenguajes
- ESTE ES EL OBJETIVO PRINCIPAL DE LA
ESPECIFICACION DE LENGUAJES - Describir (en forma finita) un lenguaje de
programación (infinito), y proporcionar un
algoritmo de prueba-de-inclusión correspondiente
(finito).
9Constructores de Lenguajes
Definición La concatenación (o producto) de dos
lenguajes L1 y L2, se denota L1L2, y es el
conjunto uv u?L1, v?L2. Ejemplo L1 e,
a, bb, L2 ac, c L1L2 ac, c,
aac, ac, bbac, bbc ac, c,
aac, bbac, bbc
10Constructores de Lenguajes
- Definición Ln LLL (n veces),
- y L0 e.
- Ejemplo L a, bb
- L3 aaa, aabb, abba,
abbbb, bbaa, bbabb, bbbba, bbbbbb
11Constructores de Lenguajes
Definición La unión de dos lenguajes L1 y L2 es
el conjunto L1 L2 u u?L1 v
v?L2 Definición La clausura de Kleene (L) de
un lenguaje es el conjunto L U Ln, n
gt0. Ejemplo L a, bb L cualquier hilera
compuesta de as y bbs Definición La clausura
transitiva(L) de un lenguaje L es el conjunto L
U Ln, n gt 1.
n
n
12Constructores de Lenguajes
Nota En general, L L U e, pero L ? L -
e. Por ejemplo, considerar L e.
Entonces e L ? L e e e ø.
13Gramáticas
- Objetivo Proporcionar un mecanismo finito para
la descripción de lenguajes infinitos. - Método Se da un subgrafo (S, ?) de (S, ), y
un nodo inicial S, tal que los nodos accesibles
(desde S) son las hileras en el lenguaje.
14Gramáticas
Ejemplo S a, b L anbn / n gt 0
a
aaa
aaba
a
aa
a
aab
b
b
b
a
ab
a
aabb
e
a
ba
bbaa
a
b
a
b
bba
b
bb
bbab
b
bbb
b
15Gramáticas
Definición gt (deriva) es una relación
definida por un conjunto finito de reglas
de re-escritura conocidas como producciones. Defi
nición Dado un vocabulario V, una producción es
un par (u, v) ? V x V, denotado u ? v. u es
llamada la parte-izquierda v es llamada la
parte-derecha.
16Gramáticas
Ejemplo Pseudo-Inglés. V Sentence, NP, VP,
Adj, N, V, boy, girl, the, tall,
jealous, hit, bit Sentence ? NP VP (una
producción)? NP ? N NP ? Adj NP N ?
boy N ? girl Adj ? the Adj ?
tall Adj ? jealous VP ? V NP V ?
hit V ? bit Nota El inglés es demasiado
complicado para ser descrito de esta manera.
17Gramáticas
Definición Dado un conjunto finito de
producciones P ? V x V, se define la
relación gt tal que para todo ?, ß, u, v ?
V , ?uß gt ?vß sii (u,v) ? P es una
producción. Ejemplo Sentence ? NP
VP Adj ? the NP ? N Adj ? tall
NP ? Adj NP Adj ? jealous N ?
boy VP ? V NP N ? girl V ?
hit V ? bit
18Gramáticas
- Sentence gt NP VP
- gt Adj NP VP
- gt the NP VP
- gt the Adj NP VP
- gt the jealous NP VP
- gt the jealous N VP
- gt the jealous girl VP
- gt the jealous girl V NP
- gt the jealous girl hit NP
- gt the jealous girl hit Adj NP
- gt the jealous girl hit the NP
- gt the jealous girl hit the N
- gt the jealous girl hit the boy
19Gramáticas
Definición Una gramática es una tupla de 4
elementos, G (F, S, P, S), donde F es un
conjunto de no-terminales, S es un conjunto de
terminales, V F U S es el vocabulario de la
gramática, S ? F es el símbolo de inicio (o
meta), y P ? V x V es un conjunto finito de
producciones. Ejemplo Gramática para anbn
/ n gt 0 G (F, S, P, S), donde F S, S
a, b, y P S ? aSb, S ? e
20Gramáticas
Derivaciones S gt aSb gt aaSbb gt aaaSbbb gt
aaaaSbbbb ? e ab aabb
aaabbb aaaabbbb Nota Normalmente, las
gramáticas son dadas por un simple listado de las
producciones.
gt
gt
gt
gt
gt
21Convenciones gramaticales
- convención
del TWS - Letra mayúscula (identificador) nonterminal
- Letra minúscula(hilera) terminal
- Letra griega minúscula hileras en V
- La parte izquierda de la primera producción se
considera el símbolo de inicio, ej. - S ? aSb
- S ? e
- La parte izquierda se omite si es la misma que
para la producción anterior, ej. - S ? aSb
- ? e
22Gramáticas
Ejemplo Gramática para identificadores.
Identificador ? Letra ? Identificador
Letra ? Identificador Dígito Letra
? a ? A ? b ? B .
. ? z ? Z Dígito ? 0 ?
1 . . ? 9
23Gramáticas
Definición El lenguaje generado por la gramática
G, es el conjunto L(G) ? ? S S
gt ? Definición Una forma sentencial
generada por una gramática G es cualquier hilera
? tal que S gt ? . Definición Una sentencia
generada por una gramática G es cualquier forma
sentencial ? tal que ? ? S.
24Gramáticas
Ejemplo formas sentenciales S gt aSb gt
aaSbb gt aaaSbbb gt aaaaSbbbb gt e
ab aabb aaabbb
aaaabbbb Lemma L(G) ? es una
sentencia Prueba Trivial.
gt
gt
gt
gt
gt
sentencias
25Gramáticas
- Ejemplo A ? aABC
- ? aBC
- aB ? ab B se reemplaza con b,
pero - bB ? bb solamente en el
contexto bC ? bc de
tener a ó b a la izquierda - CB ? BC
- cC ? cc
-
26Gramáticas
Derivación A gt aABC gt aaABCBC gt
aBC aaBCBC
aaaBCBCBC
abC aabCBC aaaBBCBCC
abc aabBCC
aaaBBBCCC
aabbCC aaabBBCCC
(2)? aabbcC
aaabbbCCC
aabbcc aaabbbcCC
(2)?
aaabbbccc L (G) anbncn n gt 1 sensible
al contexto
gt
gt
gt
gt
gt
gt
- A ? aABC
- ? aBC
- aB ? ab
- bB ? bb
- bC ? bc
- CB ? BC
- cC ? cc
-
gt
gt
gt
gt
gt
gt
gt
gt
gt
gt
27La Jerarquía de Chomsky
Una jerarquía de gramáticas, de los lenguajes que
generan, y de las máquinas que aceptan esos
lenguajes.
28La Jerarquía de Chomsky
Tipo Nombre del Lenguaje Nombre de la Gramática Restricciones sobre la Gramática Máquina Aceptadora
0 Recursivamente Enumerable Sistema de re-escritura sin restricciones Ninguna Máquina de Turing
1 Lenguaje sensible al contexto Gramática sensible al contexto Para todo ???, ?? Máquina Acotada Lineal
2 Lenguaje libre de contexto Gramática libre de contexto Para todo ???, ??F. Autómata de pila (parser)
3 Lenguaje Regular Gramática Regular Para todo ???, ??F, ??? U ?FU? Autómata de Estado Finito (lexer)
29Jerarquía del Chomsky
0 Lenguajes Recursivamente Enumerables
1 Lenguajes Sensibles al Contexto
Trataremos con los lenguajes de tipo 2 (sintaxis)
y los de tipo 3 (léxico).
2 Lenguajes Libres de Contexto
3 Lenguajes Regulares an n gt 0
anbn ngt0
anbncn ngt0
Lenguaje natural ?