Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
Autor Mensaje
Tomass Sin conexión
Empleado del buffet
.
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4
Agradecimientos dados: 2
Agradecimientos: 3 en 2 posts
Registro en: Aug 2010
Mensaje: #1
[Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial Ejercicios Sintaxis y Semántica de los Lenguajes
Hola que tal chicos?
Les cuento que hace poco tuve un parcial de sintaxis y hay 2 puntitos que la verdad no tengo mucha idea de como resorverlos y me gustaria que alguno me tire una mano
aca se los paso:

Sea el BNF:
tipodelexema -> palabraReservada | identificador | constanteNumerica | constanteCadena | constanteCaracter | otro

Sea la sentencia en ANSI C: do { C= getchar(); puts(“leo un carácter”); ---id} while ( C!=’e’);

• Dibuje una tabla con tres columnas: lexema, tipo de lexema, y si requiere o no centinela según el BNF definido.

en la columna tipo de lexema solo tuve una duda,que seria el (’e’) una constanteCaracter??
en el tema de centinela no tengo ni idea

y el otro punto es este


Sea otra producción de la sintaxis del graficador

<Formato> -> TITLE <LiteralCadena> |
CORCHETEIZQ <Rango> CORCHETEDER

Construya una función en ANSI C que implemente el PAS para esta producción


Bueno desde ya muchisimas gracias por su tiempo
ESpero sus respuestas
Saludos!!
30-11-2011 11:01
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Tomass recibio 1 Gracias por este post
Omnipresent (20-05-2016)
el pibe Sin conexión
Presidente del CEIT
Benderista
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.235
Agradecimientos dados: 5
Agradecimientos: 102 en 28 posts
Registro en: May 2011
YouTube
Mensaje: #2
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
Te tiro la primera. Si es constanteCaracter.
El centinela es una "marca" que sirve para, valga la redundancia, marcar la posibilidad de que el lexema continue.

Por ejemplo, si nostros tenemos la sentencia

a++;


Lee el + y como existen otros que contiene el + (ej: ++ , +=) se fija el siguiente, que es otro +
entonces pasa ++ y le pone un centinela

[Imagen: tolivi10.jpg]
2 Veces congresista por eArgentina
13 Veces congresista por eBolivia
1 Vez Emperador por eBolivia
Ex-Ministro de Salud eArgentino

[Imagen: Necromancer616.png]
30-11-2011 11:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 77
Agradecimientos: 195 en 69 posts
Registro en: Nov 2009
Mensaje: #3
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
Las constantes caracter van entre comillas simples, las constantes cadena entre comillas dobles.
Como dice el pibe, centinela llevan todos los lexemas que no tienen algo que indique dónde terminan. Los identificadores y números requieren centinela, también el operador = (porque podría no terminar ahí y ser ==), + (podría ser ++ o +=), - (podría ser -- o -=). Las palabras reservadas también llevan centinela, porque por ahí el escaner leyó tres letras y son for, pero podría no terminar ahí y ser el identificador foro. Otro que lleva centinela es & (porque existe &&) y |. No llevan centinela(puede faltarme alguno):
  • ,
  • *
  • ++
  • --
  • +=
  • -=
  • ==
  • &&
  • (
  • )
  • ;
  • ?
  • :
  • Constantes caracter y constantes cadena (porque sabés que terminan cuando encontrás la segunda comilla.
  • ~
  • ||
  • {
  • }
  • [
  • ]
  • >>
  • <<
También te pueden llegar a preguntar el número de ungets en vez de los centinela, el unget se hace cuando se leyó un caracter demás (el centinela), así que el nro de unget es igual al número de centinelas.


(30-11-2011 11:01)Tomass escribió:  y el otro punto es este


Sea otra producción de la sintaxis del graficador

<Formato> -> TITLE <LiteralCadena> |
CORCHETEIZQ <Rango> CORCHETEDER

Construya una función en ANSI C que implemente el PAS para esta producción

Bueno desde ya muchisimas gracias por su tiempo
ESpero sus respuestas
Saludos!!



void Formato(){ //Lleva el nombre del no terminal
TOKEN tok = proximoToken();//Como hay dos producciones necesito saber el proximo token para saber de cuál se trata
switch(tok){
case TITLE: //Si empieza con TITLE
Match(TITLE); //El primer token debe ser TITLE
LiteralCadena(); //De lo siguiente se ocupa otro PAS porque es un noTerminal
break;
case CORCHETEIZQ:
Match(CORCHETEIZQ);
Rango();
Match(CORCHETEDER);
break;
default: //Si apareció un token diferente
ErrorSintactico(tok);

}

}


(Este mensaje fue modificado por última vez en: 01-12-2011 00:49 por Anirus.)
30-11-2011 23:10
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Anirus recibio 1 Gracias por este post
franciscodiez (04-08-2013)
Tomass Sin conexión
Empleado del buffet
.
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4
Agradecimientos dados: 2
Agradecimientos: 3 en 2 posts
Registro en: Aug 2010
Mensaje: #4
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
Muchisimas gracias a los 2,se portaron de 10
ya lo entregue y habia echo algo masomenos asi
Gracias de vuelta
Saludos!!!
06-12-2011 09:43
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
diegocuervo Sin conexión
Secretario de la SAE
Invisible
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 467
Agradecimientos dados: 15
Agradecimientos: 12 en 9 posts
Registro en: Aug 2010
Mensaje: #5
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
De quien era este parcial? que profe?
04-06-2012 12:06
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 77
Agradecimientos: 195 en 69 posts
Registro en: Nov 2009
Mensaje: #6
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
Creo que es de Adamoli
04-06-2012 15:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
diegocuervo Sin conexión
Secretario de la SAE
Invisible
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 467
Agradecimientos dados: 15
Agradecimientos: 12 en 9 posts
Registro en: Aug 2010
Mensaje: #7
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
(30-11-2011 23:10)Anirus escribió:  Las constantes caracter van entre comillas simples, las constantes cadena entre comillas dobles.
Como dice el pibe, centinela llevan todos los lexemas que no tienen algo que indique dónde terminan. Los identificadores y números requieren centinela, también el operador = (porque podría no terminar ahí y ser ==), + (podría ser ++ o +=), - (podría ser -- o -=). Las palabras reservadas también llevan centinela, porque por ahí el escaner leyó tres letras y son for, pero podría no terminar ahí y ser el identificador foro. Otro que lleva centinela es & (porque existe &&) y |. No llevan centinela(puede faltarme alguno):
  • ,
  • *
  • ++
  • --
  • +=
  • -=
  • ==
  • &&
  • (
  • )
  • ;
  • ?
  • :
  • Constantes caracter y constantes cadena (porque sabés que terminan cuando encontrás la segunda comilla.
  • ~
  • ||
  • {
  • }
  • [
  • ]
  • >>
  • <<
También te pueden llegar a preguntar el número de ungets en vez de los centinela, el unget se hace cuando se leyó un caracter demás (el centinela), así que el nro de unget es igual al número de centinelas.


(30-11-2011 11:01)Tomass escribió:  y el otro punto es este


Sea otra producción de la sintaxis del graficador

<Formato> -> TITLE <LiteralCadena> |
CORCHETEIZQ <Rango> CORCHETEDER

Construya una función en ANSI C que implemente el PAS para esta producción

Bueno desde ya muchisimas gracias por su tiempo
ESpero sus respuestas
Saludos!!



void Formato(){ //Lleva el nombre del no terminal
TOKEN tok = proximoToken();//Como hay dos producciones necesito saber el proximo token para saber de cuál se trata
switch(tok){
case TITLE: //Si empieza con TITLE
Match(TITLE); //El primer token debe ser TITLE
LiteralCadena(); //De lo siguiente se ocupa otro PAS porque es un noTerminal
break;
case CORCHETEIZQ:
Match(CORCHETEIZQ);
Rango();
Match(CORCHETEDER);
break;
default: //Si apareció un token diferente
ErrorSintactico(tok);

}

}



Estos son los que no llevan centinela. Osea los que sabes que terminan ahí. Pero en otro ejercicio preguntaban, "cuales son centinela?". Osea que significa? cuales son los caracteres que indican que termina el lexema?
05-11-2012 12:48
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
CarooLina Sin conexión
Colaborador
2016! ❥
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.472
Agradecimientos dados: 931
Agradecimientos: 1.227 en 457 posts
Registro en: Sep 2010
Mensaje: #8
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
(05-11-2012 12:48)diegocuervo escribió:  
(30-11-2011 23:10)Anirus escribió:  Las constantes caracter van entre comillas simples, las constantes cadena entre comillas dobles.
Como dice el pibe, centinela llevan todos los lexemas que no tienen algo que indique dónde terminan. Los identificadores y números requieren centinela, también el operador = (porque podría no terminar ahí y ser ==), + (podría ser ++ o +=), - (podría ser -- o -=). Las palabras reservadas también llevan centinela, porque por ahí el escaner leyó tres letras y son for, pero podría no terminar ahí y ser el identificador foro. Otro que lleva centinela es & (porque existe &&) y |. No llevan centinela(puede faltarme alguno):
  • ,
  • *
  • ++
  • --
  • +=
  • -=
  • ==
  • &&
  • (
  • )
  • ;
  • ?
  • :
  • Constantes caracter y constantes cadena (porque sabés que terminan cuando encontrás la segunda comilla.
  • ~
  • ||
  • {
  • }
  • [
  • ]
  • >>
  • <<
También te pueden llegar a preguntar el número de ungets en vez de los centinela, el unget se hace cuando se leyó un caracter demás (el centinela), así que el nro de unget es igual al número de centinelas.


(30-11-2011 11:01)Tomass escribió:  y el otro punto es este


Sea otra producción de la sintaxis del graficador

<Formato> -> TITLE <LiteralCadena> |
CORCHETEIZQ <Rango> CORCHETEDER

Construya una función en ANSI C que implemente el PAS para esta producción

Bueno desde ya muchisimas gracias por su tiempo
ESpero sus respuestas
Saludos!!



void Formato(){ //Lleva el nombre del no terminal
TOKEN tok = proximoToken();//Como hay dos producciones necesito saber el proximo token para saber de cuál se trata
switch(tok){
case TITLE: //Si empieza con TITLE
Match(TITLE); //El primer token debe ser TITLE
LiteralCadena(); //De lo siguiente se ocupa otro PAS porque es un noTerminal
break;
case CORCHETEIZQ:
Match(CORCHETEIZQ);
Rango();
Match(CORCHETEDER);
break;
default: //Si apareció un token diferente
ErrorSintactico(tok);

}

}



Estos son los que no llevan centinela. Osea los que sabes que terminan ahí. Pero en otro ejercicio preguntaban, "cuales son centinela?". Osea que significa? cuales son los caracteres que indican que termina el lexema?

claro ponele tenes "int ab=10;

ab el scanner reconoce que es el token identificador cuando lee el "=", enotnces = es centinela

love
05-11-2012 15:31
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
diegocuervo Sin conexión
Secretario de la SAE
Invisible
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 467
Agradecimientos dados: 15
Agradecimientos: 12 en 9 posts
Registro en: Aug 2010
Mensaje: #9
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
(05-11-2012 15:31)CarooLina escribió:  
(05-11-2012 12:48)diegocuervo escribió:  
(30-11-2011 23:10)Anirus escribió:  Las constantes caracter van entre comillas simples, las constantes cadena entre comillas dobles.
Como dice el pibe, centinela llevan todos los lexemas que no tienen algo que indique dónde terminan. Los identificadores y números requieren centinela, también el operador = (porque podría no terminar ahí y ser ==), + (podría ser ++ o +=), - (podría ser -- o -=). Las palabras reservadas también llevan centinela, porque por ahí el escaner leyó tres letras y son for, pero podría no terminar ahí y ser el identificador foro. Otro que lleva centinela es & (porque existe &&) y |. No llevan centinela(puede faltarme alguno):
  • ,
  • *
  • ++
  • --
  • +=
  • -=
  • ==
  • &&
  • (
  • )
  • ;
  • ?
  • :
  • Constantes caracter y constantes cadena (porque sabés que terminan cuando encontrás la segunda comilla.
  • ~
  • ||
  • {
  • }
  • [
  • ]
  • >>
  • <<
También te pueden llegar a preguntar el número de ungets en vez de los centinela, el unget se hace cuando se leyó un caracter demás (el centinela), así que el nro de unget es igual al número de centinelas.


(30-11-2011 11:01)Tomass escribió:  y el otro punto es este


Sea otra producción de la sintaxis del graficador

<Formato> -> TITLE <LiteralCadena> |
CORCHETEIZQ <Rango> CORCHETEDER

Construya una función en ANSI C que implemente el PAS para esta producción

Bueno desde ya muchisimas gracias por su tiempo
ESpero sus respuestas
Saludos!!



void Formato(){ //Lleva el nombre del no terminal
TOKEN tok = proximoToken();//Como hay dos producciones necesito saber el proximo token para saber de cuál se trata
switch(tok){
case TITLE: //Si empieza con TITLE
Match(TITLE); //El primer token debe ser TITLE
LiteralCadena(); //De lo siguiente se ocupa otro PAS porque es un noTerminal
break;
case CORCHETEIZQ:
Match(CORCHETEIZQ);
Rango();
Match(CORCHETEDER);
break;
default: //Si apareció un token diferente
ErrorSintactico(tok);

}

}



Estos son los que no llevan centinela. Osea los que sabes que terminan ahí. Pero en otro ejercicio preguntaban, "cuales son centinela?". Osea que significa? cuales son los caracteres que indican que termina el lexema?

claro ponele tenes "int ab=10;

ab el scanner reconoce que es el token identificador cuando lee el "=", enotnces = es centinela

Buenísimo. Entonces un lexema,=, por ejemplo, es centinela por que pone fin al lexema ab,que es idenificador y los identificadores necesitan centinelas, y a su vez,por ejemplo, necesita de un centinela para saber donde termina, por que puede ser ==. Es correcto? osea un lexema puede ser centinela y necesitar otro centinela?
05-11-2012 16:24
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
CarooLina Sin conexión
Colaborador
2016! ❥
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.472
Agradecimientos dados: 931
Agradecimientos: 1.227 en 457 posts
Registro en: Sep 2010
Mensaje: #10
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
claro !! com vos dijiste =)

cuando el scanner detecta el "=" dps del ab, llama al unget c(que es lo mismo de cuando necesita centinela pero dicho con la funcion) y dps lee "=" denuevo y ahi se fija si es = o == comovos dijiste

love
05-11-2012 16:33
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
mianski Sin conexión
Empleado del buffet
volado
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 10
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Oct 2012
Mensaje: #11
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
(05-11-2012 16:24)diegocuervo escribió:  
(05-11-2012 15:31)CarooLina escribió:  
(05-11-2012 12:48)diegocuervo escribió:  
(30-11-2011 23:10)Anirus escribió:  Las constantes caracter van entre comillas simples, las constantes cadena entre comillas dobles.
Como dice el pibe, centinela llevan todos los lexemas que no tienen algo que indique dónde terminan. Los identificadores y números requieren centinela, también el operador = (porque podría no terminar ahí y ser ==), + (podría ser ++ o +=), - (podría ser -- o -=). Las palabras reservadas también llevan centinela, porque por ahí el escaner leyó tres letras y son for, pero podría no terminar ahí y ser el identificador foro. Otro que lleva centinela es & (porque existe &&) y |. No llevan centinela(puede faltarme alguno):
  • ,
  • *
  • ++
  • --
  • +=
  • -=
  • ==
  • &&
  • (
  • )
  • ;
  • ?
  • :
  • Constantes caracter y constantes cadena (porque sabés que terminan cuando encontrás la segunda comilla.
  • ~
  • ||
  • {
  • }
  • [
  • ]
  • >>
  • <<
También te pueden llegar a preguntar el número de ungets en vez de los centinela, el unget se hace cuando se leyó un caracter demás (el centinela), así que el nro de unget es igual al número de centinelas.


(30-11-2011 11:01)Tomass escribió:  y el otro punto es este


Sea otra producción de la sintaxis del graficador

<Formato> -> TITLE <LiteralCadena> |
CORCHETEIZQ <Rango> CORCHETEDER

Construya una función en ANSI C que implemente el PAS para esta producción

Bueno desde ya muchisimas gracias por su tiempo
ESpero sus respuestas
Saludos!!



void Formato(){ //Lleva el nombre del no terminal
TOKEN tok = proximoToken();//Como hay dos producciones necesito saber el proximo token para saber de cuál se trata
switch(tok){
case TITLE: //Si empieza con TITLE
Match(TITLE); //El primer token debe ser TITLE
LiteralCadena(); //De lo siguiente se ocupa otro PAS porque es un noTerminal
break;
case CORCHETEIZQ:
Match(CORCHETEIZQ);
Rango();
Match(CORCHETEDER);
break;
default: //Si apareció un token diferente
ErrorSintactico(tok);

}

}



Estos son los que no llevan centinela. Osea los que sabes que terminan ahí. Pero en otro ejercicio preguntaban, "cuales son centinela?". Osea que significa? cuales son los caracteres que indican que termina el lexema?

claro ponele tenes "int ab=10;

ab el scanner reconoce que es el token identificador cuando lee el "=", enotnces = es centinela

Buenísimo. Entonces un lexema,=, por ejemplo, es centinela por que pone fin al lexema ab,que es idenificador y los identificadores necesitan centinelas, y a su vez,por ejemplo, necesita de un centinela para saber donde termina, por que puede ser ==. Es correcto? osea un lexema puede ser centinela y necesitar otro centinela?

OJO no es el LEXEMA el centinela, sino el CARACTER. Es una diferencia sutil, pero importante. Recuerden que al scanner ingresan caracteres y este devuelve tokens (categorizaciones de los lexemas).

Saludos,
Ariel
14-11-2012 21:24
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
pampa833 Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 36
Agradecimientos dados: 47
Agradecimientos: 5 en 4 posts
Registro en: Nov 2012
Mensaje: #12
RE: [Sintaxis y Semantica de los Lenguajes] Ejercicio de parcial
Buenas!!

Una consulta, aprovechando las excelentes respuestas. El punto y coma ( ; ), ¿Qué tipo de lexema es?
20-05-2016 18:42
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)



    This forum uses Lukasz Tkacz MyBB addons.