Está en la página 1de 14

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL

CUSCO

FACULTAD DE INGENIERIA ELÉCTRICA, ELECTRÓNICA,


INFORMÁTICA Y MECÁNICA

ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE


SISTEMAS

Proyecto Compilador de lenguaje SQL en español

TRABAJO PRESENTADO POR:

CUSCO – PERÚ

Enero 2020

INDICE
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

INTRODUCCIÓN..............................................................................3

OBJETIVOS......................................................................................4

DESCRIPCIÓN DEL LÉXICO SQL EN ESPAÑOL..........................5

ANALIZADOR LÉXICO EN FLEX....................................................6

Descripción de las reglas léxicas.....................................................................6

DESCRIPCIÓN DE CONSTRUCCIONES VÁLIDAS........................8


b. Inserción de contenido en las tablas.................................................................8
c. Modificación de datos de una tabla....................................................................9
e. Consultas de datos............................................................................................10
f. Eliminación de tablas.........................................................................................10

GRAMÁTICAS LIBRES DE CONTEXTO PARA LAS


CONSTRUCCIONES DEL LENGUAJE..........................................11

Unsaac-2020 Página 2
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

INTRODUCCIÓN

El presente trabajo correspondiente al curso de Construcción de compiladores


busca dar a conocer los requisitos previos que se necesitan antes de elaborar
un compilador, es decir describir el lenguaje a ser procesado. El objeto de
estudio es el lenguaje estándar de manejo de base de datos SQL, pero el
léxico del lenguaje será elaborado en lenguaje español. Se darán a conocer los
requisitos previos como el léxico del lenguaje, los tipos de datos utilizados,
variables válidas, palabras reservadas, operadores y funciones que se
consideran primitivas.

Adicionalmente se describen las gramáticas regulares que corresponden al


lenguaje en estudio. Esto como parte del análisis sintáctico, con el cual
posteriormente se establecerán las relaciones coordinantes con el análisis
léxico previo.

La construcción de compiladores implica la culminación secuencial de etapas


de análisis, de modo que el lenguaje debe estar correctamente definido. En
busca de este objetivo se plantea en el siguiente informe las definiciones de las
gramáticas libres de contexto.

Unsaac-2020 Página 3
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

OBJETIVOS

El presente trabajo tiene como propósito los siguientes objetivos:

 Describir el léxico del lenguaje SQL en español.


 Describir las construcciones del lenguaje con una sintaxis válida.
 Mostrar la implementación del analizador léxico en FLEX Y C.
 Diseñar gramáticas libres de contexto para las construcciones del
lenguaje.

DESCRIPCIÓN DEL LÉXICO SQL EN ESPAÑOL

TOKENS TIPO DE CARÁCTER EJEMPLO


Delimitador Signos de puntuación. (.) punto y (,) coma
(caracteres).
Palabras Clave Cadenas de caracteres INSERTAR, ELIMINAR,
significativos SELECCIONAR,

Unsaac-2020 Página 4
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

ACTUALIZAR, CREAR,
MAX, MIN, PROM, EN,
CUANDO, PRIMARIO,
FIN, ORDENAR, CASO,
ENTONCES, DE.
Cadena Cadenas encerradas “1”, “A233-a” “jules”,
entre comillas. “22-Acacia Av.”

Identificador Cadenas sin comillas Id, aula, nombre,


que identifican nombres dirección
de columnas
Numero Entero Constante numérica 23, 3455, 2019, 12
entera
Numero Decimal Constante numérica 122.2 1416.3 45.6
decimal
Operador Operadores aritméticos +, - , * ,/ <, >
y relacionales
Fecha Almacenar una fecha Del 1 de enero de 0001
solamente. Del 1 de al 31 de diciembre de
enero de 0001 al 31 de 9999
diciembre de 9999

FUNCIONES PRIMITIVAS

MAXIMO(MAX) Devuelve el máximo Seleccionar


de un conjunto de MAX(GASTOS) COMO
valores contenidos en ElMAX de PEDIDOS
su campo especifico where pais = ‘España’;
de una consulta.
MINIMO(MIN) Devuelve el minimo de Seleccionar
un conjunto de valores MIN(GASTOS) COMO
contenidos en su campo Elmin de PEDIDOS
especifico de una where pais = ‘España’;
consulta.
PROMEDIO(PROM) Calcula la media Seleccionar
aritmética de un PROM(GASTOS) como
conjunto de valores PROM de PEDIDOS
contenidos en el campo donde GASTOS > 100;
especificado.

Unsaac-2020 Página 5
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

CONTAR(CONT) Calcula el nro de Seleccionar


registros devueltos por CONT(FechaEnvio y
una consulta. transporte) as Total de
Pedidos

Unsaac-2020 Página 6
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

ANALIZADOR LÉXICO EN FLEX

Unsaac-2020 Página 7
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

Descripción de las reglas léxicas.

PR: dentro de esta variable se establecen las palabras reservadas de las


instrucciones SQL definidas previamente. Así tenemos crear tabla, eliminar
tabla, actualizar, insertar en, seleccionar de, seleccionar en, seleccionar
valores, establecer, donde, eliminar de, y de las funciones primitivas
definidas previamente: min, max, prom.

ID: cadena de caracteres que realizan la función de identificadores para


realizar las instrucciones SQL.

TDN: representan los tipos de datos numéricos, los cuales llevan un rango.

