PRIMERO :
Descargaremos las herramientas a utilizar como son el JFLEX Y CUP
Aqui les dejaremos los link de descarga de cada uno.
JFLEX:
CUP:
http://www2.cs.tum.edu/projects/cup/
Ya una vez descargados lo guardamos en una carpeta
SEGUNDO:
Añadimos estas librerías al programa netbeans para así poder comenzar a realizar nuestro compilador.
SEGUNDO:
Añadimos estas librerías al programa netbeans para así poder comenzar a realizar nuestro compilador.
luego de haber agregado nuestras librerías comenzaremos a realizar nuestro compilador.
TERCERO:
ANALIZADOR LÉXICO
Es la primera fase de un compilador la cual consiste en un programa que recibe como entrada el código fuente y produce una salida compuesta de tokens o símbolos.Estos tokens sirven para una posterior etapa del proceso de traducción, siendo la entrada para el analizador sintáctico.
Usaremos el jflex el cual es una herramienta desarrollada en Java, la cual genera un programa en Java a partir de una especificación en el que se indican los tokens permitidos por nuestro lenguaje.
Un archivo de especificación para JLex esta organizado en tres secciones, separadas por:
%%, y tiene el siguiente formato:
Codigo de usuario
%%
Directivas JLex
%%
Expresiones regulares
%%
debe estar al principio de la 1 linea. El resto de la 1 linea conteniendo %% debe descartarse y no debe usarse para declaraciones o codigo.
Para esto creamos en el netbeans un archivo vació y lo nombramos con extención .flex en el cual vamos a colocar las expresiones regulares, ya sea para los identificadores asi como los tipo de datos y palabras reservadas que nuestro lenguaje acepta en nuestro caso sera c++.
aquí se muestra el archivo .flex
Luego de crear nuestro archivo . flex y colocar toda los símbolos que tiene que aceptar nuestro lenguaje debemos de compilarlo para esto vamos a crear una clase que se encarge de esto, llamada genera_lex la cual contendra la ruta donde se encuentra nuestro archivo .flex ,al ejecutarla nos creara un archivo con una extencion .lex.
CUARTO:
Luego de realizar nuestro analizador léxico y generar nuestro archivo .lex entonces ya estamos listo para realizar el siguiente paso el análisis sintáctico.
El analizador sintactico (parser) recibe los tokens y determina si dicha cadena puedeLuego de realizar nuestro analizador léxico y generar nuestro archivo .lex entonces ya estamos listo para realizar el siguiente paso el análisis sintáctico.
ANÁLISIS SINTÁTICO
ser generada por una gramatica. Para ello debe encontrarse un arbol de analisis sintactico o,
en su defecto, generar un error. A su vez este deber a recuperarse de los errores que ocurren
frecuentemente para poder continuar procesando el resto de la entrada.
Para este proceso usaremos el CUP que es una herramienta desarrollada en Java para crear analizadores sintácticos.
en las imágenes mostramos el archivo cup
indica una gramática formal así como también se asocian una serie de acciones a los símbolos
aparecidos en cada regla gramatical. Por tanto esta herramienta cubre la fase de analisis
sintáctico por el proceso de traducción dirigida por la sintaxis. También de ne un interfaz para
acoplarse a los analizadores lexicos construidos con JLex.
La clase sym esta constituida por los símbolos terminales declarados en la gramática,la cual es utilizada para hacer referencia a los mismos.
La clase parser contiene al analizador sintactico.
Un archivo de entrada para CUP consta de las siguientes 5 secciones:
1. De nición de paquete e importación de paquetes necesarios.
2. Código de usuario.
3. Declaración de símbolos terminales y no terminales.
4. Declaraciones de precedencia.
5. De nición del símbolo inicial de la gramática y las reglas de producción.
Para poder obtener esos 2 clases anteriormente mencionadas tendremos que compilar nuestro archivo cup para esto creamos una clase llamada Genera_Cup que hará este trabajo
En este caso se nos creara la clases Símbolos y Sintáctico ya que esos nombres le dimos la clase que se ejecutara.