wenn ich versuche, diesen Code auf Pharo laufen, sind meine Antworten etwas aus. Ich versuche, 1-2 + 3 zu bewerten, aber aus irgendeinem Grund macht es 1- (2 + 3) und ich verstehe nicht, warum das so ist. Vielen Dank für Ihre Zeit.PetitParser Evaluator funktioniert nicht richtig
number := #digit asParser plus token trim ==> [ :token | token inputValue asNumber ].
term := PPUnresolvedParser new.
prod := PPUnresolvedParser new.
term2 := PPUnresolvedParser new.
prod2 := PPUnresolvedParser new.
prim := PPUnresolvedParser new.
term def: (prod , $+ asParser trim , term ==> [ :nodes | nodes first + nodes last ])/term2.
term2 def: (prod , $- asParser trim , term ==> [ :nodes | nodes first - nodes last ])/ prod.
prod def: (prim , $* asParser trim , prod ==> [ :nodes | nodes first * nodes last ])/ prim.
prod2 def: (prim , $/ asParser trim , prod ==> [ :nodes | nodes first/nodes last ])/ prim.
prim def: ($(asParser trim , term , $) asParser trim ==> [ :nodes | nodes second ])/number.
start := term end.
start parse: '1 - 2 + 3'