| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Estela Invitado
|
Publicado: Lun 25 Nov, 2002 7:27 pm Asunto: Esta es dificil, a ver quien la sabe. Evaluar expresiones. |
|
|
Hola!
Lo dicho, necesito evaluar una expresión que tengo en una lista de AnsiStrings y se el tipo de cada elemento.
p.e.
a=2;b=3;c=4
(a + (b * c)) --> 14
a=true;b=false
(a && b) --> false
a=true;b=5.0
(a * b) --> ERROR!
No se....
¿Alguien sabe como se puede hacer o tiene algún programa que lo haga?
¡¡¡¡Muchisimas gracias!!!! |
|
| Volver arriba |
|
 |
DesaSoftware Invitado
|
Publicado: Lun 25 Nov, 2002 7:56 pm Asunto: |
|
|
Desgracidamente el programa que tenia "desaparecio" hace como 3 años cuando sali de la Ing.
Revisa un libro donde esten arboles binarios y todo ese tipo de cosas. Lo que tines que hacer es repetir los procesos de arboles en una estructura de datos (mediante pilas, colas y nodos) para poder evaluar expresiones.
Tambien puedes encontrar algo de eso en algun libro de compiladores (analizadores de tokens)
TODO EL PROBLEMA ESTA EN LA DEFINICION DE TU ARBOL
Obviamente debes tener una "lista" con tus "operadores" validos
otra con tus "operandos" validos
Divide el algoritomo en dos:
Primero evalucion de expresiones numericas..
y luego diseña la evaluacion de expresion logicas..
Disculpa no poder solucionarte COMPLETAMNTE el problema
Ing. Gabriel Góngora Navarrete |
|
| Volver arriba |
|
 |
yegros Invitado
|
Publicado: Lun 25 Nov, 2002 10:52 pm Asunto: LLeguele |
|
|
Mira yo voy em 6to. semestre de Ing. y estoy viendo como constuir un compilador, nuestro maestro el Ing. Rios hizo un programa que te genera codigo en builder o delphi´para cualquier expresiónque desees reconocer, una vez generado el codigo puedes obtener los tokens reconocidos que se encuentran en un arreglo y de ahi realizar un switch para realizar la operación correspondiente... si te urge puedes mandarme un mail y te mando el programa que hizo el ingeniero al cabo que pesa unos 500 kb. y es muy bueno..
pelikulero@aol.com |
|
| Volver arriba |
|
 |
Andrés Lt JG


Registrado: 30 Ago 2002Mensajes: 62Ubicación: Ramos Mejía
|
Publicado: Mar 26 Nov, 2002 6:43 am Asunto: |
|
|
Yo justo acabo de hacer un compilador este año, aunque fue bastante sencillo. Toda esa parte está hecha por medio de reglas en BNF, y luego con el PCYacc hicimos el parseo de nuestro fuente e íbamos generando el código assembler que corresponde (pasando por una polaca inversa en el medio, pero eso no viene al caso).
Quizás te sirva de algo buscar código relacionado con el yacc. _________________ "Todo es posible si Ud. no sabe de qué está hablando" |
|
| Volver arriba |
|
 |
j Invitado
|
Publicado: Mar 26 Nov, 2002 7:11 am Asunto: r |
|
|
esta es una gramatica que genmera un lenguaje de expresiones aritmeticas y logicas..................
tambien tengo el codigo fuente en builder 5. fue un trabajo para una materia e la U. asi que si quieres te lo mando...........
<Ini> --> <Or>
<Or> --> <Or> "|" <And>
<Or> --> <And>
<And> --> <And> "&" <Equal>
<And> --> <Equal>
<Equal> --> <Equal> "=" <Cmp>
<Equal> --> <Equal> "!" "=" <Cmp>
<Equal> --> <Cmp>
<Cmp> --> <Cmp> "<" "=" <Add>
<Cmp> --> <Cmp> ">" "=" <Add>
<Cmp> --> <Cmp> "<" <Add>
<Cmp> --> <Cmp> ">" <Add>
<Cmp> --> <Add>
<Add> --> <Add> "+" <Factor>
<Add> --> <Add> "-" <Factor>
<Add> --> <Factor>
<Factor> --> <Factor> "*" <Exp>
<Factor> --> <Factor> "/" <Exp>
<Factor> --> <Exp>
<Exp> --> <_Uni_> "^" <Exp>
<Exp> --> <_Uni_>
<_Uni_> --> <Aux_> <AuxUni> <Space>
<_Uni_> --> <Aux_> <Uni>
<_Uni_> --> <AuxUni> <Space>
<_Uni_> --> <Uni>
<_Uni> --> <Uni>
<_Uni> --> <Aux_> <Uni>
<Uni> --> "+" <_Uni>
<Uni> --> "-" <_Uni>
<Uni> --> "!" <_Uni>
<Uni> --> <Ide> "(" <Or> ")"
<Uni> --> <Ide>
<Uni> --> <AuxIde> <Aux_> "(" <Or>
<Uni> --> <Int> "." <ES>
<Uni> --> "." <ES>
<Uni> --> <ES>
<Uni> --> <Int> "." <Int>
<Uni> --> "." <Int>
<Uni> --> <Int>
<Uni> --> "(" <Or> ")"
<Ide> --> <Letter> <LetDig>
<Ide> --> <Letter>
<Int> --> <Int> "#"
<Int> --> "#"
<LetDig> --> <Letter> <LetDig>
<LetDig> --> <AuxDig> <LetDig>
<LetDig> --> <Letter>
<LetDig> --> "#"
<Letter> --> "E"
<Letter> --> "$"
<E> --> "E"
<Space> --> " " <Space>
<Space> --> " "
<AuxUni> --> <Uni>
<AuxIde> --> <Ide>
<AuxDig> --> "#"
<Aux_> --> <Space>
<ES> --> <Int> <E> "+" <Int>
<ES> --> <Int> <E> "-" <Int>
<ES> --> <Int> <E> <Int> |
|
| Volver arriba |
|
 |
Estela Invitado
|
Publicado: Mar 26 Nov, 2002 7:24 pm Asunto: ¿Me podrías mandar ese código? |
|
|
Te agradecería que me mandaras ese código a ver si me puede aclarar algo.
Mi dirección es ProyectoScara@yahoo.es
Gracias.
Estela. |
|
| Volver arriba |
|
 |
|