Vous êtes sur la page 1sur 8

Lenguajes y gramáticas

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

Cadenas de caracteres Cadenas de caracteres


 Cadena de caracteres: Formada por la  Concatenación: Sean x y z dos cadenas, la concatenación xz
se forma escribiendo la cadena x seguida de la cadena z.
concatenación de caracteres.
Ejemplo: x = abc, z = deac, xz = abcdeac

Ejemplo: Sea el alfabeto o vocabulario  xλ = λx = x = abc


{a, b}
 Longitud de una cadena: Número de caracteres que la
a, b, ab, aaa, aab, aba, aaa, ….. forman.

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

Cadenas de caracteres Cadenas de caracteres


 Cabeza propia de una cadena: Si z no es la cadena nula.  Producto cartesiano: Sean A y B dos conjuntos de cadenas de
caracteres, se puede realizar su producto cartesiano AB, considerando
los pares de cadenas del producto resultante como concatenados.
Ejemplo: Si x = abc = wz
cabeza(x) = λ, a, ab AB = {xy | (x ∈ A) ∧ (y ∈ B)}

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

 Una gramática especifica formalmente un


lenguaje.

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

Gramáticas: Clasificación de Gramáticas: Clasificación de


Chosmky Chosmky
 Gramática tipo 1 o sensible al contexto: Las reglas de P  Gramática tipo 1 o sensible al contexto
tienen la forma
Ejemplo:
αAβ → αγβ
G2 = ({S, B, C}, {a, b, c}, S, P)
donde
A∈N N = {S, B, C}
α, β ∈ (N ∪ T)* T = {a, b, c}
γ ∈ (N ∪ T)+ Las producciones son:
S → aSBc bB → bb S → aBC bC → bc
Se llama sensible al contexto ya que cambia A por γ, pero sólo en el
contexto formado por α … β.
CB → BC cC → cc aB → ab
23 24

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

Gramáticas: Clasificación de Gramáticas: Clasificación de


Chosmky Chosmky
 Gramática tipo 3 o regular: Las reglas de P tienen la forma  Gramática tipo 3 o regulares

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

Vous aimerez peut-être aussi