Teoría de Lenguajes - Segundo Obligatorio - 2014



Documentos relacionados
Agenda. BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar.

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

6 - Recuperar algunos registros (where)

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

SENTENCIAS Y CONSULTAS EN SQL SERVER

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

1. DML. Las subconsultas

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Número de Práctica: 1 Nombre de la Práctica: Comunicación Cliente Servidor Vía Sockets Java con Sistema Manejador de Bases de Datos

Guía práctica de introducción básica a JDBC

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental]

SQL (Structured Query Language)

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA NACIONAL EXTENSIÓN BARQUISIMETO BARQUISIMETO ESTADO. LARA

ADMINISTRACIÓN DE BASE DE DATOS

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Modulo 1 El lenguaje Java

SIIGO Pyme. Templates. Cartilla I

INSTITUCIÓN EDUCATIVA GABRIEL GARCIA MÁRQUEZ BASE DE DATOS. DESARROLLO DE SOFTWARE Página 1 de 28 SQL SQL

Figura 4.1 Clasificación de los lenguajes de bases de datos

Ejercicios - Persistencia en Android: ficheros y SQLite

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Bases de datos relacionales y el modelo entidad-relación

Trabajos de Ampliación. Bases de datos NoSQL.

5- Uso de sentencias avanzadas

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Curso PHP Módulo 1 R-Luis

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

A.1. Definiciones de datos en SQL

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Uso de las herramientas de consulta de Transact-SQL

Introducción a PostgreSQL con PHP

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

%& %)& '$!%*+ $, %%%&$ %%

TEMA 20: CONCEPTOS BÁSICOS DE SQL

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Formato para prácticas de laboratorio

1

Manual de NetBeans y XAMPP

Comisión Nacional de Bancos y Seguros

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Base de Datos Práctica 1.

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

PHP Perfect SQL v1.0 (SQL perfectas en PHP)

Analizador Léxico. UCR ECCI CI-2414 Recuperación de Información Prof. M.Sc. Kryscia Daviana Ramírez Benavides

Instalación de Casandra Para instalar cassandra se recomienda tener la última versión de JAVA instalada.

Proyecto Unico Interpretador de SetCalc

Práctica 1 Definición de un lenguaje de programación básico: milenguaje

BASES DE DATOS EN VISUAL BASIC ACCESS + SQL

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

1. CONSIDERACIONES GENERALES

GUIA DE LABORATORIO N 9 B. (000Webhost Php- Para desarrollar en casa)

Restricciones de Integridad

Instructivo de Instalación y Uso de software MasterControl

Preliminares. Tipos de variables y Expresiones

Práctica 3. Consultas SQL

Consultas con combinaciones

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

Manual del Módulo Externo Impresión de Códigos de Barra para Impresoras SATO

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades

Tutorial de MySQL Lección II

Nombre: Francis Ariel Jiménez Zapata. Matricula: Tema: Trabajando con Windows Server Materia: Sistema Operativo II.

COMISIÓN NACIONAL PARA EL AHORRO DE ENERGÍA

Introducción al lenguaje de programación java

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

Base de datos relacional

- Bases de Datos - - Diseño Físico - Luis D. García

smartblz pesaje computarizado Manual de Uso y referencias técnicas

(volver a Tabla de Contenidos)

CONSULTAS BASICAS EN SQL SERVER

c:\set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbytools.jar;

Microsoft SQL Server 2005

Curso Online de Microsoft

6- Combinación de tablas

OBJETIVOS METODOLOGÍA PROCEDIMIENTO 1.- Trabajo con el servidor de bases de datos Sybase

Práctica de introducción a

Organizando mi clase en el GES Material de apoyo

GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

MANUAL BÁSICO DEL LENGUAJE SQL

Metodología de validación para el Sistema Estadístico del Sector Asegurador (SESA), del ramo de Crédito a la vivienda

Introducción al lenguaje Java

CURSO DE SQL SERVER 2005

Curso de PHP con MySQL Gratis

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Bases de Datos: Structured Query Language (SQL)

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

