Informe Compiladores
Informe Compiladores
Informe Compiladores
Tema:
Asignatura:
Construcción de compiladores
Tutor:
Presentado por:
Cusco - Perú
2020
i
INTRODUCCIÓN
constituye tres fases de análisis: Análisis léxico, cada cadena de caracteres del programa
fuente se lee de izquierda a derecha y se agrupa en componentes léxicos, que son secuencias
de caracteres que tienen un significado colectivo; análisis sintáctico, los caracteres son
reglas recursivas y finalmente el análisis semántico, se realizan revisiones para asegurar que
Para toda la etapa de desarrollo utilizamos dos herramientas de trabajo, nuestra herramienta
acciones para generar código en C que pueda ser compilado y obtener un ejecutable y bison
¿Por qué se usan expresiones regulares para el analizador léxico y gramáticas libre de
Las expresiones regulares son una forma de especificar los patrones o reglas, estos
patrones son una forma de describir cada cadena de caracteres queriendo decir que es una
forma de definir los tokens o componentes léxicos, cada patrón concuerda con una serie de
cadenas.
Las gramáticas libres de contexto se utilizan para describir la sintaxis del lenguaje de
forma precisa y fácil de comprender, estas son reconocidos por los analizadores sintácticos.
ii
ÍNDCE
INTRODUCCIÓN..................................................................................................i
INDICE DE TABLAS...............................................................................................................iv
1: ANALIZADOR LÉXICO.................................................................................5
PALABRAS).........................................................................................................................5
1.2 COLOQUE EL CÓDIGO FUENTE DEL ANALIZADOR LÉXICO (EN FLEX Y EN C)6
2: ANALIZADOR SINTÁCTICO........................................................................9
C) 9
3: TRATAMIENTO DE ERRORES..................................................................11
RECONOCIDA...................................................................................................................11
CONCLUSIONES................................................................................................12
RECOMENDACIONES......................................................................................13
REFERENCIAS...................................................................................................14
iv
INDICE DE TABLAS
1: ANALIZADOR LÉXICO
PALABRAS).
C)
6
/* Programa lexer que será llamado para analizar la sintaxis de SQL server en Español */
/* Sección DEFINICIONES */
%{
#include <stdio.h>
#include "parser.tab.h" //para que lexer.l y parser.y usen las mismas constantes
#define BUSCAR 0
int estado;
int agregar_palabra(int tipo, char *palabra);
int buscar_palabra(char *palabra);
%}
/* TOKENS */
/* Palabras reservadas */
PALABRARESERVADA (crear|insertar|alterar|eliminar)
/* Tipos de estructuras */
ESTRUCTURA (basedatos|tabla|procedimiento|funcion|disparador)
/* Tipo de datos */
TIPODATOA (numerico|texto|real)
TIPODATOB (datofecha|entero)
/* Operadores */
OPERADOR ("<"|">"|"<>"|"=>"|"<="|"="|y|o|de)
/* Indicador de numero */
INDICADOR [1-9]+[0-9]*|[1-9]+[0-9]*[,][1-9]+[0-9]*
/* Definicion de variable */
VARIABLE [A-Za-z0-9]+
/* Direccionador */
DIRECCIONADOR ("."|"@")
/* Delimitadores */
DELIMITADOR ("/*"|"*/"|"--"|","|"("|")")
/* Sección REGLAS */
%%
\n {estado = BUSCAR;} /*retornar a estado default*/
if ( buscar_palabra(palabra) != BUSCAR ) {
/*printf("La palabra %s ya fue definida!!!\n", palabra);*/
return 0; //no funciono
}
2: ANALIZADOR SINTÁCTICO
Y C)
10
%{
#include <stdio.h>
int yylex();
int yyerror(char *s);
%}
%token INICIADOR PALABRARESERVADA ESTRUCTURA TIPODATOA TIPODATOB OPERADOR INDICADOR
VARIABLE DIRECCIONADOR DELIMITADOR
%%
sentencias: sentencia sentencias|sentencia;
%%
return 0;
}
3: TRATAMIENTO DE ERRORES
RECONOCIDA.
if ( buscar_palabra(palabra) != BUSCAR ) {
/*printf("La palabra %s ya fue definida!!!\n", palabra);*/
return 0; //no funciono
}
eliminar Tienda
falta definir ESTRUCTURA
CONCLUSIONES
Se concluyó satisfactoriamente
14
RECOMENDACIONES