You are on page 1of 3

Realizar una investigacin documental sobre las herramientas computacionales que existen

para el diseo de un lenguaje de programacin y de un compilador. Posteriormente, elaborar


una reflexin sobre dicha informacin con la finalidad de participar en este foro. Recuerde que
siempre debe indicar las citas y las referencias correspondientes de donde se obtuvo esta
informacin.

Previo a abordar el tema de las herramientas para el diseo de un lenguaje de


programacin y un compilador hay que comprender el significado de ambos.
Jess Rodrguez (2003) en su libro de Introduccin a la Programacin nos da
una muy buena explicacin del significado de un lenguaje de programacin y lo
que lo compone.
Cada ordenador entiende un cierto conjunto de instrucciones
elementales (el lenguaje maquina), no obstante para facilitar la tarea del
programador se dispone tambin de lenguajes de alto nivel ms fciles
de manejar y que no dependen del diseo especifico del ordenador.
Para definir un lenguaje de programacin es necesario especificar:

Conjunto de smbolos y palabras clave utilizables


Reglas gramaticales para construir sentencias (instrucciones,
ordenes) sintctica y semnticamente correctas.
a) Sintaxis. Conjunto de normas que determinan como
escribir las sentencias del lenguaje.
b) Semntica. Interpretacin de las sentencias. Indica el
significado de las mismas. (p. 4)

Las reglas gramaticales que se necesitan seguir para la construccin de


sentencias computacionales como se nos mencion previamente son muy
importantes a la hora de indicar instrucciones a una computadora ya que sta
trabaja bajo ciertas normas previamente establecidas, es por ello de que se
deben respetar las reglas sintcticas y semnticas. Para facilitar el anlisis de
stas reglas y que el compilador definido segn Sergio Rojas (2005) como
aquel traductor que tiene como entrada una sentencia en lenguaje formal y
como salida tiene un fichero ejecutable, es decir, realiza una traduccin de un
cdigo de alto nivel a cdigo no tenga problemas para ejecutar las ordenes y
sean efectivas de realizar para el procesador.
Las herramientas que podemos utilizar para que estas reglas se respeten y que
el lenguaje de programacin se convierta en lenguaje maquina por medio del
compilador, Alfred Aho, Monica Lam, Rivi Sethi & Jeffrey Ullman (2008) nos las
clasifican en su libro Compiladores de manera general de la siguiente forma:
Al igual que el desarrolladores de software, el desarrollador de
compiladores puede utilizar para su beneficio entornos de desarrollo de

software modernos que contienen herramientas como editores de


lenguaje, depuradores, administradores de versiones, profilers,
ambientes seguros de pruebas, etctera. Adems de estas herramientas
generales se han creado herramientas ms especializadas para ayudar a
implementar las diversas fases de un compilador, algunas de uso comn
son:
1. Generadores de analizadores sintcticos (parsers), que producen
de manera automtica analizadores sintcticos a partir de una
descripcin gramatical de un lenguaje de programacin.
2. Generadores de escneres, que producen analizadores de lxicos a
partir de una descripcin de los tokens de un lenguaje utilizando
expresiones regulares.
3. Motores de traduccin orientados a la sintaxis, que producen
colecciones de rutinas para recorrer un rbol de anlisis sintctico y
generar cdigo intermedio.
4. Generadores de generadores cdigo, que producen un generador
de cdigo a partir de una coleccin de reglas para traducir cada
operacin del lenguaje intermedio en el lenguaje mquina para una
mquina destino.
5. Motores de anlisis de flujos de datos, que facilitan la
recopilacin de informacin de cmo se transmiten los valores de una
parte de un programa a cada una de las otras partes.
6. Kits (conjuntos), de herramientas para la construccin de
compiladores, que proporcionan un conjunto integrado de rutinas para
construir varias fases de un compilador. (p. 12)

Por otra parte, Sergio Glvez (2005) en Traductores y Compiladores nos


introduce otra herramienta a la que denomina meta compiladores y las
define de la siguiente manera.
Un meta compilador es un compilador de compiladores. Se trata de un
programa que acepta como entrada la descripcin de un lenguaje y
produce el compilador de dicho lenguaje. Hoy por hoy no existen meta
compiladores completos, pero si parciales en los que se acepta como
entrada una gramtica de lenguaje y se genera un autmata que
reconoce cualquier sentencia de lenguaje. A este autmata podemos
aadirle cdigo para completar el resto del compilador. Ejemplos de
meta compiladores son Lex, YACC, Flex, BISON, JavaCC, JLex, Cup,
PCCTS, Medise, etc.
Los meta compiladores se suelen dividir entre los que pueden trabajar
con gramticas de contexto libre y los que trabajan con gramticas
regulares. Los primeros se dedican a reconocer la sintis del lenguaje y

los segundos trocean los ficheros fuente y lo dividen en palabras. (p.


10).
Este tipo de herramientas son muy tiles en cuando es necesario el diseo y la
construccin de un lenguaje de programacin, es por ello que Sergio tambin
explica la funcionalidad de manera general de algunas de las herramientas
mencionadas previamente.
PCLex es un meta compilador que genera la parte del compilador
destinada a reconocer las palabras reservadas.
PCYACC es otro meta compilador que genera la parte del compilador
que informa sobre si una sentencia del lenguaje es vlida o no.
JAVACC es un meta compilador que ana el reconocimiento de palabras
reservadas y la aceptacin o rechazo de sentencias de un lenguaje.
PCLex y PCYACC generan cdigo C y admiten descripciones de un
lenguaje mediante gramticas formales, mientras que JAVACC Produce
cdigo java y admite descripciones de lenguajes expresadas en notacin
BNF (Backus Naur Form). (p. 10).
Estas herramientas han sido bastante utilizadas para la construccin de
lenguajes de programacin, sobre todo aquellos que son especializados en
lenguajes especficos para hardware especfico como sistemas embebidos,
aunque pueden ser utilizadas para lenguajes ms robustos con mucha mayor
capacidad de desarrollo. Es indispensable conocer sobre la finalidad de estas
herramientas y el entorno en que desempean debido a que ser til para el
uso posterior en el curso.
Referencias.
Introduccin a la programacin. Teora y Prctica. Jess Javier rodrguez Sala
2003. Pgina 4.
Alfred Aho, Monica Lam, Rivi Sethi & Jeffrey Ullman (2008). Compiladores:
Principios, tcnicas y herramientas. (2da Ed.) Pearson. Pgina 19.
Traductores y Compiladores Con Lex/Yacc, JFlex/Cup Y Javacc. Sergio Glvez
Rojas 2005. Pgina 3, 10.

You might also like