UTNianos

Versión completa: Aporte - SSL - Final 15/12/2014 resuelto y corregido
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Buenas gente, les dejo el final que tomaron hoy en sintaxis, está corregido y resuelto.

EDIT

En el reverso solo habian algunas hipotesis de trabajo, nada que valiera la pena sacar.

Saludos!
Felicitaciones!

Qué significa que tengan la misma semántica?
que tienen el mismo significado, que realizan la misma accion
¿Te dan los famosos quince minutos para poder leerlo y después irte (como si te hubieses ausentado)?
Sisi, te los dan
Yo me saque 9.
Solo diferí en dos cosas:
me olvide de poner el void en operadorAditivo() y lo escribi como:
{ TOKEN TOK = ProximoToken(); if (TOK == SUMA || TOK == RESTA) Match(TOK); else ErrorSintactico();}

Con respecto al punto 2, no es e1,RRR? por cada 'a' tiene que haber dos 'b', al sacarse de la pila el que esta en el tope se tienen que agregar 3.
No entiendo tu pregunta. Y no tienen que haber dos b por cada a. Tiene que haber una b más que las a.
Buenos dias, les dejo el final de Sintaxis del Lunes 15 de Diciembre 2014. Mi nota fue un 2, ¿me ayudan a discutir los temas? ¿cuales fueron los errores?

Desde ya muchas gracias y espero que les sirva a todos
1) Mesclaste c con smalltalk…. deberia haber sido asi

void operadorAditivo (void){

TOKEN t = proximoToken();

swicht(t) {

case SUMA:
Match(SUMA);
break;

case RESTA:
Match(RESTA)
break;;

deafult:
ErrorSintactico(t);
}
}

O bien en su forma mas compacta:

void operadorAditivo (void){

TOKEN t = proximoToken();

swicht(t) {

case SUMA:
case RESTA:
Match(t);
break;

deafult:
ErrorSintactico(t);
}
}

3)

a) Error sintáctico, debería ser escrito como int función (int a, int b) { return a+b;}

b) Tiene una o (letra) en el lado derecho del operador asignación, tiene un punto y coma de mas dentro del for

c) No tiene error, incluso tampoco es semantico.

d) No tiene error

e) Le falta los parentesis al if... deberia ser escrito como if (a%2)

Parte 2)

1) No se...

2) Falso, tiene la misma definicion.

3) Verdadero, determina la precedencia y asocitividad.

4) Falso, los terminales son las hojas y los no terminales los nodos intermedios, la raiz es el axioma.

5) Falso, el algoritmo de thompson construye un automata que solo tiene un estado final.

6) Falso, la equivalente seria (a+b)(c+epsilon).

7) Verdadero.


Actualizacion:

Cuando me lo puse a resolver no tenia ningun mensaje.... veo ahora que lo resolvieron mas rapido que yo.

Actualizacion de nuevo:

La flashe que habian posteado el final y pedian la resolucion... estoy re loco
Hola, felicitaciones!

Te hago una consulta: que sea derivable por bnf, implica que es sintacticamente correcto?
Por ejemplo 2=1, es una expresión derivable, y pero obviamente el analizador semántico lo detectaría porque 2 es una constante y no un valorL, pero es sintacticamente correcta?

Pasa que en los libros, al menos hay 4 contradicciones al respecto, y no se que creer.
A mi la lógica me indica que si es derivable, es sintacticamente correcto. Ya que el analizador sintactico no va a detectar ningún error en esa expresión.

Gracias!
mergee los temas
(16-12-2014 11:51)Knofm escribió: [ -> ]Hola, felicitaciones!

Te hago una consulta: que sea derivable por bnf, implica que es sintacticamente correcto?
Por ejemplo 2=1, es una expresión derivable, y pero obviamente el analizador semántico lo detectaría porque 2 es una constante y no un valorL, pero es sintacticamente correcta?

Pasa que en los libros, al menos hay 4 contradicciones al respecto, y no se que creer.
A mi la lógica me indica que si es derivable, es sintacticamente correcto. Ya que el analizador sintactico no va a detectar ningún error en esa expresión.

Gracias!

Según el libro...no...hace hincapié un par de veces en que puede ser derivable y sintacticamente incorrecto, porque hay aclaraciones que son en lenguaje natural y corresponden a la sintaxis.

(16-12-2014 02:05)rihardmarius escribió: [ -> ]No entiendo tu pregunta. Y no tienen que haber dos b por cada a. Tiene que haber una b más que las a.

Tenes razón, no vi bien el lenguaje, que gil.
(16-12-2014 12:12).-Fede-. escribió: [ -> ]
(16-12-2014 11:51)Knofm escribió: [ -> ]Hola, felicitaciones!

Te hago una consulta: que sea derivable por bnf, implica que es sintacticamente correcto?
Por ejemplo 2=1, es una expresión derivable, y pero obviamente el analizador semántico lo detectaría porque 2 es una constante y no un valorL, pero es sintacticamente correcta?