TD: variable que representan los tipos de datos en general, salvo los que son
numéricos con rango.

LOOP: variable que enlaza variables con los tipos de datos respectivos.

Unsaac-2020 Página 8
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

En esta sección de código se realiza el emparejamiento entre la figura léxica


que representa cada token del código fuente del programa de SQL en español.

Unsaac-2020 Página 9
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

DESCRIPCIÓN DE CONSTRUCCIONES VÁLIDAS

a continuación, se indican las principales operaciones que se implementan a


través de sentencias SQL.

a. Creación de tablas

La sentencia CREAR TABLA permite definir una nueva tabla y la prepara para
aceptar datos. Su sintaxis es la siguiente:

CREAR TABLA nombre de tabla (definición de columnas)

Las columnas de la tabla recién creada se definen en el cuerpo de la sentencia


CREAR TABLA. Las definiciones de columnas aparecen en una lista separada
por comas y encerrada entre paréntesis. El orden de las definiciones de las
columnas determina el orden de izquierda a derecha de las columnas en la
tabla. Cada definición especifica el nombre de la columna y el tipo de datos que
la columna contiene.

b. Inserción de contenido en las tablas

Típicamente, una nueva fila de datos se añade a una base de datos relacional
cuando una nueva entidad representada por una fila aparece en el mundo
exterior. Una fila es la unidad de datos más pequeña que puede añadirse a una
tabla.

La sentencia INSERTAR permite añadir una nueva fila a una tabla. Su sintaxis
es:

INSERTAR EN nombre tabla (Lista de columnas)


VALORES (Lista de valores)

La cláusula INTO especifica la tabla que recibirá la nueva fila y las columnas
que almacenarán los datos Insertados. La cláusula VALUES especifica los
valores de los datos que la nueva fila contendrá. Los nombres de columna y los
valores de los datos se separan utilizando comas.

Unsaac-2020 Página 10
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

c. Modificación de datos de una tabla

Los valores de los datos almacenados en una base de datos se modifican


cuando se producen cambios correspondientes en el mundo exterior, de tal
forma que en todo momento la información almacenada en la base de datos
sea un modelo exacto del mundo real. La unidad más pequeña que puede
modificarse es una columna de una, única fila.

La sentencia ACTUALIZAR permite modificar los valores de una o más


columnas de las filas seleccionadas de una tabla. Debe respetarse la siguiente
sintaxis:

ACTUALIZAR nombre de tabla ESTABLECER nombre de


columna = expresión DONDE condición

El nombre de tabla identifica la tabla en que se realizará la actualización. La


condición que acompaña a la cláusula DONDE sirve para seleccionar las filas
de la tabla que serán modificadas. La cláusula ESTABLECER es una lista de
asignaciones separadas por comas. Cada asignación identifica una columna
destino a actualizar y especifica cómo calcular el nuevo valor para dicha
columna.

d. Supresión de datos de una tabla

Normalmente, una fila de datos se suprime de una tabla cuando la entidad


representada por la fila desaparece del mundo exterior. La unidad más
pequeña de datos que puede ser suprimida es una única fila.

La sentencia ELIMINAR permite eliminar filas seleccionadas de una sola tabla.


La sintaxis de la sentencia ELIMINAR es como sigue:

ELIMINAR DE nombre de tabla DONDE condición

La cláusula DE especifica el nombre de la tabla de la que se eliminarán filas. La


condición de la cláusula DONDE selecciona las filas que serán suprimidas.
Obviamente si ninguna de las filas satisface dicha condición, ninguna de ellas
será eliminada.

Unsaac-2020 Página 11
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

e. Consultas de datos

Las consultas de selección se utilizan para obtener información de las bases de


datos, esta información es devuelta en forma de conjunto de registros.

La sintaxis básica de una consulta de selección es la siguiente:

SELECCIONAR Lista de campos DE Nombre de tabla


DONDE Condición

En donde Lista de Campos es la relación de campos que se desean recuperar


y Nombre de Tabla identifica a la tabla, origen de los mismos.

El resultado de una consulta SQL es siempre una tabla de datos, semejante a


las tablas almacenadas en la base de datos. Generalmente los resultados de la
consulta generarán una tabla con varias columnas y varias filas. Las consultas
más sencillas solicitan columnas de datos de una única tabla en la base de
datos.

f. Eliminación de tablas

Cuando se quiere destruir una tabla existente que ya no es necesaria se debe


utilizar la sentencia ELIMINAR TABLA cuya sintaxis es:

ELIMINAR TABLA nombre de tabla

El nombre de la tabla en la sentencia identifica la tabla a eliminar.

Unsaac-2020 Página 12
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

GRAMÁTICAS LIBRES DE CONTEXTO PARA LAS CONSTRUCCIONES


DEL LENGUAJE

Para la construcción CREAR TABLA nombre tabla (identificador1 tipo de


dato1, identificador2 tipo de dato2, …..)

EJEMPLO 1.

G = ({A, B, C, D}, {pr,id,td,(,), , }, P, S)

Donde P:

S B

B pr A

C id td,C | id td,D | D

A (C) | E

D id td

EJEMPLO 2.

S prA

A idA | idB | S

B opeA | C

C pr | id

EJEMPLO 3.

S prA

A enteroA | prB

B opeB| idC

B opeS| ope

Unsaac-2020 Página 13
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

Unsaac-2020 Página 14

También podría gustarte