Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[CONSULTA] SSL - Finales sobre ungetc
Autor Mensaje
xtremer Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 6
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Jan 2018
Mensaje: #1
[CONSULTA] SSL - Finales sobre ungetc Dudas y recomendaciones Sintaxis y Semántica de los Lenguajes
Buenas gente, mientras estuve haciendo finales surgieron dudas de los que hablan sobre ungetc, dejo fragmentos de los enunciados (con link) y mi planteo + duda
tengo algunos otros ejercicios con más dudas jaja, pero dejo estos mientras tanto que quizás también pueda ayudar a otros
Gracias

Parcial 2018-12-17 Link

Problema
Analice la siguiente expresión:

a[i]=f(i)

Indique por lo menos tres tokens que no requieran ungetc para su detección

Resolución dice que son: [, ], (, )

Mi planteo + Duda
El scanner entiendo que haría la lectura de la siguiente manera..
1. a <- getchar (se lee una vez, idem con los otros 3,5,..)
2. [ <- ungetc porque [ no es identificador, por tanto 2 getchar (se lee dos veces)
3. i <- getchar
4. ] <- ungetc porque ] no es identificador, por tanto 2 getchar (se lee dos veces)
5. = <- getchar
6. f <- ungetc porque f no es operador, por tanto 2 getchar (se lee dos veces)
7. ( <- ungetc porque ( no es identificador, por tanto 2 getchar (se lee dos veces)
8. i <- getchar
9. ) <- ungetc porque ) no es identificador, por tanto 2 getchar (se lee dos veces)

No entiendo por que dice que los corchetes por ejemplo no necesitarían ungetc

Parcial 2020-02-12 Link

Problema
1. Indique cuántas invocaciones a ~ungetc~ son necesarias para *analizar léxicamente* el cuerpo de la función
2. Indique cuantas invocaciones a ~getchar~ son necesarias para detectar el *lexema* ~42~


int f(int x){
if(0)return 1;
return 42;
}


Mi planteo + Duda
1. if <- dos getchar, (dos lecturas)
2. ( <- ungetc porque ( no es identificador, por tanto 2 getchar
3. 0 <- getchar
4. ) <- ungetc porque ) no es identificador, por tanto 2 getchar
5. return <- 6 getchar (6 lecturas)
6. 1 <- ungetc porque 1 no es identificador, por tanto 2 getchar
7. ; <- ungetc porque ; no es constante real, por tanto 2 getchar
8. return <- 6 getchar
9. 4 <- ungetc porque 4 no es identificador, por tanto 2 getchar
10. 2 <- getchar
11. ; <- ungetc porque ; no es constante real, por tanto 2 getchar

La cantidad de ungetc coincide con la resolución, mi duda es si está bien analizado

Parcial 2020-03-03 Link

Enunciado
Dado el fragmento: 0xF+F0x+0L+L0
1. Indique cuantas invocaciones a getchar se necesitan para su análisis:
2. Indique cuantas invocaciones a ungetc se necesitan para su análisis:

Mi planteo + Duda
Cant. de llamadas a getchar: 19
Cant. de llamadas a ungetc: 6

1. 0xF <- 3 llamadas a getchar (3 lecturas, una por cada caracter)
2. + <- ungetc porque el + no es una constante entera, por tanto son 2 getchar (la primera lectura, y una nueva)
3. F0x <- ungetc porque F no es un operador, por tanto 2 getchar + 2 getchar (por los caracteres 0x)
4. + <- ungetc porque + no es un identificador, por tanto 2 getchar (la primera vez que lo leyó, más una nueva)
5. 0L <- ungetc porque 0 no es un operador, por tanto 2 getchar + 1 getchar (por la L)
6. + <- ungetc porque + no es una constante entera, por tanto 2 getchar
7. L0 <- ungetc porque L no es un operador, por tanto 2 getchar + 1getchar (por el 0)

Mi duda esta en que me da 1 llamada menos a getchar y ungetc, será por el EOF? ó que me olvidé?
17-02-2022 01:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
radevaom Sin conexión
Empleado del buffet
=]
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 14
Agradecimientos dados: 66
Agradecimientos: 17 en 4 posts
Registro en: Mar 2015
Mensaje: #2
RE: [CONSULTA] SSL - Finales sobre ungetc
Buenas! estoy estudiando para rendir en esta fecha. No se si ya rendiste pero contesto por lo que entiendo.

En el primero: vos le haces ungetc a [] y () porque justamente son centinelas de los identificadores previos, pero cuando lees el corchete por ejemplo, no necesitas hacer ungetc a la "i" porque no existen identificadores (por regla de BNF en C) que empiecen con [] () ni palabras reservadas que empiecen con [] (), ni nada que no sea únicamente el carácter de puntuación [, ], (, ). Por ende no necesitan un centinela porque conocemos ya la secuencia, entonces el scanner lee directamente el símbolo y sigue sin hacer el ungetc porque ya sabe que símbolo es.

en el segundo: me dio igual

en el tercero: También me dio igual que vos y estoy con la duda si el 7mo ungetc es lo ultimo de la secuencia, que al ser un identificador (L0) para saber cuando termina el nombre lee el siguiente espacio en blanco y lo devuelve con un ungetc. Lo que tambien pensé y no estoy seguro es que si lo que hay después de L0 fuera un fdt/eof, lo lee y se da cuenta que no es un carácter valido para nombre de identificador, entonces lo toma como centinela, no lo analiza aún y lo devuelve con un ungetc. Cuando retoma, retoma por lo ultimo devuelto por el ungetc y ahi se da cuenta que terminó y finaliza.
01-03-2022 04:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)