GENERACIÓN DE CÓDIGO

Administración de Xisis

Sql Basico. Seminar Introduction

Estructuras de datos: Proyecto 2

19. Packages o paquetes

Curso SQL Nivel Avanzado 1. Miguel Jurado García

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Patrones para persistencia (I) Ingeniería del Software II

GUIA DE USO DEL ACCPRO

Transcripción:

Teoría de Lenguajes Segundo Obligatorio 2014 El propósito del obligatorio es construir un programa que reconozca tiras de un lenguaje que se describirá a continuación. Para esto se utilizará la herramienta JCUP, que dada la especificación de una gramática, genera un programa java (el parser) que reconoce las tiras del lenguaje. Presentación del Lenguaje Para presentar el lenguaje se utilizará una gramática escrita en EBNF. Son símbolos del metalenguaje: * indica cero o más repeticiones + indica una o más repeticiones indica OR? indica 0 o 1 ocurrencia () se usa para agrupar dos o más términos a los que se le aplica un operador. Los símbolos terminales se describen entre comillas y en negrita. sql_program ::= ( sql_statement ';') + sql_statement ::= schema_stm data_stm schema_stm ::= create_stm drop_stm create_stm ::= create_table create_index create_table ::= 'create' 'table' 'id' ( '(' 'id' data_type ( ',' 'id' data_type ) * ')' 'as' '(' select_stm ')' ) data_type ::= 'varchar' 'integer' 'date' create_index ::= 'create' 'index' 'id' 'on' 'id' '(' 'id' ( ',' 'id' ) * ')' drop_stm ::= drop_table drop_index drop_table ::= 'drop' 'table' 'id' drop_index ::= 'drop' 'index' 'id' data_stm ::= data_change_stm select_stm data_change_stm ::= update_stm delete_stm insert_stm update_stm ::= update_simple update_subquery update_simple ::= 'update' 'id' 'set' 'id' '=' expression ( ',' 'id' '=' expression ) * ( 'where' condition )? update_subquery ::= 'update' 'id' 'set' '(' 'id' ( ',' 'id' ) * ')' '=' '(' select_stm ')' 1 de 5

delete_stm ::= 'delete' 'from' 'id' ( 'where' condition )? insert_stm ::= 'insert' 'into' 'id' '(' 'id' ( ',' 'id' ) * ')' ( value_list '(' select_stm ')' ) select_stm ::= 'select' ( '*' expression ( ',' expression ) *) 'from' 'id' (',' 'id' ) * ( 'where' condition )? value_list ::= 'values' '(' expression ( ',' expression ) * ')' expression ::= term ( ( '+' '-' ) term ) * term ::= factor ( ( '*' '/' ) factor ) * factor ::= constant 'id' 'id' '(' expression ( ',' expression ) * ')' condition ::= 'not'? logic_term ( 'or' logic_term ) * logic_term ::= logic_factor ( 'and' logic_factor ) * logic_factor ::= simple_expression ( compare_operator simple_expression) * simple_expression 'is' 'not'? 'null' 'exists' '(' select_stm ')' simple_expression 'not'? 'between' simple_expression 'and' simple_expression "(" condition ")" simple_expression ::= 'id' constant compare_operator ::= '=' '<' '>' '<>' '<=' '>=' constant ::= 'string' 'number' 2 de 5

