Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguajes
Augusto Cortez Vásquez
Lenguajes y Compiladores
1
Augusto Cortez Vásquez
Objetivos de aprendizaje
Aprender la
especificación de un
lenguajes formal
Lenguajes y Compiladores
3
Augusto Cortez Vásquez
Lenguaje
Lenguajes y Compiladores
4
Augusto Cortez Vásquez
Características del lenguaje
Lenguajes naturales.-
Lenguajes formales.-
- Se caracteriza porque el lenguaje se define
estrictamente por reglas gramaticales preestablecidas
que no pueden cambiar posteriormente.
Lenguajes y Compiladores
7
Augusto Cortez Vásquez
Lenguaje natural
Lenguajes y Compiladores
8
Augusto Cortez Vásquez
Lenguaje formal
Void main()
{ int a,b; lenguajes de
programación
Select * from …
Lenguajes y Compiladores
9
Augusto Cortez Vásquez
Formas de describir un lenguaje
Un lenguaje es un conjunto de frases definidas por un
conjunto de reglas... Estas reglas se pueden expresar de muchas
formas. Cuando esto ocurre se dice que el lenguaje esta descrito
por comprensión. Otra forma de describir el lenguaje es
describiendo uno a uno las frases que la componen, en este caso
estamos frente a una definición del lenguaje por extensión. En
el contexto de definición por comprensión, existen varias
formas de describir un lenguaje: descripción algebraica, por
expresión regular, en forma recursiva etc
Lenguajes y Compiladores
10
Augusto Cortez Vásquez
Atributos de un buen lenguaje
a) Claridad sencillez y unidad
c) Apoyo a la abstracción
e) Entorno de programación
f) Costo de Uso
Consideramos los siguientes tipos de costo
Costo de ejecución del programa
Costo de creación, prueba y uso de programa
Costo de traducción
Costo de mantenimiento de programas
Lenguajes y Compiladores
11
Augusto Cortez Vásquez
Descripción por enumeración
Enumerando cada uno de sus
elementos, sobre todo cuando el
lenguaje es finito, en otro caso no
se podría.
Lenguajes y Compiladores
12
Augusto Cortez Vásquez
Descripción algebraica
L = { w / w VT* y w < 3 }
={ƛ, ab, ba, aa,bb, a, b }
VT={a,b} alfabeto
Lenguajes y Compiladores
15
Augusto Cortez Vásquez
Descripción mediante expresiones regulares
Lenguajes y Compiladores 17
Augusto Cortez Vásquez
Razones para estudiar los lenguajes de
programación
Lenguajes y Compiladores
19
Augusto Cortez Vásquez
Definición formal de gramática
Una gramática se define formalmente de siguiente forma:
G =( VT , VN, P, S) donde :
Convenio de notación
Las variables no terminales se escriben con letras mayúsculas, ejemplo A, B,...
Las terminales se escriben con letrasLenguajes
minúsculas y en negrita.
y Compiladores
20
Augusto Cortez Vásquez
Lenguajes y Compiladores
21
Augusto Cortez Vásquez
Lenguajes y Compiladores
22
Augusto Cortez Vásquez
Ejercicio 1
Crear un lenguaje que contenga frases
de la forma
anbancamcam n ≥ 0 m> 0
Vt={a,b,c} Vn={S, A, B }
P={ 1 S AcB
2 A aAa
3 A b
4 B aca
5 B aBa
} L={bcaca, abacaca }
S AcB bcB bcaca
S AcB aAacB abacB abacaca
Lenguajes y Compiladores
23
Augusto Cortez Vásquez
Ejercicio 2
Defina la gramática para secuencias de números enteros múltiplos de tres en binario
L={11, 110, 1001 …110100111101} 1001 1011101
Vt={0,1} VN={E0,E1,E2 }
0 1 0 1
1 0
E0 E1 E2
P={
1 : E0 1 E1 / 0 E0 / 0
2 : E1 1 E0 / 0 E2 / 1
3 : E2 1 E2 / 0 E1
}
E0 1 E1 11 Lenguajes y Compiladores
E0 1E1 10E2 10Augusto
0E1 Cortez Vásquez1001 24
Lenguajes y Compiladores
25
Augusto Cortez Vásquez
Lenguajes y Compiladores
26
Augusto Cortez Vásquez
Lenguajes y Compiladores
27
Augusto Cortez Vásquez
Lenguajes y Compiladores
28
Augusto Cortez Vásquez
Lenguajes y Compiladores
29
Augusto Cortez Vásquez
Proyecto
Objetivos
Especificar un lenguaje
Lenguajes y Compiladores
30
Augusto Cortez Vásquez
Especificar un lenguaje hipotetico L#
Ejemplo 1
Funcion Saludo()
Inicio
escribir “hola mundo”.
FIN
Lenguajes y Compiladores
31
Augusto Cortez Vásquez
Ejemplo 2
Funcion Suma()
Inicio
entero a,b.
leer a,b.
suma = a+b.
escribir suma.
FIN
Lenguajes y Compiladores
32
Augusto Cortez Vásquez
Ejemplo 3
Funcion verificapar()
Inicio
entero N.
leer N.
si(N mod 2 =0)
escribir N+“ es un numero par”.
Sino
escribir N+“ es un numero lmpar”.
FinSi
FIN
Lenguajes y Compiladores
33
Augusto Cortez Vásquez
Ejemplo 4
Funcion SumaN()
Inicio
entero N.
real suma, numero.
leer N.
suma=0.
para i desde 1 hasta N
leer numero
suma = suma +numero.
FinPara
escribir suma.
FIN
Lenguajes y Compiladores
34
Augusto Cortez Vásquez
A partir de los ejemplos
abstraemos, encontrando
similaridad en los ejemplos
Y construimos la sintaxis de
L#
Lenguajes y Compiladores
35
Augusto Cortez Vásquez
PROGRAMA:
Funcion ID()
INICIO
SD
SS
FIN
Programa Funcion ID()Inicio SD SS FIN
Lenguajes y Compiladores
36
Augusto Cortez Vásquez
SD: Sección declaración
SD:
D D* D
D*
D
SD D / D SD /ƛ
SD D SD D D
Lenguajes y Compiladores
37
Augusto Cortez Vásquez
D: declaración
D: TIPO LISTA_ID.
TIPO :
entero/real/carcter/booleano/ cadena
LISTA_ID: id / id , LISTA_ID
Lenguajes y Compiladores
38
Augusto Cortez Vásquez
Especificar un compilador
Especificar e implementar
Analizador:
Analizador lexicográfico
Analizador Sintáctico
Analizador semántico
Sintetizador
Generadlor código intermedio
Optimizador de código intermedio
Generador código objeto
Lenguajes y Compiladores
39
Augusto Cortez Vásquez
Ejercicio 3
Lenguajes y Compiladores
40
Augusto Cortez Vásquez