Está en la página 1de 40

Lenguajes y Compiladores

Actividad sincrónica en clase


ASC 1

Lenguajes
Augusto Cortez Vásquez

Lenguajes y Compiladores
1
Augusto Cortez Vásquez
Objetivos de aprendizaje

Aprender la
especificación de un
lenguajes formal

Matematicas Discretas - Dialogo de


saberes Augusto Cortez 2
Vásquez
Introducción

Aunque es probable que poca gente se


dedicara a diseñar un lenguaje de
programación y menos aun a construir su
compilador, existen poderosas razones que
motiven a los alumnos a estudiar un curso de
esta naturaleza, puesto que muchas de las
ideas y técnicas que se estudian en la teoría
de lenguajes pueden aplicarse a áreas afines
como editores de textos, o programas de
reconocimiento de patrones.

Lenguajes y Compiladores
3
Augusto Cortez Vásquez
Lenguaje

El lenguaje es un sistema de signos a través del cual los


individuos se comunican entre sí. Estos signos pueden
ser sonoros (como el habla), corporales (como los
gestos) o gráficos (como la escritura). En su origen
etimológico, el término lenguaje proviene del latín
lingua, asociado al órgano de la “lengua”

Lenguajes y Compiladores
4
Augusto Cortez Vásquez
Características del lenguaje

Como fenómeno humano, algunas de las principales características


del lenguaje son las siguientes:

•Es una capacidad innata del ser humano.


•Es universal.
•Es racional.
•En sus formas concretas, el lenguaje es aprendido en el seno de una
cultura y/o por medio de la experiencia.
•Resulta de un proceso de codificación.
•Surge de la convención social y, al mismo tiempo, requiere de una
convención para ser comprendido.
•Se expresa mediante sonidos, signos gráficos y/o signos corporales.
•Permite intercambiar información entre dos o más individuos.
•Es flexible, es decir, se modifica según las transformaciones en el
entorno sociocultural.
Lenguajes y Compiladores
5
Augusto Cortez Vásquez
Lenguajes y Compiladores
6
Augusto Cortez Vásquez
TIPOS DE LENGUAJES

Lenguajes naturales.-

- Se caracterizan porque están cambiando


constantemente. Aparecen construcciones que luego
integraran al conjunto del lenguaje
- Las reglas se definen o se ajustan después de
definir el lenguaje.
- Son más rigurosos pues están definidos por reglas
gramaticales preestablecidas.

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

Español Frances Italiano


Música Teatro

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

b) Naturalidad para la aplicación

c) Apoyo a la abstracción

d) Facilidad para verificar programas

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.

L= {a, aa, aaa ...}

Lenguajes y Compiladores
12
Augusto Cortez Vásquez
Descripción algebraica

Algunos lenguajes sobretodo los infinitos


pueden describirse mediante una propiedad
de sus elementos.

L ={anb / n >0 } = {ab, aab, aaab, ...}

L ={abn / n >0 } = {ab, abb, abbb, ...}


Lenguajes y Compiladores
13
Augusto Cortez Vásquez
Descripción por propiedades

Se utiliza una propiedad para describir L

L = { w / w  VT* y w  < 3 }
={ƛ, ab, ba, aa,bb, a, b }

VT={a,b} alfabeto

VT*={ƛ, “a”,”b”, “abb” }


Lenguajes y Compiladores
14
Augusto Cortez Vásquez
Descripción gramatical

Sea G una gramática, definimos el lenguaje


definido por una gramática y la denotamos L(G)
de la siguiente forma:

L(G) ={w / S * w, y w  Vt* } ,

Lenguajes y Compiladores
15
Augusto Cortez Vásquez
Descripción mediante expresiones regulares

Si r es expresión regular, el conjunto de secuencias


generadas por r es denominado Lenguaje regular y lo
denotamos L(r).

Para r = a*b , se tiene L(r) = {b, ab, aab, aaab,...}

Esto denota el conjunto de frases de cero o mas letras


a, que terminan con una b.

r = a b* , se tiene L(r) = {a, ab, abb, abbb,...}


Esto denota el conjuntoLenguajes
de y frases
Compiladores
de cero o mas letras
16
Augusto Cortez Vásquez
b, que comienzan con una a.
Descripción mediante un autómata
Si M es un autómata finito, al conjunto de
secuencias que reconoce M lo denotamos
como L(M).

Lenguajes y Compiladores 17
Augusto Cortez Vásquez
Razones para estudiar los lenguajes de
programación

a) Mejorar la habilidad para desarrollar algoritmos eficaces.

b) Mejorar el uso del lenguaje de programación disponible

c) Hacer posible una mejor elección del lenguaje de programación a


utilizar

d) Facilitar el diseño de un nuevo lenguaje

a) Acrecentar el propio vocabulario con construcciones útiles sobre


programación

a) Facilitar el aprendizaje de un nuevo


Lenguajes lenguaje
y Compiladores
18
Augusto Cortez Vásquez
GRAMATICA
Una gramática es un instrumento que se utiliza
para especificar la sintaxis de un lenguaje. La
gramática de un lenguaje describe las reglas
para verificar el orden estructural de las frases
que pertenecen al lenguaje. La gramática no
describe la semántica o significado de las
distintas proposiciones.

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 :

VT : conjunto finito de símbolos terminales del lenguaje


VN : conjunto finito de símbolos no terminales
P : conjunto finito de reglas de producción
S : Símbolo distinguido o axioma inicial a partir del cual
se reconocerán las secuencias de L aplicando
sucesivamente las reglas de producción.

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

Especificar y construir su compilador

Lenguajes y Compiladores
30
Augusto Cortez Vásquez
Especificar un lenguaje hipotetico L#

Damos algunos ejemplos de programas en 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

Describa la sintaxis para lenguaje de


sentencias de asignación de Java

Lenguajes y Compiladores
40
Augusto Cortez Vásquez

También podría gustarte