Universidad de Costa Rica
|
|
Resuelva en la computadora estas preguntas. Su respuesta debe ser completa.
1) [33 pts] Un ejemplo de la uso del lenguaje Snobol es el programa WordSize.sno que lee un archivo y calcula la cantidad de palabras de longitudes de entre 3 y nueve letras:
&TRIM = 1 WORDPAT = BREAK(&LCASE &UCASE) SPAN(&LCASE &UCASE "'-") . WORD COUNT = ARRAY('3:9',0) READ LINE = INPUT :F(DONE) NEXTW LINE WORDPAT = :F(READ) COUNT<SIZE(WORD)> = COUNT<SIZE(WORD)>+ 1 :(NEXTW) DONE OUTPUT = "WORD LENGTH NUMBER OF OCCURRENCES" I = 2 PRINT I = I + 1 OUTPUT = LPAD(I,5) LPAD(COUNT<I>,20) :S(PRINT) END |
1.a) [0 pts] Diga cuáles son los tokens y cuáles son los lexemas en este bloque de código.
1.b) [0 pts] Escriba una gramática que genere la mayor parte de los programas similares éste.
1.c) [11 pts] Haga un programa Lex que sirva para reconocer los tokens de este lenguaje.
1.c) [22 pts] Haga un programa Yacc que sirva para reconocer este lenguaje. Su programa debe usar el analizador léxico del punto anterior. Su respuesta debe ser completa. No caiga en el error de usar una gramática trivial.
2) [33 pts]
<P></P> <BLOCKQUOTE> <TABLE> <TR> <TD> <PRE>Contenedor primero </PRE> </TD> </TR> <TR> <TD> <PRE> Cambios y pruebas </PRE> </TD> </TR> </TABLE> </BLOCKQUOTE> |
<P></P> <BLOCK-QUOTE> <TABLE> <TR> <TD> <PRE>Contenedor primero </PRE> </TD> </TR> <TR> <TD> <PRE> Cambios y pruebas </PRE> </TD> </TR> <TABLE> </BLOCKQUOTE> |
/
". 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>
. 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
"&
".
2.a) [11 pts] Haga un programa Lex para reconocer los identificadores válido en C++, para que pueda usarlos como etiquetas XML.
2.b) [11 pts] Escriba una gramática que genere documentos XML bien formados.
2.c) [11 pts] Haga un programa Bison que determine si un documento XML está bien formado.
Adolfo Di Mare <adolfo@di-mare.com>.
|