Construcción del reconocedor gramatical (parser) Se le entregará al estudiante un programa Principal.java que contendrá el main del programa, código para reconocer los símbolos y la invocación al reconocedor gramatical. El estudiante deberá escribir en otro módulo (en el archivo: Sintactico.sin), el reconocedor gramatical para JCUP. En este al referirse a los terminales deberá usar los siguientes nombres, pues son los que se reconocen previamente en el reconocedor de símbolos por el programa Principal.java. Terminal Símbolo para JCUP "create" CREATE "index" INDEX "on" ON "table" TABLE "as" AS "drop" DROP "select" SELECT "from" FROM "where" WHERE "insert" INSERT "into" INTO "update" UPDATE "set" SET "exists" EXISTS "delete" DELETE "values" VALUES "not" NOT "and" AND "between" BETWEEN "is" IS "or" OR "null" NULL "varchar" VARCHAR "integer" INTEGER "date" DATE "+" MAS "-" MENOS "/" BARRA "*" ASTERISCO "<" MENOR ">" MAYOR "<=" MENORIGUAL ">=" MAYORIGUAL "<>" DISTINTO "=" IGUAL ";" PUNTOYCOMA "," COMA "(" CURIZQ ")" CURDER El símbolo ID (identificador) corresponde a una cadena de letras, dígitos y guión bajo ( _ ), que comienzan en letra. El símbolo STRING corresponde a una cadena de letras, dígitos, punto y guión bajo, y que va entre comillas simples. El símbolo NUMBER se corresponden a un número entero. En el reconocedor gramatical se deberá trabajar directamente con ID, STRING y NUMBER (estos ya habrán sido reconocidos por el reconocedor de símbolos). 3 de 5

Entorno de trabajo Se entregará un archivo comprimido (.zip) que contienen un directorio con lo siguiente: Un sub-directorio con las clases java correspondientes a JCUP y JLEX Los archivos de entrada, para lo cuales el parser verificará si son gramaticalmente correctos, e imprimirá determinadas salidas al ir reconociendo ciertas estructuras del lenguaje. Los archivos con las salidas "oficiales" correspondientes a los archivos de entrada. Un programa java (Principal.java) que contiene el analizador léxico e invoca al analizador sintáctico (o parser) que se pide realizar. Este programa deberá quedar intacto. El esqueleto del código fuente del analizador sintáctico (o parser) que se debe desarrollar en el laboratorio: Sintactico.sin Varios scripts para facilitar algunas tareas (*.bat en Windows, y *.sh en Linux): seteos.bat o seteos.sh: para setear las variables de entorno, generar-parser.bat o generar-parser.sh: para generar a partir del archivo Sintactico.sin el código java del parser en los archivos parser.java y sym.java compilar.bat o compilar.sh: para compilar el Principal.java junto con los archivos generados con el script anterior ejecutar.bat o ejecutar.sh para ejecutar el parser sobre los archivos de entrada, y generar la salida correspondientes comparar.bat o comparar.sh para comparar las salidas generadas con las oficiales El programa diff.exe para comparar las salidas. Para construir el Sintactico.sin se usará JCUP. Dichas herramientas generan código Java. Para trabajar en Java se recomienda el JDK (Java Development Kit) versión 1.2.2 o superior. Notas y consejos 1. Se deberá estudiar la salida que se imprime en cada caso, y agregar lo necesario en Sintactico.sin, de modo que las salidas del estudiante coincidan con las oficiales. 2. La solución del estudiante deberá ser idéntica a la solución "oficial". No debe haber diferencias entre ambas soluciones al ejecutar el utilitario diff.exe. Es decir, las mismas palabras, las mismas minúsculas y mayúsculas, los mismos espacios, etc. 3. Se recomienda hacer test de pruebas atendiendo todas las posibles sentencias que se puedan generar con la gramática. Desarrollo del trabajo Los trabajos se realizarán en grupos de 2 a 4 personas. Se sancionará con la pérdida del obligatorio si se detectan trabajos copiados, o si se hace una mala utilización del newsgroup. 4 de 5

Entrega Se realizará vía web, se comunicarán los detalles oportunamente. La misma se habilitará un par de días antes del vencimiento que es el día jueves 26 de junio hasta las 23:59 hs. Se deberán entregar los siguientes archivos: Sintactico.sin, con el analizador sintáctico, código fuente en JCUP Integrantes.txt, que contendrá la CI (7 dígitos) y el nombre de cada uno de los integrantes del grupo (sin usar tildes), y a continuación si desean hacer algún comentario sobre la ejecución. Formato de ejemplo del archivo integrantes.txt: 3123456,Gonzalez,Pablo 4567123,Martinez,Veronica 3444555,Garcia Rodriguez,Juan Jose Comentarios, solo si para algún test no funcionó bien. 5 de 5