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]
-~----------~----~----~----~------~----~------~--~---