Tema 2 · Compiladores
Test de Análisis de léxico
4 preguntas tipo test de exámenes reales de Compiladores.
Preguntas falladas
Aquí irán las que falles, dejes en blanco o marques para revisar, para repasarlas después.
Configura tu test
4 preguntas de Análisis de léxico
Ejemplos de preguntas de Análisis de léxico
4 de 4 preguntas. La respuesta correcta se ve al practicar.
- 1.
Queremos usar Flex para sustituir en un texto de entrada las apariciones de la cadena Junio 2021 por la cadena Julio 2021, sin modificar el resto del texto. Elige el fichero Flex que realizaría esta tarea:
- a)text
[a-zA-Z0-9]+ {printf("%s",yytext);} Junio {printf("Julio");} 2021 {printf("2021");} . {printf("%s",yytext);} - b)text
[^a-zA-Z\n \t]+ {printf("%s",yytext);} Junio {printf("Julio");} . {printf("%s",yytext);} - c)text
Junio {printf("Julio");} [0-9]+ {printf("%s",yytext);} .+ {printf("%s",yytext);}
- a)text
- 2.
En el analizador léxico de la práctica para el lenguaje miniC, realizado con Flex:
- a)Todas las expresiones regulares reconocen lexemas asociados a algún token.
- b)Cada token tiene un atributo asociado que hay que pasar a Bison a través de la variable yylval.
- c)Cada token tiene un lexema asociado que se almacena total o parcialmentte en la variable yytext.
- 3.
Queremos usar Flex para sustituir en un texto de entrada las cadenas entre paréntesis por puntos suspensivos. Se entiende que se sustituye el texto desde un paréntesis de apertura hasta el primero de cierre que aparezca. Elige el fichero Flex que realizaría esta tarea:
- a)text
%x ABRE %% \( {BEGIN ABRE;printf("(");} .* {printf("...");} <ABRE>\) {BEGIN INITIAL;printf(")");} - b)text
%x ABRE %% \( {BEGIN ABRE;printf("(");} <ABRE>.* {printf("...");} <ABRE>\) {BEGIN INITIAL;printf(")");} . {printf("%s",yytext);} - c)text
%x ABRE %% \( {BEGIN ABRE;printf("%s...",yytext);} <ABRE>[^)]* ; <ABRE>\) {BEGIN INITIAL;printf("%s",yytext);} . {printf("%s",yytext);}
- a)text
- 4.
Sólo una de estas tres expresiones regulares flex reconoce de forma completa la cadena ¿C++ o Java?. Indicar cuál:
- a)cadena (a-zA-Z|+| )text
%%"¿"{cadena}*"?" - b)cadena [a-zA-Z|\+|\?|¿]text
%% {cadena}+ - c)¿C[+]+[?a-z A-Z]*
- a)cadena (a-zA-Z|+| )text