Universidad de Costa Rica
|
|
|
|
|
Duración: dos horas. Lea bien el examen antes de hacerlo. El examen es a libro abierto. Cuenta la redacción y la ortografía. Puede hacer el examen con lápiz. Resuelva todas las preguntas. ¡No haga más de lo que se le pide!
1) [33 pts] Considere este autómata cuyo estado inicial es 1, y cuyos estados finales son { 2,3,4,6 }:
| 0 | 7 | 9 | X | A |
------+---+---+---+---+---+
==> 1 | 2 | 4 | 4 | | | 0 ==> 0 == { 0 }
------+---+---+---+---+---+
** 2 | 3 | 3 | | 5 | | 7 ==> 1-7 == { 1,2,3,4,5,6,7 }
------+---+---+---+---+---+
** 3 | 3 | 3 | | | | 9 ==> 8-9 == { 8,9 }
------+---+---+---+---+---+
** 4 | 4 | 4 | 4 | | | X ==> x X == { x,X }
------+---+---+---+---+---+
5 | 6 | 6 | 6 | | 6 | A ==> A-F == { A,B,C,D,E,F } U { a,b,c,d,e,f }
------+---+---+---+---+---+
** 6 | 6 | 6 | 6 | | 6 |
------+---+---+---+---+---+
| 0 |1-7|8-9|x X|A-F|
+---+---+---+---+---+
1.a) [0 pts] Dibuje este autómata. Explique cómo es el lenguaje reconocido por este autómata.
1.b) [3 pts] Diga a qué expresión regular corresponde este autómata.
1.c) [11 pts] Minimice este autómata. Explique lo que hace en cada paso.
1.d) [11 pts] Construya la tabla LL(1) para esta gramática. Justifique por qué incluye cada producción en la tabla.
1.e) [8 pts]
Muestre cómo procesa la hilera "0x1A2B3C" el
autómata LL(1).
2) [33 pts] Considere la siguiente gramática U:
S -> id = S | S + S | id
2.a) [9 pts] Demuestre que esta gramática es ambigua y modifíquela para obtener G, una gramática equivalente pero que no es ambigua.
2.b) [8 pts] Hagas las tablas SLR(1) para G. Explique lo que hace.
2.c) [8 pts] Hagas las tablas LALR(1) para G. Explique lo que hace.
2.d) [8 pts] Hagas las tablas LR(1) para G. Explique lo que hace.
3) [33 pts]
|
<TABLE BORDER="1" CELLPADDING="0" CELLSPACING="0">
<TR> <TH> Año </TH> <TH> Ganancia </TH>
<TH> Pérdidas </TH> <TH> Reclamos </TH> </TR>
<TR> <TD> 2007 </TD> <TD> 1,200,000 </TD>
<TD> 1,400,000 </TD> <TD> 600,000 </TD> </TR>
<TR> <TD> 2008 </TD> <TD> 1,500,000 </TD>
<TD> 1,900,000 </TD> <TD> 800,000 </TD> </TR>
</TABLE>
|
TABLE,
TR,
TH y,
TD.
Para procesar esta cantidad enorme de archivos usted debe escribir
un programa
Lex/Yacc
que procese todos los archivos y que grabe en formato
CSV
todas las tablas extraídas de los documentos HTML fuente.
Use
setQuotedCSV().
void setQuotedCSV( std::string & res, const std::string & value )
"value" para ser grabado en un archivo CSV.
"res"."value" tiene espacios en blanco (whitespace)."value" tiene comillas dobles."value" tiene comas ",".'"' dentro de "value" por 2 comillas dobles [""].wchar_t.
{{ // test::setQuotedCSV()
std::string res;
setQuotedCSV( res, "," ); assertTrue( res == "\",\"" ); // [","]
setQuotedCSV( res, "2" ); assertTrue( res == "2" ); // [2]
setQuotedCSV( res, "" ); assertTrue( res == "" ); // []
setQuotedCSV( res, "4,5" ); assertTrue( res == "\"4,5\"" ); // ["4,5"]
setQuotedCSV( res, "K\"" ); assertTrue( res == "\"K\"\"\"" ); // ["K"""]
setQuotedCSV( res, "\r\n" ); assertTrue( res == "\"\r\n\"" ); // ["\r\n"]
}}
Adolfo Di Mare <adolfo@di-mare.com>.
|
|
|