Je ne vois pas de différence fondamentale entre (+ (* 2 5) 1) et (+ 1 (* 
2 5)), le "+" est commutatif aux dernières nouvelles (ce qui n'est 
certes pas le cas du "-" ou du "/").

Intuitivement : tu as un bloc "2*5" à traiter d'abord, puis ce bloc est 
inclus dans un bloc "résultat + 1". Pourquoi dans un cas ça te 
retournerait "* 2 5" et dans l'autre "+ 1 résultat". Je veux dire, 
pourquoi les opérandes trouveraient leur ordre inversé dans un des 
traitements et pas dans l'autre ? Et quel intérêt cela aurait ? Peux-tu 
préciser un peu le problème ?

Cdt,
-- 
Jean-Baptiste


Bolo a écrit :
> Bonjour à tous,
>
> dsl de faire un double post à la fois sur le groupe rails et sur ruby,
> mais il semble plus avoir grand monde chez ruby.fr
>
>
> j'essaye de faire une méthode pour convertir une expression infix et
> prefix
> ca passe pas
> Ou est mon problème ?
> merci
> def parse_simple(expr, opers=%w(+ - * /))
>   return expr if opers.empty?
>   return parse_simple(expr, opers[1..-1]) unless expr.include?
> (opers.first)
>   "(#{opers.first} " +
>   expr.split(opers.first).map {|e|
>     p e
>      parse_simple(e, opers[1..-1]).strip
>      }.join(" ") +
>    ")"
> end
>
> def parse(expr, exprs = [])
>   while expr.gsub!(/\(([^\(\)]+)\)/) {"expr:#{(exprs <<
> parse_simple($1)).size - 1}"}; end
>   expr = parse_simple(expr)
>   while expr.gsub!(/expr:(\d+)/) {exprs[$1.to_i]}; end
>   expr
> end
>
>
> Test
> p "2 * 5 + 1
>
> ca me retourne (+ (* 2 5) 1)
>
> alors que ca devrait être (+ 1 (* 2 5))
> 5))"
> >
>
>   

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---

Répondre à