Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE SAN MARTIN
TEORIA DE COMPILADORES
Las herramientas más exitosas son las que ocultan los detalles del algoritmo de
generación y producen componentes que pueden integrarse con facilidad al resto del
compilador. Algunas de ellas son:
DEFINICION
EN MATEMATICA, LOGICA, Y CIENCIAS DE LA COMPUTACION, UN LENGUAJE
FORMAL ES UN CONJUNTO DE CADENAS QUE CONFORMAN ALGUN PATRON /
ESTRUCTURA.
ALFABETO
ES UN CONJUNTO FINITO DE SIMBOLOS.
CADENA (PALABRA)
ES UNA SECUENCIA FINITA DE SIMBOLOS TOMADOS DE UN ALFABETO DEFINIDO,
CERO O MAS SIMBOLOS.
LENGUAJES FORMALES
LENGUAJES FORMALES
LONGITUD DE LAS CADENAS
LENGUAJES FORMALES / Operaciones con Palabras
IGUALDAD DE CADENAS
DOS CADENAS SON IGUALES SI CONTIENEN EXACTAMENTE LA MISMA SECUENCIA
DE SIMBOLOS.
LENGUAJES FORMALES
NOTACION INUSUAL
SI x ES UN SIMBOLO, ENTONCES 𝑥𝑛 DENOTA n REPETICIONES DEL SIMBOLO x
CONCATENADOS JUNTOS:
EJEMPLOS:
LENGUAJES FORMALES
PALABRA INVERSA
LENGUAJE UNIVERSAL
LENGUAJES FORMALES
LENGUAJE
ES UN CONJUNTO FINITO O INFINITO DE CADENAS DE UN ALFABETO.
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – EJEMPLOS
Solución:
Expresamos por extensión si es posible cada lenguaje:
L1 = {2,4,6,8}
L2 = {2,3,5,7}
Calcular:
▪ L1ՍL2={2,3,4,5,6,7,8}
▪ L1ՌL2={2}
▪ L1-L2={4,6,8}
▪ L1Ռ(L1-L2) = {4,6,8}
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS - CONCATENACION
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – CONCATENACION
SET CLOSURE
El cierre L* de L es el conjunto de cadenas que pueden ser expresadas como
la concatenación de cero o más (posiblemente diferentes) cadenas de L.
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – CONCATENACION
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – CONCATENACION EXPRESIONES
LENGUAJES FORMALES
REFLEXION DE UN LENGUAJE
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – EJEMPLOS 1
Solución:
Expresamos por extensión si es posible cada lenguaje:
L1 = {2,4}
L2 = {2,3}
Calcular:
▪ L1L2={2,4,2,3}
▪ L1L22={2,4,22,23,32,33}
▪ E=|L1L2|2 = 42 = 16
▪ F=(|L1 Ս (L2-L1)|)(|L1L2|) =(| {2,4} Ս ({3}|){|{2,4,2,3}|}
=(| {2,3,4} |)4
=34 = 81.
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – EJEMPLOS 2
Solución:
Expresamos por extensión si es posible cada lenguaje:
L1 = {2,4}
L2 = {2,3}
Calcular:
L1 = { ai bj cq / q=2i+j y 0≤ i,j ≤ 2}
L2 = { ai c2i/ q=2i+j y 0≤ i ≤ 2}
Calcular:
(1) L1 Ս L2 (2) L1 Ռ L2 (3) L1-L2 (4) L1L2 (5) L1
Solución:
Expresamos por extensión cada lenguaje:
L1 ai bj cq L1 ai bj cq
i=0 j=0 q=0 ԑ i=0 j=2 q=2 bbcc
i=1 j=0 q=2 acc i=1 j=2 q=4 abbcccc
i=2 j=0 q=4 aacccc i=2 j=2 q=6 aabbcccccc
i=0 j=1 q=1 bc
i=1 j=1 q=3 abccc
i=2 j=1 q=5 aabccccc
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – EJEMPLOS 3
Calcular:
(1) L1 Ս L2 (2) L1 Ռ L2 (3) L1-L2 (4) L1L2 (5) L1
Solución:
Expresamos por extensión cada lenguaje:
L2 ai c2i
i=0 ԑ
i=1 acc
i=2 aacccc
Por lo tanto,
L1={ԑ, acc, aacccc, bc, abccc, aabccccc, bbcc, abbcccc, aabbcccccc}
L2={ԑ, acc, aacccc }
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – EJEMPLOS 3
Calcular:
(1) L1 Ս L2 (2) L1 Ռ L2 (3) L1-L2 (4) L1L2 (5) L1
(4) L1L2 = {ԑ, acc, aacccc, bc, abccc, aabccccc, bbcc, abbcccc,
aabbcccccc, accacc, accaacccc, aaccccacc, aaccccaacccc,
bcacc, bcaacccc, abcccacc, abcccaacccc, aabccccccacc,
aabcccccaacccc, bbccacc, bbccaacccc, abbccccacc,
abbccccaacccc, aabbccccccacc, aabbccccccaacccc}
(5) L1 = {w|w ϵ A* y w ≠ ai bj cq y q=2i+j y i,j≥0}
LENGUAJES FORMALES
OPERACIONES CON CONJUNTOS – EJEMPLOS 4
Calcular:
L1 ai bi cj dm L2 ck dk ep
i=0 j=1 m=1 cd k=0 p=0 ԑ
i,j,m ≥ 1 abcd, aabbccdd, … k, p ≥ 1 cde, ccddee, …
L1 ai bi cj dm L2 ck dk ep
i=0 j=1 m=1 cd k=0 p=0 ԑ
i,j,m ≥ 1 abcd, aabbccdd, … k, p ≥ 1 cde, ccddee, …
▪ Necesitamos un formalismo para definir los lenguajes (las palabras que pertenecen
a un lenguaje). => Una posibilidad – Gramáticas Formales.
• Una gramática describe de forma inequívoca la estructura de las
palabras de un lenguaje.
Gramáticas Formales:
https://www.youtube.com/watch?v=siMdRFvK2kk
GRAMATICA FORMAL
GRAMATICA FORMAL / PRODUCCIONES
DEFINICION DE PRODUCCION
Sea ∑ un alfabeto. Una producción, o regla de producción, o regla de
derivación, o regla de escritura, es un par ordenado (x,y), también
representado por x ::= y, tal que x ϵ ∑+ e y ϵ ∑*.
DERIVACIONES
E → E +E | (E*E) | (E) | -E | id
(gramática para expresiones aritméticas, donde
el no terminal E representa una expresión.)
GRAMATICA FORMAL / ARBOL DE DERIVACION
DERIVACION
Es la Aplicación de las Producciones de una Gramática para obtener una
cadena de terminales.
Tipos de Derivación
1. S → ASB
2. A→b
3. aaA → aaBB
4. S→d
5. A → aA
6. B → dcd
S = Símbolo Inicial
ASB = Símbolos No terminales
abcd = Símbolos Terminales
GRAMATICA FORMAL / ARBOL DE DERIVACION
▪ Paso 2: Por medio de la regla 1, S deriva en ASB, los cuales son No Terminales.
A S B
A S B
a A S
A S B
▪ Paso 4: la ‘a’ como es terminal no puede derivarse,
pero el nodo que le sigue por la izquierda A si puede
derivarse mediante la regla 2 que produce b. a A
b
Seguimos con la derivación del Nodo S…
GRAMATICA FORMAL / ARBOL DE DERIVACION
Derivación por la Izquierda
A S B
a A d
S
b
A S B
▪ Paso 6: Finalmente derivamos B mediante la
regla 6.
a A d d c d
1. S → ASB
2. A→b
3. aaA → aaBB
4. S→d
5. A → aA
6. B → dcd
S
GRAMATICA FORMAL / DERIVACION SIN USAR EL ARBOL
A S B
A S B
d c d
GRAMATICA FORMAL / DERIVACION SIN USAR EL ARBOL
A S B
d d c d
A S B
a A d d c d
GRAMATICA FORMAL / DERIVACION SIN USAR EL ARBOL
A S B
a A d d c d
Tarea
Realizar la derivación por la derecha de esta gramática sin usar el árbol.