Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Esta es dificil, a ver quien la sabe. Evaluar expresiones.

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Esta es dificil, a ver quien la sabe. Evaluar expresiones. Responder citando

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
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: LLeguele Responder citando

Exclamation 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..

Arrow pelikulero@aol.com
Volver arriba
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: r Responder citando

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
Mensaje    Asunto: ¿Me podrías mandar ese código? Responder citando

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
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.