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
Duda SSL Final-21/02/11
Autor Mensaje
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.356
Agradecimientos dados: 900
Agradecimientos: 887 en 356 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #16
RE: Duda SSL Final-21/02/11
(23-05-2011 12:50)AGUSTIN27 escribió:  segun dice el libro es porque una GQR su conjunto de terminales es reemplazado por un noterminal en una o varias producciones.
[quote]

Si, pero la GQR tiene forma

noT-> noT1noT2
donde uno de esos 2 no terminales se reemplaza por un conjunto de Terminales

Vos en tu ejemplo tenes un terminal mas, entonces si reemplazas la produccion no queda de ninguna de las formas de LR

[quote='AGUSTIN27' pid='124900' dateline='1306165817']
de esta q me dicen? saben la funcion getchar?
dice asi:
Para analizar =0:A{ según ANSI C, un Scanner requiere 8 invocaciones a getchar. Rta: Verdedero.
Como funciona? Odio que me tomen cosas q no me las dan!!! mucha gracias por la ayuda chicos, sigan asi de copados que tenemos tiempo hasta el viernes jaja no me puedo quedar con dudas ya di mal dos veces, y el viernes voy a ir a rendir y encima cumplo años, asiq si o si quiero aprobar como sea.

Toco de oido, pero creo que era asi:
Getchar es una funcion que, como el nombre lo indica, pide un char. La usa el scanner para pedir un caracter, para encontrar los lexemas. Entonces cada vez que llama a getchar, le devuelve un caracter leido. Pero que pasa? A veces se necesitan leer caracteres espúreos para armar lexemas (y en consecuencia, tokens) por lo que estos se leen 2 veces. Te explico en tu ejemplo

Arranca el Scanner, tengo =0:A{ y hace getchar();

leo "="; falta leer 0:A{
como es posible que sea un operador de igualdad ==, o de asignacion =, debo leer el siguiente caracter, como espureo

hace getchar();

leo "0"; falta leer0:A{
Como encontro un caracter espúreo, determina que es el operador de asignacion =, y devuelve al parser el token. Ahora que pasa? Tiene que devolver el caracter leido al flujo de entrada para re-leerlo (pues estaba terminando de leer una palabra, no puede empezar otra)
Aca se usa una funcion, cuyo nombre ahora no recuerdo =P pero no viene al caso

de esta manera llevo leido = y falta leer 0:a{

hace getchar();

leo 0 y falta leer :a{
como puede ser un int, necesita leer un caracter espureo para ver donde termina el numero

hace getchar();

leo : y como es espúreo, detecta el numero 0, devuelvo el : al flujo de entrada, y retorno el token al parser

se va entendiendo ?

hace getchar();

leo :

hace getchar();

leo a, pero debo retornarlo al flujo de entrada

hace getchar();

leo a

hace getchar();

leo { -> retorno este al flujo de entrada, y entrego el token de a al parser


hace getchar();


lee {



ahora bien, que pasa ? al leer { ya sabe que es este lexema, no necesita leer un espúreo para ver si es otro lexema.
Por lo tanto no realiza otro getchar().


Se entendio ?

[Imagen: v34BEFt.gif]
23-05-2011 13:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AGUSTIN27 Sin conexión
Secretario de la SAE
INGENIEROOO :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 642
Agradecimientos dados: 20
Agradecimientos: 114 en 25 posts
Registro en: Feb 2010
Mensaje: #17
RE: Duda SSL Final-21/02/11
en resumidas cuentas tengo
=0:A{

= , 0 y A necesitan centinela, asi que voy a hacer dos getchar() por cada uno ( 3 x 2 = o sea 6 en total )
: , { no necesitan centinela ( asi que voy a hacer un getchar por cada uno ( 2 x 1 = 2 ) ------>>> 6 + 2 = 8 !
creo que lo pude entender bien, es un getchar() para leerlo y otro para devolverlo si necesita caracter.
creo que a la funcion que haces referencia vos que no te acordas es ungetc() no?
23-05-2011 14:49
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.356
Agradecimientos dados: 900
Agradecimientos: 887 en 356 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #18
RE: Duda SSL Final-21/02/11
esa, ungetc jajaajaja

Ojo con lo que escribiste, porque : si requiere centinela (existe un operador :: )
ahora que lo veo, eso implica que hice algo mal, en mi explicacion hay 9 getchar();


mmmmmmmmmm hay algo que no me encastra.. Despues lo miro tranquilo, estoy en el laburo =P

[Imagen: v34BEFt.gif]
23-05-2011 15:21
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AGUSTIN27 Sin conexión
Secretario de la SAE
INGENIEROOO :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 642
Agradecimientos dados: 20
Agradecimientos: 114 en 25 posts
Registro en: Feb 2010
Mensaje: #19
RE: Duda SSL Final-21/02/11
bueno dale gonza cuando puedas miralo con tiempo capo!
23-05-2011 20:22
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.356
Agradecimientos dados: 900
Agradecimientos: 887 en 356 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #20
RE: Duda SSL Final-21/02/11
La verdad ni idea
Lo unico que se me ocurriria es que : no requiera centinela, porque bueno, una vez que detecto : el unico lexema posible es ::
SIn embargo, al leer otro caracter (la A) daria error lexico, y retornaria la A al flujo de entrada, daria alguna señal de error (escribirlo en algun log, por ej), ignoraria esa lectura y seguiria con la A. Pero seguirian siendo 9

No se me ocurre nada, en esta no puedo ayudarte =( ahora le chiflo a imakuni a ver si puede ayudarte
Me equivoque !!
el operador :: es solo de c++
por lo que cuando hace getchar() y lee : automaticamente sabe que es ese lexema (operador) y luego hace getchar() y lee la A
el link: http://es.wikipedia.org/wiki/Operadores_de_C_y_C%2B%2B

[Imagen: v34BEFt.gif]
(Este mensaje fue modificado por última vez en: 23-05-2011 21:46 por gonnza.)
23-05-2011 21:34
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AGUSTIN27 Sin conexión
Secretario de la SAE
INGENIEROOO :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 642
Agradecimientos dados: 20
Agradecimientos: 114 en 25 posts
Registro en: Feb 2010
Mensaje: #21
RE: Duda SSL Final-21/02/11
esta bien gonza no te preocupes, en el libro ni siquiera esta. a ver si me podes dar una mano con este que tengo mis duduas; dice asi:

sea el siguiente PAS:
void L (void) { Match(I); while (ProximoToken() == C) { Match( C ); Match(I) ; } }
Escriba las reglas BNF a partir de las cuales se implementan este PAS, utilizando recursividad a derecha. Los noterminales deben escribirse entre corchetes angulares (<>).
Rta. <L> : I | I C <L>


1: es lo mismo poner <L> -> I | I C <L> ?? (((( cambio : por -> )))
2: por que en el segundo termino no es C I <L> ? ( cambio la posicion de C por la de I ) lo que yo entiendo que hace la funcion es que cuando el proximo token es c, hace Match( C ) y dsp Match (I); por eso pienso que va primero C I <L> .......... el <L> por la recursividad a derecha !

me podrias decir porque van dados vuelta?
(Este mensaje fue modificado por última vez en: 24-05-2011 10:47 por AGUSTIN27.)
24-05-2011 10:46
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
lucho6 Sin conexión
Profesor del Modulo A
Sin estado :)
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 325
Agradecimientos dados: 5
Agradecimientos: 8 en 3 posts
Registro en: Nov 2008
Mensaje: #22
RE: Duda SSL Final-21/02/11
:: es de c++ ....

a lo mejor lee solo el ":" y lo toma como el ":" del operador ternario, pero seria.. medio fruta... bue, es sintaxis.
24-05-2011 11:00
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AGUSTIN27 Sin conexión
Secretario de la SAE
INGENIEROOO :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 642
Agradecimientos dados: 20
Agradecimientos: 114 en 25 posts
Registro en: Feb 2010
Mensaje: #23
RE: Duda SSL Final-21/02/11
no te entendi mucho lucho .....
ayudame con esta si podes !
dice asi
en ansi c, sea char a[7]; entonces, la expresion ++a es sintacticamente correcta para el programador. Rta: Falso.
no entiendo!! por q es falso ??
a[7] acaso no es un valorL y por eso si se puede dar que sea ++a ? porque el operador preincremento necesita un operando izquierdo que sea valorL ?
24-05-2011 11:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
joansilva86 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 21
Agradecimientos dados: 0
Agradecimientos: 4 en 2 posts
Registro en: May 2011
Mensaje: #24
RE: Duda SSL Final-21/02/11
Acordate que a es un puntero CONSTANTE, por eso no podes hacer ++a.

Saludos
Jota!!!
24-05-2011 13:02
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
lucho6 Sin conexión
Profesor del Modulo A
Sin estado :)
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 325
Agradecimientos dados: 5
Agradecimientos: 8 en 3 posts
Registro en: Nov 2008
Mensaje: #25
RE: Duda SSL Final-21/02/11
los dos puntos en C no aparecen en ningun operador, solo en el ternario, q es de la forma a? b : c (si a es verdadero, haces b, sino haces c) .. es como un if....

el operador que son dos dos puntos "::" no es de C, es de C++.

entonces.... para mi detecta a ":" y sabe que no puede venir nada despues, entonces no tiene que hacer unget, y ahi el total es 8... lo de valorL es correcto como dijo joan
24-05-2011 14:28
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AGUSTIN27 Sin conexión
Secretario de la SAE
INGENIEROOO :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 642
Agradecimientos dados: 20
Agradecimientos: 114 en 25 posts
Registro en: Feb 2010
Mensaje: #26
RE: Duda SSL Final-21/02/11
(24-05-2011 13:02)joansilva86 escribió:  Acordate que a es un puntero CONSTANTE, por eso no podes hacer ++a.

gracias joan por la respuesta, pero la verdad es que no te entendi muy bien.
si a[7] es un valorL entonces por que no puedo hacer ++a ?

entonces si podria hacer yo ++a[7] esto si seria correcto? ya que a[7] es mi valorL y no 'a' ? asi es ?
24-05-2011 17:12
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.356
Agradecimientos dados: 900
Agradecimientos: 887 en 356 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #27
RE: Duda SSL Final-21/02/11
Si, pero ojo con la precedencia, no sea cosa que primero haga +a, y luego a eso [7] (lo cual es un error, no podes hacer +aa)
Usa parentesis en esos casos

[Imagen: v34BEFt.gif]
24-05-2011 22:15
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AGUSTIN27 Sin conexión
Secretario de la SAE
INGENIEROOO :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 642
Agradecimientos dados: 20
Agradecimientos: 114 en 25 posts
Registro en: Feb 2010
Mensaje: #28
RE: Duda SSL Final-21/02/11
esta bien gracias gonza!
a ver si me sacas esta pequeña duda
en ansi c, char a[3]={1,2,3} ; es sintacticamente correcta. Rta: verdadero. es sintacticamente correcta, pero SEMANTICAMENTE es incorrecta no? ya que el tipo de dato del vector tiene que ser CHAR y tanto 1,2,3 son INT . estoy en lo cierto? gracias por ayudarme capo
25-05-2011 11:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ricitos Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 736
Agradecimientos dados: 9
Agradecimientos: 16 en 10 posts
Registro en: Apr 2008
Mensaje: #29
RE: Duda SSL Final-21/02/11
Revivo este topic

b/*e*/c/**/da:a=b/***/*/10"\*a*/"

Alguien me podria decir porque son lexemas
* otro
/ otro
31-07-2011 18:14
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 211
Agradecimientos dados: 1
Agradecimientos: 11 en 8 posts
Registro en: Mar 2010
Mensaje: #30
RE: Duda SSL Final-21/02/11
Porque dice "suponga que los tokens son: identificador, constante, y otro."
Como * y / son Operadores, entonces entran como categoría Otro por lo que dice el enunciado

[Imagen: firmbatty.png]
31-07-2011 18:17
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)