Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1322
II Semestre 2009
[<=] [home] [<>] [\/] [=>]
CI-1322 Autómatas y compiladores

Tarea #6 [solución]

Reconocedor SQLite

-- Entidad Relación Atributo Valor
CREATE TABLE [ERAV] (
    [ID_ENT]     INTEGER   NOT NULL, -- <K+++> <E> Entidad
--  [REL] NOT NULL,                            <R> Relación
      [REL_ID]   SMALLINT  NOT NULL, -- <+K++>
      [REL_SUB]  SMALLINT  NOT NULL, -- <++K+>
      [REL_TYPE] CHAR(01)  NOT NULL,
    [ATTRIB]     INTEGER   NOT NULL, -- <+++K> <A> Atributo
--  [VAL] NOT NULL, -- Solo uno no es NULL     <V> Valor
      [VAL_INT]    INTEGER,  -- entero o referencia a "WORD"
      [VAL_FLOAT]  FLOAT,    -- punto flotante

      [VAL_TIME]   TIMESTAMP, -- tiempo
      [VAL_DATE]   DATE,      -- fecha
      [VAL_HOUR]   TIME,      -- hora

      [VAL_BLOB]   BLOB,      -- valor binario enorme

    CONSTRAINT [ERAV_KEY] UNIQUE
      ( [ID_ENT],[REL_ID],[REL_SUB],[ATTRIB] )
);

      Implemente un reconcedor Lex/Yacc que reciba sentencias SQL que declaren una base de datos y genere un documento XML que describa esa base de datos.

<table name="ERAV">
    <item name="[ID_ENT]"    type="INTEGER"  attrib="NOT NULL" />
    <item name="[REL_ID]"    type="SMALLINT" attrib="NOT NULL" />
    <item name="[REL_SUB]"   type="SMALLINT" attrib="NOT NULL" />
    <item name="[REL_TYPE]"  type="CHAR(01)" attrib="NOT NULL" />
    <item name="[ATTRIB]"    type="INTEGER"  attrib="NOT NULL" />
    <item name="[VAL_INT]"   type="INTEGER" />
    <item name="[VAL_FLOAT]" type="FLOAT" />
    <item name="[VAL_TIME]"  type="TIMESTAMP" />
    <item name="[VAL_DATE]"  type="DATE" />
    <item name="[VAL_HOUR]"  type="TIME" />
    <item name="[VAL_BLOB]"  type="BLOB" />
    <constraint name="[ERAV_KEY]" attrib ="UNIQUE">
        <item name="[ID_ENT]" />
        <item name="[REL_ID]" />
        <item name="[REL_SUB]" />
        <item name="[ATTRIB]" />
    </constraint>
</table>

      Entregue su tarea por correo electrónico, como lo hizo anteriormente.

[mailto:] Entrega de Tareas

Tiempo de entrega: 10 días
Entregue su documentación en la primera fecha, y luego entregue el programa completo en la segunda fecha.
Segunda etapa: 3 días
Modalidad: En parejas

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2009
Derechos de autor reservados © 2009
[home] <> [/\]