View
80
Download
0
Category
Preview:
Citation preview
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
Recommended