Я изучаю, как использовать PetitParser на Pharo, Smalltalk, и я использую учебник, чтобы узнать его. В учебнике приведен следующий сценарий.Арифметический скрипт PetitParser из учебника не работает. Он продолжает говорить, что ParseOn - это нуль?
term := PPDelegateParser new.
prod := PPDelegateParser new.
prim := PPDelegateParser new.
term setParser: (prod , $+ asParser trim , term ==> [ :nodes | nodes first + nodes last ])/prod.
prod setParser: (prim , $*asParser trim , prod ==> [ :nodes | nodes first*nodes last ])/prim.
prim setParser: ($(asParser trim , term , $) asParser trim ==> [ :nodes | nodes second ])/number.
start := term end.
start parse:'1+2*3'.
Однако, когда я пытаюсь напечатать его на детской площадке я получить MessageNotUnderstood: приемник «parseOn:» равна нулю. Что я сделал не так?
Что такое 'number'? Я не вижу, чтобы это было определено в фрагменте. –
Вы правы, спасибо. Если бы вы могли рассмотреть этот вопрос, тот же код, но я добавил также метод деления и умножения. http://stackoverflow.com/questions/42034072/petitparser-evaluator-not-working-properly –