Compilador Bitácora
Enviado por kevin Makl • 27 de Julio de 2017 • Monografía • 2.558 Palabras (11 Páginas) • 328 Visitas
Universidad Mariano Gálvez Centro de Retalhuleu [pic 1]
Ingeniería en Sistemas de la Información
COMPILADORES
EDGAR JEHOMIAS MATUL
Compilador
Kevin Moisés Macal Herrera 2790-14-8355
July Erenia Sosa Estrada 2790-14-7382
Fecha: 14 de junio de 2017
Bitácora
- Lunes 5 de junio de 2017 INSTALACION DE PROGRAMAS
Se instaló netbeans, zinja y se descargó la librería jlex y java cup para empezar a trabajar con el compilador, también se instaló notepad para los archivos de texto teniendo correctamente instalado todo esto se empezó a trabajar con el código para el diseño de la ventana del compilador, donde utilizamos netbeanz.
Zinja fue utilizado para crear el archivo ejecutable, y correrlo desde el compilador.
Jlex y java cup nos sirvió para gener, donde y Jlex es un generador de analizador léxico pareció al Lex el cual toma una cadena como entrada una cadena de caracteres, y lo convierte en una secuencia de tokens.
Cup es un generador de analizadores sintácticos LALR en Java el cual recibe de entrada un archivo con la estructura de la gramática y su salida es un parser escrito en Java listo para usarse.
- Miércoles 7 de junio de 2017 ANALIZADOR LEXICO
Para el analizador léxico se utilizó un archivo de entrada JLex está organizado en tres secciones, separadas por directivas de doble ciento ( `` %% ''). Una especificación adecuada JLex tiene el siguiente formato.
código de usuario
%%
directivas JLex
%%
expresión regular gobierna
El `` %% '' directivas distinguen secciones del archivo de entrada y deben colocarse al comienzo de su línea. El resto de la línea que contiene el `` %% '' directivas pueden ser descartados y no deben utilizarse para alojar declaraciones o código adicionales.
La sección de código de usuario - la primera sección del archivo de especificación - se copia directamente en el archivo de salida resultante. Esta zona de la especificación proporciona espacio para la implementación de clases de utilidad o tipos de retorno.
La sección de directivas JLex es la segunda parte del archivo de entrada. En este caso, las definiciones de macros se dan los nombres de estado y se declaran.
La tercera sección contiene las reglas de análisis léxico, cada uno de los cuales consta de tres partes: una lista opcional estado, una expresión regular, y una acción.
- Jueves 8 de junio de 2017 Código Interno de Analizador Léxico Clase
El % {...}% directiva permite al usuario escribir el código Java se copia en la clase analizador léxico. Esta directiva se utiliza de la siguiente manera.
{%
%}
Ser reconocidos correctamente, el % { y %} debe ser cada uno situado al principio de una línea. El código Java se especifica en se copia entonces en la clase analizador léxico creado por JLex.
yylex clase {
... ...
}
Esto permite la declaración de variables y funciones internas de la clase analizador léxico generado. Los nombres de variables que comienzan con yy debe ser evitado, ya que estos están reservados para su uso por la clase analizador léxico generado.
Títulos de componentes del Analizador Léxico
Las siguientes directivas se pueden utilizar para cambiar el nombre de la clase generada léxico analizador, la función tokenizing, y el tipo de retorno token. Para cambiar el nombre de la clase analizador léxico de yylex , utilizar la clase% directiva.
% de clase
Para cambiar el nombre de la función de tokenizing yylex , utilice la función% directiva.
% función
Para cambiar el nombre del tipo de retorno de la función de tokenizing Yytoken , utilice el tipo% directiva.
Tipo%
Si los nombres predeterminados no están alterando el uso de estas directivas, la función tokenizing se envoked con una llamada a Yylex.yylex () , que devuelve el Ytoken tipo.
Para evitar conflictos de alcance, nombres que comienzan con yy son normalmente reservados para las funciones y variables internas del analizador léxico.
Reglas de expresiones regulares
La tercera parte de la especificación JLex consiste en una serie de reglas para romper el flujo de entrada en tokens. Estas reglas especifican las expresiones regulares, entonces asocian estas expresiones con las acciones que consisten en el código fuente de Java.
Las reglas tienen tres partes bien diferenciadas: la lista opcional de estado, la expresión regular, y la acción asociada. Este formato se representa como sigue.
[
Cada parte de la regla se discute en una sección de abajo.
Si más de una regla coincide con cuerdas de su entrada, el analizador léxico generado resuelve los conflictos entre normas avidez por la elección de la regla de que coincide con la cadena más larga. Si más de una regla coincide con las cadenas de la misma longitud, el analizador léxico elegirá la regla que se da por primera vez en la especificación JLex. Por lo tanto, las reglas que aparecen anteriormente en la memoria se les da una prioridad más alta por el analizador léxico generado.
Las reglas establecidas en una especificación JLex deben coincidir con todas las entradas posibles. Si el analizador léxico generado recibe información que no coincide con ninguna de sus reglas, se produce un error.
Por lo tanto, toda la entrada debe corresponder al menos una regla. Esto se puede garantizar mediante la colocación de la siguiente regla en la parte inferior de una especificación JLex:
. {Java.lang.System.out.println ( "entrada sin igual:" + yytext ()); }
El punto (.), Como se describe a continuación, coincidirá con cualquier entrada a excepción de la nueva línea.
Transiciones de estado:
Si los estados léxicos se declaran en la sección de directivas JLex, transiciones en estos estados pueden ser declaradas dentro de las acciones de expresiones regulares. Las transiciones de estado se realizan mediante la siguiente llamada a la función.
yybegin (estado);
La función void yybegin () se pasa el nombre del estado de estado y los efectos de una transición a este estado léxico.
El estado del estado debe ser declarado dentro de la sección de directivas JLex, o esta convocatoria dará lugar a un error de compilación en el archivo fuente generado. La única excepción a este requisito es la declaración del estado YYINITIAL , el estado léxica declarada implícitamente por JLex. El analizador léxico generado empieza análisis léxico en el estado de YYINITIAL y permanece en este estado hasta que se haga una transición.
...