crea tu propio lenguaje

Post on 06-Aug-2015

80 Views

Category:

Science

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CREA TU PROPIO LENGUAJE

MANU MATEOS. 3º GII-IS

amateosw@alumnos.unex.es

@manumateos

http://www.macram.es/tupropiolenguaje

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?

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.

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.

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.

TRES COMPONENTES BÁSICOS

• Analizador léxico

• Analizador sintáctico

• Analizador semántico

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

ANALICEMOS UNA FRASE

Nuestra frase

El perro verde está comiendo.

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.

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

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

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.

EN RESUMEN: ¿QUÉ PROCESO SEGUIMOS?

Diseñar lenguaje (en

papel)

Análisis léxico

Analizador

sintáctico

Analizador

semántico

Y ya.

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 .

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.

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

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

;

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

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

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

MUCHAS GRACIAS POR VUESTRA ATENCIÓN.

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

top related