crea tu propio lenguaje

22

Upload: manu-mateos

Post on 06-Aug-2015

78 views

Category:

Science


0 download

TRANSCRIPT

Page 1: Crea tu propio lenguaje
Page 2: Crea tu propio lenguaje

CREA TU PROPIO LENGUAJE

MANU MATEOS. 3º GII-IS

[email protected]

@manumateos

http://www.macram.es/tupropiolenguaje

Page 3: Crea tu propio lenguaje

TODOS HEMOS PROGRAMADO ALGUNA VEZ.

• Hay cientos de lenguajes distintos, algunos de propósito general, otros de propósito específico.

• ¿Nunca habéis querido hacer algo tan específico que no existe ninguna notación para ello?

Page 4: Crea tu propio lenguaje

CREAR TU PROPIO LENGUAJE ES FÁCIL (SI SABES CÓMO)

• Hay muchas, muchas herramientas que nos permiten diseñar y desarrollar nuestro propio lenguaje y nuestro propio compilador. Todas ellas gratuitas y libres.

• Hay herramientas específicas (aunque realmente cualquiera podría valer).

• Tampoco olvidemos notaciones gráficas, para traducir diagramas a código.

Page 5: Crea tu propio lenguaje

CREAR TU PROPIO LENGUAJE ES FÁCIL (PERO CUESTA TIEMPO)

• Esto no es una masterclass.

• Asignatura de Teoría de Lenguajes, en el segundo semestre del tercer curso del Grado en Ingeniería del Software.

Page 6: Crea tu propio lenguaje

HABLEMOS DE INTÉRPRETES Y COMPILADORES, Y NO TANTO DE LENGUAJES

• Realmente con estas herramientas no diseñamos un lenguaje ni sus componentes. Eso podemos hacerlo en un papel.

• Las herramientas que menciono permiten desarrollar implementaciones informáticas de los analizadores léxico y sintáctico.

Page 7: Crea tu propio lenguaje

TRES COMPONENTES BÁSICOS

• Analizador léxico

• Analizador sintáctico

• Analizador semántico

El mejor ejemplo para ilustrarlo: nuestro propio lenguaje, el español.

Page 8: Crea tu propio lenguaje

ANALICEMOS UNA FRASE

Nuestra frase

El perro verde está comiendo.

Page 9: Crea tu propio lenguaje

ANALIZADOR LÉXICO

Nuestra frase

El perro verde está comiendo.

¿En qué nos fijamos?

• En los distintos tipos de palabras.

• En este caso: determinante, sustantivo, adjetivo, verbo.

• También reconocemos el punto y final, así como palabras reservadas.

Page 10: Crea tu propio lenguaje

ANALIZADOR SINTÁCTICO

Nuestra frase

El perro verde está comiendo.

¿En qué nos fijamos?

• En cómo podemos combinar las palabras para que la sentencia tenga sentido.

• En la sintaxis del lenguaje: su estructura. Su gramática.

Sujeto Predicado

Page 11: Crea tu propio lenguaje

ANALIZADOR SEMÁNTICO

Nuestra frase

El perro verde está comiendo.

¿En qué nos fijamos?

• En el significado de la frase. La “entendemos”, vemos si tiene sentido y actuamos en consecuencia.

Sujeto Predicado

Page 12: Crea tu propio lenguaje

EL PROCESO ES ANÁLOGO PARA CONSTRUIR UN LENGUAJE INFORMÁTICO

• Analizador léxico para reconocer palabras reservadas o tipos de palabras.

• Analizador sintáctico para reconocer distintos tipos de estructuras de nuestro lenguaje.

• Analizador semántico para asegurar que las sentencias tienen sentido.

Page 13: Crea tu propio lenguaje

EN RESUMEN: ¿QUÉ PROCESO SEGUIMOS?

Diseñar lenguaje (en

papel)

Análisis léxico

Analizador

sintáctico

Analizador

semántico

Y ya.

Page 14: Crea tu propio lenguaje

NUESTRO LENGUAJE: MOZART

• Una notación musical muy sencilla

• Devuelve un programa listo para ejecutarse… y que suene una melodía.

Por ejemplo…Mi corchea

Subir

Do sostenido corchea

Do sostenido corchea

Bajar

Si corchea

La corchea

La corchea

Sol sostenido corchea

Fa sostenido corchea

Fa sostenido corchea

Mi corchea

Re negra .

Page 15: Crea tu propio lenguaje

NUESTRO LENGUAJE: MOZART

• Aspectos léxicos. Debemos distinguir distintos tipos de palabra, como por ejemplo:• Las notas musicales (do, re, mi, fa, sol, la, si), así como las

palabras sostenido y bemol.

• Las duraciones de las notas (negra, blanca, redonda, corchea, semicorchea).

• La palabra silencio.

Page 16: Crea tu propio lenguaje

NUESTRO LENGUAJE: MOZART

• Aspectos sintácticos. Debemos reconocer, por otra parte, la sintaxis de cada instrucción.

• Algunos ejemplos:• Do negra

• Silencio blanca

• Re sostenido 1+2

• Subir 1

Page 17: Crea tu propio lenguaje

NUESTRO LENGUAJE: MOZART

nota: NOTA duracion '\n'

| NOTA VARIACIONNOTA duracion '\n'

| SILENCIO duracion '\n'

| SUBIR '\n'

| SUBIR exprint '\n'

| BAJAR '\n'

| BAJAR exprint '\n'

;

duracion: DURACIONNOTA

| exprint

;

Page 18: Crea tu propio lenguaje

CARACTERÍSTICAS SEMÁNTICAS

¡No todo vale!

Tenemos que controlar que solo procesemos lo que tenga sentido para nuestro lenguaje.

• Silencio sostenido

• Subir 0.5

Page 19: Crea tu propio lenguaje

UN EJEMPLO

Sol negra

Mi corchea

Mi corchea

Fa negra

Re corchea

Re corchea

Do corchea

Re corchea

Mi corchea

Fa corchea

Sol blanca

Sol corchea

Sol corchea

Mi corchea

Mi corchea

Fa corchea

Fa corchea

Re corchea

Re corchea

Do negra

Re negra

Do negra

Page 20: Crea tu propio lenguaje

¿QUÉ MÁS PODEMOS HACER?

• Una evolución de nuestro traductor/compilador: en vez de crear un script para hacer que suene, que genere una partitura en sintaxis Lilypond

• Un traductor Markdown a HTML.

Page 21: Crea tu propio lenguaje

MUCHAS GRACIAS POR VUESTRA ATENCIÓN.

Si queréis saber más, pasad porhttp://www.macram.es/tupropiolenguaje

Page 22: Crea tu propio lenguaje