Proyecto Mini-SQL
Tipo: Interprete
Buscar en internet y descargar el codigo fuente de HOC (High Order Calculator)
Codificar un interprete para un lenguaje imperativo que implemente un subconjunto de SQL
Para este proyecto necesitara el codigo fuente de un SGBD ( Sist. Gestor de B.D. ) y un subconjunto de la gramatica de SQL
Parte de la Gramatica SQL en notacion BNF
create-table-statement ::= CREATE TABLE table-name
(column-element [, column-element]...)
drop-table-statement ::= DROP TABLE table-name
insert-statement ::= INSERT INTO table-name
[(column-identifier [, column-identifier]...)] VALUES
(insert-value [, insert-value]...)
select-statement ::= SELECT select-list FROM table-name [WHERE search-
condition]
column-element ::= column-identifier data-type
column-identifier ::= user-defined-name
comparison-operator ::= < | > | = | <>
data-type ::= VARCHAR | NUMBER | BINARY
dynamic-parameter ::= ?
insert-value ::= dynamic-parameter | literal
search-condition ::= column-identifier comparison-operator literal
select-list ::= * | column-identifier [, column-identifier]...
table-name ::= user-defined-name
user-defined-name ::= letter [digit | letter]
Otro subconjunto de la gramatica de SQL
S : ST1';'
| create_table_stmt ';'
| insert_stmt';'
;
insert_stmt: INSERT INTO TABLA
'(' attributeList ')' VALUES '(' valslist')'
;
create_table_stmt: CREATE TABLE STRING
'(' create_col_list ')'
;
create_col_list: create_definition
| create_col_list ',' create_definition
;
create_definition: STRING data_type
;
data_type: VARCHAR '(' NUM ')'
| INTEGER
;
ST1 : SELECT attributeList FROM tableList ST2
;
ST2 : WHERE COND ST3
| ST3
;
ST3 : GROUP attributeList ST4
| ST4
;
ST4 : HAVING COND ST5
| ST5
;
ST5 : ORDER attributeList ST6
|
;
ST6 : DESC
| ASC
|
;
attributeList : attributeList ',' CAMPO
| CAMPO
| '*'
;
tableList : TABLA ',' tableList
| TABLA
;
COND : COND OR COND
| COND AND COND
| E
;
E : F '<' F
| F '>' F
| F LE F
| F GE F
| F EQ F
| F NE F
| F OR F
| F AND F
| F LIKE F
;
F : ID
| NUM
| STRING
| CAMPO
;
valslist: F
| valslist ',' F
;
soportara una sentencia CREATE TABLE , una sentencia DROP TABLE, una sentencia INSERT (con parametros), y una sentencia SELECT (con una clausula WHERE).
Hacer un programa Demo para:
Create
Altas
Read
Consultas
Update
Modificaciones
Delete
Bajas
Que en la base de datos haya las siguientes tablas : Perro , Pelicula y Articulo
Para Perro almacenar nombre , raza, edad , y genero
Para Pelicula almacenar titulo director y año
Para Articulo almacenar nombre, descripcion, precio y cantidad
Entregar
Documentacion a entregar
-Comentarios en codigo fuente.
-Manual de usuario impreso minimo 2 paginas y maximo 5 paginas
incluir las pantallas necesarias
-Manual tecnico impreso minimo 5 paginas y maximo 14 paginas.
-Expresiones regulares
-Gramatica
-Mapa de memoria
-Diagrama de clases.
-Dar una explicacion de alto nivel de como se realizo el proyecto e incluir
los fragmentos de codigo mas importantes para complementar dicha
explicacion
Entregar un CD , DVD o Bluray con
-codigo fuente ( no comprimir )
-archivos: extension y (de yacc ) , extension l (de lex ) , de lenguaje c, java, class,
jar, imagenes, base de datos y todos aquellos recursos necesarios para compilar y
ejecutar el proyecto
-Manuales
Rotular el CD , DVD o Bluray con la siguiente informacion:
Nombre completo
Grupo
Proyecto para Extra Ordinario de Compiladores
Nombre del Proyecto
Fecha
Materia
Incluir dichos datos en la envoltura del CD y en cada archivo del código fuente como un comentario usando /* */ y en un Acerca de.