Pasa que en los libros, al menos hay 4 contradicciones al respecto, y no se que creer.
A mi la lógica me indica que si es derivable, es sintacticamente correcto. Ya que el analizador sintactico no va a detectar ningún error en esa expresión.

Gracias!

Según el libro...no...hace hincapié un par de veces en que puede ser derivable y sintacticamente incorrecto, porque hay aclaraciones que son en lenguaje natural y corresponden a la sintaxis.

(16-12-2014 02:05)rihardmarius escribió: [ -> ]No entiendo tu pregunta. Y no tienen que haber dos b por cada a. Tiene que haber una b más que las a.

Tenes razón, no vi bien el lenguaje, que gil.

Es sintácticamente correcto todo aquello que sea derivable de la BNF. Ocurre que el libro confunde lo que es semánticamente incorrecto y sintácticamente incorrecto. Es semánticamente incorrecto todo aquello que sea derivable y que no cumpla con las restricciones redactadas en lenguaje natural.
(16-12-2014 12:32)Zeva escribió: [ -> ]
(16-12-2014 12:12).-Fede-. escribió: [ -> ]
(16-12-2014 11:51)Knofm escribió: [ -> ]Hola, felicitaciones!

Te hago una consulta: que sea derivable por bnf, implica que es sintacticamente correcto?
Por ejemplo 2=1, es una expresión derivable, y pero obviamente el analizador semántico lo detectaría porque 2 es una constante y no un valorL, pero es sintacticamente correcta?

Pasa que en los libros, al menos hay 4 contradicciones al respecto, y no se que creer.
A mi la lógica me indica que si es derivable, es sintacticamente correcto. Ya que el analizador sintactico no va a detectar ningún error en esa expresión.

Gracias!

Según el libro...no...hace hincapié un par de veces en que puede ser derivable y sintacticamente incorrecto, porque hay aclaraciones que son en lenguaje natural y corresponden a la sintaxis.

(16-12-2014 02:05)rihardmarius escribió: [ -> ]No entiendo tu pregunta. Y no tienen que haber dos b por cada a. Tiene que haber una b más que las a.

Tenes razón, no vi bien el lenguaje, que gil.

Es sintácticamente correcto todo aquello que sea derivable de la BNF. Ocurre que el libro confunde lo que es semánticamente incorrecto y sintácticamente incorrecto. Es semánticamente incorrecto todo aquello que sea derivable y que no cumpla con las restricciones redactadas en lenguaje natural.

Tiene razón zeva.

Si es derivable de la BNF => es sintácticamente correcto
Si no cumple con las restricciones => es un error de semántica estática (error semántico)

Yo lo hable varias veces con mi profesor (zuñiga), y me dijo eso, además de que el libro tiene muchas contradicciones.

El tema con el libro es que cuando fue escrito se diferenciaban los términos sintactica/semantica-mente correcto/incorrecto para el compilador y para el usuario. Cosa que ya no se usa más. Ahora se habla unicamente del compilador.

El ejemplo que me dio para que entendiera fue el de 1 < 2 < 3, que es semanticamente correcto para el compilador pero no para el usuario.

Dejo que los mails que nos intercambiamos con el grupo yahoo.

Cita:Tengo la siguiente duda:

Si una expresión es derivable según la BNF oficial de determinado lenguaje, ¿es una expresión sintácticamente correcta?

Mi duda surge por lo siguiente, el libro dice en la pag. 48:

"La expresión obtenida es “sintácticamente correcta” porque la pudimos derivar de la BNF oficial del lenguaje Pascal. Sin embargo, esta expresión solo tiene sentido si ambas variables son Booleanas."

Haciendo referencia a la expresión A or B.


Pero luego hay un ejercicio que dice:


* Ejercicio 25 *
Las dos derivaciones del Ejemplo 20, ¿producen expresiones “sintácticamente correctas” en Pascal? Justifique su respuesta. ¿Qué podría hacer para mejorar esta situación?


Las derivaciones son:


A or <F>
A or <N>
A or 12

<E>
<ES>
<T>
<F>
not <F>
not 436


y en las respuestas dice (las oficiales que estan al final del libro):


* Ejercicio 25 *
No. Son derivables pero no sintácticamente correctas.


Lo cual me confunde ya que es contradictorio.


Gracias y saludos.

Cita:Desde el punto de vista del compilador, si una expresión es derivable, entonces es sintácticamente correcta. Las restricciones como el tipo de dato son restricciones semánticas, si no se cumplen tenemos un error semántico, no sintáctico.
Insisto, esto desde el punto de vista del compilador.
Saludos
--
Eduardo Zúñiga
(16-12-2014 00:32)rihardmarius escribió: [ -> ]que tienen el mismo significado, que realizan la misma accion

Y cómo es que tienen el mismo significado dos constantes con nombre diferentes?
Páginas: 1 2
URLs de referencia