1. PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR
“SEDE IBARRA”
ESCUELA DE INGENIERIA
CARRERA SISTEMAS
NOMBRE: IVAN BOLAÑOS
NIVEL: QUINTO
HERRAMIENTAS PARA LA CONSTRUCCIÓN DE PROCESADORES DE LENGUAJE.
Utilidades y Generadores de Procesadores de Lenguajes
A continuación se muestran algunas de las herramientas disponibles que pueden utilizarse para la
realización de la Práctica de Procesadores de Lenguajes. Todas estas herramientas funcionan bajo
Windows, aunque se puede utilizar, si se desea, cualquier otra herramienta.
Herramienta Lenguaje Descripción
Bison C Generador de Analizadores Sintácticos Ascendentes tipo YACC
COCO/R C/C++
Generador de Analizadores Léxicos y Sintácticos Descendentes
Recursivos
Flex C Generador de Analizadores Léxicos tipo Lex
Lex C Generador de Analizadores Léxicos
SDGLL1 exe Sistema Detector de Gramáticas LL(1) y generador de la tabla
TS 2006 C/C++ Tipo abstracto de datos Tabla de Símbolos de uso sencillo
2. Herramienta Lenguaje Descripción
TS C Tipo abstracto de datos Tabla de Símbolos
TS-OO C++ Tipo abstracto de datos orientado a objetos Tabla de Símbolos
VASt exe
Visualizador de árboles sintácticos partiendo de los ficheros con la
gramática y el parse pedidos en la Práctica [versión 2.0, Windows]
VASt C++
Visualizador de árboles sintácticos partiendo de los ficheros con la
gramática y el parse pedidos en la Práctica [versión 1.0, Linux]
YACC C Generador de Analizadores Sintácticos Ascendentes LR(1)
APLICACIÓN DE LOS LENGUAJES:
Definición de Algoritmo.
"Un algoritmo se define como un método que se realiza paso a paso para solucionar un problema
que termina en un número finito de pasos".
Las características fundamentales que debe cumplir todo algoritmo son:
Debe ser preciso. e indicar el orden de realización de cada paso.
Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada
vez.
Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe tener un
número finito de pasos.
La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.
Diseñar un algoritmo para cambiar una llanta a un coche.
3. 1. Inicio.
2. Traer gato.
3. Levantar el coche con el gato.
4. Aflojar tornillos de las llantas.
5. Sacar los tornillos de las llantas.
6. Quitar la llanta.
7. Poner la llanta de repuesto.
8. Poner los tornillos.
9. Apretar los tornillos.
10. Bajar el gato.
11. Fin.
12.
RESEÑA HISTÓRICA
Al igual que los idiomas sirven de vehículo de comunicación entre los seres humanos,
existen lenguajes que realizan la comunicación entre los seres humanos y las
computadoras. Estos lenguajes permiten expresar los programas o el conjunto de
instrucciones que el operador humano desea que la computadora ejecute.
Los primeros lenguajes de programación se conocieron como Lenguajes Ensambladores,
un ejemplo es: TRANSCODE, desarrollado para la computadora FERUT.
A mediados de los años 60's aparecieron los primeros lenguajes de propósito general
como FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C,C++, PASCAL, etc. pero
el desarrollo de nuevas tecnologías, tanto en arquitectura de computadoras como en
lenguajes de programación, continúa a paso acelerado. Los lenguajes de programación
actuales son los conocidos como Lenguajes visuales, como por ejemplo Visual Fox, Visual
Basic, Visual C .
DISEÑO Y CONSTRUCCIÓN DE UN COMPILADOR.
Nos ayuda a profundizar nuestro conocimiento acerca del diseño de los programas y su
implementación.
En el proceso de construcción de compiladores se integran muchos conceptos diferentes de
las Ciencias de la Computación:
1. Algoritmos de búsqueda.
4. 2. Árboles, Hashing.
3. Programación modular.
4. Lenguaje Assembly.
Un traductor es un programa que traduce un programa escrito en un lenguaje, a un nuevo
programa escrito en otro lenguaje.
LAS HERRAMIENTAS FLEX Y BISON.
Esta herramienta se usa en consonancia con la herramienta flex y sirve para especificar
analizadores sintácticos. De la misma forma que flex tiene como base las expresiones
regulares, la herramienta bison también se basa en otro formalismo para describir
lenguajes, en este caso serán las gramáticas independientes del contexto las que
constituirán el núcleo de las especificaciones que procesará bison.
El formato del fichero de entrada
La herramienta bison es una versión mejorada de una herramienta anterior denominada
yacc. Bison ha sido desarrollada con la intención de ser compatible con las
especificaciones que procesaba yacc, de manera que el lenguaje que acepta bison es
básicamente el lenguaje yacc más algunas modificaciones o mejoras. La herramienta bison
va a tomar como entrada un fichero de texto que, básicamente, tiene el siguiente
formato:
5. %header{
<código C de cabecera>
%}
%{
<código C de declaración>
%}
<zona de definiciones>
%%
<producciones y acciones>
%%
<código C de implemetación>
QUE ES FLEX Y BISON
Flex es un una herramienta que permite generar analizadores léxicos. A partir de un conjunto de
expresiones regulares, Flex busca concordancias en un fichero de entrada y ejecuta acciones
asociadas a estas expresiones.
Bison es un generador de analizadores sintácticos, un sustituto de yacc ("Yet Another Compiler
Compiler", Otro Compilador de Compiladores). Entonces, ¿qué es bison? Es un programa que
genera un programa que analiza la estructura de un fichero de texto. En lugar de escribir el
programa, el usuario especifica qué cosas deben ser conectadas y con esas reglas se genera un
programa que analiza el fichero de texto. Hay muchos ejemplos en los que se necesita esta
estructura y uno de ellos es la calculadora.
COMO SE INSTALA FLEX Y BISON
1. Descarga el software disponible en el sitio de la cátedra.
2. Instalar el software en la unidad C: (para explicar a partir del punto 4 se tendrá como hipótesis
de que flex y bison han sido instalados en la ruta: C:GnuWin32 donde contiene una subcarpeta
llamada bin donde se encuentran los programas respectivos)
3. Flex y bison son aplicaciones de consola, por lo que se deberá entrar al Símbolo del sistema y
tipear líneas de comando para ejecutar Flex. Una alternativa es crear un archivo de proceso por
lotes (*.bat) que contenga las líneas de comando para la ejecución de Flex y Bison y/o la
compilación del archivo generado.
6. 4. Si deseas que flex y bison se integren al conjunto de variables del entorno (esto te va a permitir
llamar a flex/bison desde cualquier ubicación en la línea de comandos) debes hacer lo siguiente:
• Clic derecho en “Mi PC”.
• Selecciona “Propiedades”
• Clic en la pestaña “Opciones Avanzadas”
• Presiona el botón “Variables de entorno”
• En la ventana de variables de entorno, ubicarse en la sección “Variables del sistema” luego haz
clic en PATH y luego en el botón “Modificar” (si no está hacer clic en “Nueva” y agregar PATH)
7. • En la nueva ventana, escribir la ruta completa al directorio “bin” de la aplicación flex/bison. Si
existe otro valor, separarlos con comas
• Aceptar los cambios y luego reiniciar el sistema operativo.
5. Si deseas instalar un compilador de C como MinGwin, deberás integrar la ruta de acceso al
compilador a las variables de entorno para facilitar la llamada al programa.
Por ejemplo si se instaló MingWin en “C:Mingw” y dentro de la carpeta “bin” se encuentra
“gcc.exe” que es el ejecutable, entonces de deberá agregar (análogo a los pasos anteriores) lo
siguiente:
6. Cuando tengas listo podrás llamar a flex/bison desde el símbolo del sistema sin necesidad de
ubicarte en la carpeta donde ha sido instalado flex/bison.
8. COMO SE COMPILA CON FLEX Y BISON
2 EJEMPLOS DE LA CREACIÓN DE UN COMPILADOR UTILIZANDO FLEX Y BISON.
Codigo01.txt
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Definir Constante Entero numero := 145 ;
Definir Booleano nume := 1 ;
Funcion Entero ( Entero num; Real fre; Booleano boll;)
Mientras ( )
Booleano ghjfg;
bocfgh:=1;
Mientras ( a>=4 )
Car:=Carro;
Entero bandera;
Booleano boole;
boole:=1;
Si ( a==4 )
Bool:=1;
Booleano boolean;
SinoSi (a==5) Entonces
Bool:=2;
Sino Entonces
Bool:=3;