Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
COMPILADORES
Unidad II (2): Análisis léxico Objetivo: Desarrollar todos los
conceptos básicos de gramáticas y
lenguajes para la teoría de
Flor Prof. Flor Narciso compiladores.
GIDyC-Departamento de Computación
LABSIULA-Escuela de Ingeniería de Sistemas
Facultad de Ingeniería
Universidad de Los Andes
fnarciso@ula.ve
1 2
Ejemplo: |x| = 3
Cadena nula: λ
3 4
1
Cadenas de caracteres Cadenas de caracteres
Potencia de una cadena: Se forma Cabeza de una cadena: Todas las subcadenas formadas tomando
uno o varios caracteres por la izquierda.
concatenando una cadena consigo misma
tantas veces como indica el exponente. Ejemplo: Si x = abc
cabeza(x) = λ, a, ab, abc
Ejemplo: Si x = abc Cola de una cadena: Todas las subcadenas formadas tomando uno o
varios caracteres por la derecha.
x0 = λ
Ejemplo: Si x = abc
x1 = abc cola(x) = λ, c, bc, abc
x2 = abcabc
En ambos casos se descompone la cadena x en dos subcadenas w y
z, siendo x = wz.
5 6
Cola propia de una cadena: Si w no es la cadena nula. Ejemplo: Si A = {a, b, cn} y B = {d, e}
AB = {ad, ae, bd, be, cnd, cne}
Ejemplo: Si x = abc = wz
cola(x) = λ, c, bc A{λ} = {λ}A = A
7 8
2
Cadenas de caracteres Cadenas de caracteres
Potencia de conjuntos: Producto del conjunto consigo mismo. Cierre transitivo: El cierre transitivo de un conjunto A, denotado A+, se define
como la unión de sus potencias crecientes, comenzando con la potencia
A0 =λ unidad.
A1 =A
A+ = A 1 ∪ A 2 ∪ A3 ∪ …. An ∪ ….
A2 = AA
…
An = A n-1A Ejemplo: A = {a, b}
A+ = {a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, …}
para n > 0
Cierre transitivo y reflexivo: El cierre transitivo y reflexivo de un conjunto A,
denotado A*, se define como la unión de sus potencias crecientes, comenzando
Ejemplo: A = {a, b} con la potencia cero.
A0 =λ
A1 = A = {a, b} A* = A 0 ∪ A 1 ∪ A2 ∪ …. An ∪ ….
A2 = AA = {aa, ab, ba, bb}
A3 = A 2A = {aaa, aab, aba, abb, baa, bab, bba, bbb} Ejemplo: A = {a, b}
A* = {λ, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, …}
9 10
Lenguaje Lenguaje
Chomsky definió un lenguaje desde el punto de vista Elementos de un lenguaje:
lingüístico (válida para un lenguaje de programación ) Diccionario: Indica los significados de las palabras del lenguaje.
como:
Conjunto de reglas: Describe las sentencias válidas del lenguaje.
Este conjunto de reglas forma la gramática del lenguaje.
Un conjunto finito o infinito de oraciones, cada una de
ellas de longitud finita y construidas por concatenación a
partir de un número finito de elementos. Sintaxis: Estudio de la estructura del lenguaje.
Desde un punto de vista informático: Semántica: Estudio del significado de las frases de un
lenguaje y su interpretación.
Un lenguaje de programación es una notación formal para
describir algoritmos o funciones que serán ejecutadas en
una computadora.
11 12
3
Lenguaje Lenguaje
Cadena o sentencia del lenguaje: Secuencia ordenada de Formas para describir un lenguaje:
símbolos de un alfabeto determinado. Enumeración: Enumeración de todas las cadenas de símbolos que
constituyen el lenguaje.
Ejemplo: Sea A = {a, b, c}
Símbolo: Item elemental del vocabulario del lenguaje que
se emplea para formar las cadenas del lenguaje, L1 = {ab, ac, ba, ca}
denominadas sentencias. Descripción algebraica: Fórmula algebraica
Ejemplo: A = {a}
L2 = {an | n ∈ N} = {λ, a, aa, aaa, aaaa, ….}
Alfabeto o vocabulario: Conjunto de todos los símbolos
Ejemplo: A = {a, b}
que forman las sentencias del lenguaje.
L2 = {an bn | n ∈ N +} = {ab, aabb, aaabbb, aaaabbbb, ….}
13 14
Lenguaje Gramática
Formas para describir un lenguaje: Una gramática desde el punto de vista lingüista
Conjunto con una propiedad: La propiedad se usa para decidir si
una cadena pertenece o no al lenguaje. (válido para los lenguajes de programación) debe
Ejemplo: Sea A = {a, b, c, d} de cumplir dos objetivos:
L3 = {x | (|x| = 3) ∧ (x ∈ A*} Definir si una oración pertenece o no al lenguaje
Describir estructuralmente las sentencias.
15 16
4
Gramática Gramática
Definición: Una gramática, formalmente, Vocabulario no terminal N: Conjunto de
se define como una cuádrupla, formada por símbolos introducidos como elementos auxiliares
un vocabulario no terminal N, un para la definición de las producciones de la
gramática y que no figuran en las sentencias del
vocabulario terminal T, un símbolo inicial lenguaje.
S, y un conjunto de producciones o reglas
de derivación P
Vocabulario terminal T: Todas las sentencias del
G = ( N, T, S, P) lenguaje definido por la gramática están formadas
por símbolos de T.
17 18
Gramática Gramática
Símbolo inicial: Es un no terminal a partir del cual se Lenguaje generado por una gramática:
obtienen todas las sentencias del lenguaje generado por la L(G).
gramática aplicando las reglas de ésta.
Reglas de la gramática: Son transformaciones de cadenas Una sentencia pertenece a un lenguaje L(G)
de símbolos, que pueden aplicarse sucesivamente desde el si:
símbolo inicial hasta obtener una cadena de terminales que Está compuesta de símbolos terminales
constituya una sentencia del lenguaje. Se representa :
Puede derivarse del símbolo inicial S mediante
A a (a es una cadena de terminales y / o no terminales).
las producciones P de G.
19 20
5
Gramáticas: Clasificación de
Gramática Chosmky
Ejemplo: Gramática tipo 0 o con estructura de frase: Las reglas
G1 = ({S}, {a, b}, S, P) de P tienen la forma
N = {S}
T = {a, b} α→β
S=S
P={ donde
S → ab α ∈ (N ∪ T)+
S → aSb}
β ∈ (N ∪ T)*
El lenguaje definido por la gramática G, denotado L(G), es el
conjunto de cadenas de símbolos terminales generadas partiendo
del axioma S empleando las reglas del conjunto P.
21 22
6
Gramáticas: Clasificación de Gramáticas: Clasificación de
Chosmky Chosmky
Gramática tipo 2 o de contexto libre: Las reglas de P Gramática tipo 2 o de contexto libre
tienen la forma
Ejemplo:
A→α
G3 = ({S, A, B}, {a, b}, S, P)
donde
A∈N N = {S, A, B}
α ∈ (N ∪ T)* T = {a, b}
Las producciones son:
Se llama de contexto libre porque se puede cambiar A por α,
independientemente del contexto en el que aparezca A. S → aB S → bA A→a A → aS
A → bAA B→b B → bS B→ aBB
25 26
Ejemplo:
Regulares por la izquierda
A → aB o bien A → a
G4 = ({S, A, B}, {0, 1}, S, P)
Regulares por la derecha
A → Ba o bien A → a N = {S, A, B}
T = {0, 1}
donde Las producciones son:
A, B ∈ N S → 0A S → 1B S → 0 A → 0A
a∈T A → 0S A → 1B B → 1B
B→1 B→0
27 28
7
Gramáticas: Clasificación de
Chosmky
29