Autor Tema: Arboles de análisis sintáctico ¿Como?  (Leído 7329 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Arboles de análisis sintáctico ¿Como?
« : octubre 13, 2011, 10:02:25 am »
Hola amigos de SvCommunity resulta que tengo que desarrollar pequeños algoritmos pero diseñando arboles de analisis sintactico (que la verdad nunca los habia hecho) estuve leyendo en google varias cosas de esto y lo mas que pude hacer fue esto:

La operacion es la siguiente:

Código: [Seleccionar]
promedio = (valor1+valor2+valor3)/cant_valores

Este es mi diseño en el arbol sintactico



Ahora ¿Esta bien lo que hices? Si esta mal, ¿Podiran orientarme?

Gracias

Edit: Olvide decir que tal vez este no sea el foro adecuado para este tema, pero es el que mas visito xD
« Última Modificación: octubre 13, 2011, 10:04:02 am por pippin »

ken2

  • Visitante
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #1 : octubre 13, 2011, 10:18:49 am »
Coma lodo.

Pura merda.

Odio este tema de merda de la universidad.

Pero ojala te salga bien, porque si te digo, te has metido en un huevo bien paloma.

Y más si vas a programar esta babosada !

Y más si vas a hacer un compilador

árboles sintácticos = pupu  x_x

Mejor leete la biografia recomendada, no busques en internet que casi todos los escritos
son bien escuetos.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #2 : octubre 13, 2011, 10:42:35 am »
@~: No todavia no hay codigo, es solo la representacion grafica, pero segun lo que hice, ¿esta bien?

@ken2: Si estoy de acuerdo contigo, es un tema muy aburridos, pero no voy a programar eso, como dije es solo la representacion grafica.

Gracias por su comentarios

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #3 : octubre 13, 2011, 10:48:11 am »
Ok, sigo intentadolo de la forma como lo entendi... este es un segundo ejercicio:

Código: [Seleccionar]
operación =(uno+dos)*(tres - jota)

Esta es la representacion:



Sigo pendiente de sus comentarios

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #4 : octubre 13, 2011, 11:35:50 am »
El primer diseño que pusiste esta malo, se supone que tenes que dividir entre la cantidad de valores y no multiplicar.

Los parentesis no son necesarios, puesto que la agrupacion esta mostrada implicitamente en cada nodo.

Algo que te puede ayudar a visualizar el arbol mas facilmente es convertir la siguiente expression de infix a prefix notation,

por ejemplo:

Código: [Seleccionar]
p = (a + b + c ) / d
se converte en

Código: [Seleccionar]
(:= p (/ (+ a b c) d ))
Luego, al ver claramente los operators y operands podes armar el arbol

Código: [Seleccionar]
        :=
       /    \
     p    division
            /    \
           +      d
         / | \ 
        a  b  c
 


El siguiente problema

Código: [Seleccionar]
a = ( b + c ) * (d - e)
Código: [Seleccionar]
(:= a (* (+ b c ) (- d e ) ) )
Código: [Seleccionar]
     :=
   /     \
  a       *
       /    \
      +      -
     / \    / \
    b   c  d   e
« Última Modificación: octubre 13, 2011, 11:38:49 am por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #5 : octubre 13, 2011, 01:43:23 pm »
@~: Gracias por ese aporte tan valioso...

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #6 : octubre 13, 2011, 02:18:45 pm »
Ahora tengo que hacer la notacion prefija de este ejercicio:

Código: [Seleccionar]
dosa = term – valor1 + (precio*50)
anterior = unoa + unob – unoc * dosa
Final = fin - anterior

Lo he hecho asi:

Código: [Seleccionar]
(:= dosa (+ (- term valor1) cant_valores ) (* precion 50 ) )
(:= anterior (*-+ unoa unob unoc dosa))
(:= Final (- fin anterior))

¿Estoy bien?

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #7 : octubre 13, 2011, 03:25:39 pm »
Fijate en escribir correctamente las variables.

En el primer statement de tu solucion tenes cant_valores, pero esta variable no esta en el problema,

Código: [Seleccionar]
dosa = term – valor1 + (precio*50)
(:= dosa (+ (- term valor) (* precio 50 ) ) )

algo que te puede ayudar es usar la regla de la sustitución para evaluar un statement, por ejemplo supongamos que

term = 20
valor= 5
precio= 10


entonces,

Código: [Seleccionar]
dosa = 20 - 5 + (10 * 50)
dosa = 15 + 500
dosa = 515

(:= dosa (+ (- 20 5) (* 10 50 ) ) )
(:= dosa (+ 15 500 ) )
(:= dosa 515 )

En tu segunda linea no estas siendo consistente, si vas a usar parentesis usalos, sino quitalos todos. La manera correcta es esta:

Código: [Seleccionar]
anterior = unoa + unob – unoc * dosa
(:= anterior (* (- (+ unoa unob) unoc) dosa) )

El ultimo estatement esta correcto


Estos links te pueden ayudar
http://www.programmerinterview.com/index.php/general-miscellaneous/postfix-vs-prefix/
http://c2.com/cgi/wiki?PolishNotation

pd: asegurate con tu profesor que esto es lo que debes entregar, o verifica en el libro. Es posible que te pidan no usar parentesis.
« Última Modificación: octubre 13, 2011, 03:32:19 pm por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #8 : octubre 13, 2011, 03:37:59 pm »
Fijate en escribir correctamente las variables.

En el primer statement de tu solucion tenes cant_valores, pero esta variable no esta en el problema,

Si... es por el afan...

Ya entiendo lo de los parentesis...

jaja el tercero esta muy facil nooo jajaja :D

Gracias por los enlaces y comentarios...

¿Ahora para hacer el arbol sintactico, debo hacerlo uno por uno o se debe hacer uno solo?

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #9 : octubre 13, 2011, 03:53:12 pm »
Por definición un árbol puede tener hojas y subarboles. En ese sentido un programa es un árbol entero con varios statements que forman bastantes subarboles.

Podes empezar representando cada statement a un árbol y luego unirlos en uno solo.
« Última Modificación: octubre 13, 2011, 03:55:05 pm por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Arboles de análisis sintáctico ¿Como?
« Respuesta #10 : octubre 14, 2011, 04:32:45 pm »
Agradesco a todos los que con sus aportes y comentarios me ayudaron a resolver estos faciles ejercicios... gracias de verdad