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

Tarea #2 [solución]

Tokens de un documento XML

     

<P align=" center   "></P>
<BLOCKQUOTE>
  <TABLE>
    <TR>
      <TD>
        <PRE>Contenedor primero
        <BOOOM />
        </PRE>
      </TD>
    </TR>

    <TR>
      <TD>
        <PRE>  Cambios y pruebas 
        </PRE>
      </TD>
    </TR>
  </TABLE>
</BLOCKQUOTE>
<P align=" center   "></P>
<BLOCK_QUOTE>
  <TABLE>
    <TR>
      <TD>
        <PRE>Contenedor primero
        <BOOOM />
        </PRE>
      </TD>
    </TR>

    <TR>
      <TD>
        <PRE>  Cambios y pruebas 
        </PRE>
      </TD>
    </TR>
  <TABLE>
</BLOCKQUOTE>

      XML es estándard internacional para el intercambio de datos entre aplicaciones. Los documentos XML contienen etiquetas que abren y cierran un bloque de datos, con la ventaja de que también pueden estar anidadas. La etiquetas se encierran entre paréntesis angulares, y la etiqueta que cierra un bloque de datos tiene el mismo nombre que la que lo abre, con la diferencia de incluye el caracter "/". En la Figura, el documento XML de la izquierda está bien formado, mientras que el de la derecha no, pues en el de la derecha la etiqueta <TABLE> está mal cerrada porque no aparece el caracter "/", no existe la etiqueta de cierre para <BLOCK_QUOTE> y sobra al etiqueta de cierre </BLOCKQUOTE>. Si no hace falta usar un bloque de etiquetas se puede poner el caracter "/" al final de la etiqueta, como en el caso de <BOOOM />. El valor de los datos del documento, representado en este ejemplo por las hileras "Contenedor primero" y "Cambios y prueba", no pueden contener los caracteres "<", ">" o "&".

      Su trabajo consiste en hacer un programa que lea un archivo XML y que identifique cada uno de los componentes XML del documento. Por ejemplo, para el documento XML que se muestra en el cuadro, su programa debe identificar éstos componentes XML (tokens):

Token Valor
PARENTESIS <
ETIQUETA P
ETIQUETA align
CHARESPEC =
VALOR " center   "
PARENTESIS >
PARENTESIS <
CHARESPEC /
ETIQUETA P
PARENTESIS >
PARENTESIS <
ETIQUETA BLOCKQUOTE
PARENTESIS >
Token Valor
PARENTESIS <
ETIQUETA TABLE
PARENTESIS >
PARENTESIS <
ETIQUETA TR
PARENTESIS >
PARENTESIS <
ETIQUETA TD
PARENTESIS >
PARENTESIS <
ETIQUETA PRE
PARENTESIS >
TEXTO "Contenedor primero"
Token Valor
PARENTESIS <
ETIQUETA BOOM
CHARESPEC /
PARENTESIS >
CHARESPEC /
ETIQUETA PRE
PARENTESIS >
PARENTESIS <
CHARESPEC /
ETIQUETA TD
PARENTESIS >
... etc...

      No es difícil ver que las etiquetas son las palabras que aparecen entre paréntesis angulares, y que los valores son las hileras que aparecen entre comillas después de una etiqueta.

      Su programa puede ser generado automáticamente usando un programa generador de analizadores sintácticos, como por ejemplo Lex o Flex, los que son parte del generador de compiladores Bison/Yacc disponible en de la organización GNU en este sitio Internet:
      http://www.fg-soup.com/files/bfwizard-1.6.zip

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

[mailto:] Entrega de Tareas

Tiempo de entrega: 2 semanas
Modalidad: Individual

Soluciones

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