Когда я пытаюсь запустить этот код на pharo, мои ответы несколько отключены. Я пытаюсь оценить 1-2 + 3, но по какой-то причине он делает 1- (2 + 3), и я не понимаю, почему это так. Спасибо за ваше время.Оценщик PetitParser не работает должным образом
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'