ты если хочешь разрешить проблему precedence в грамматике, то это что-то типа
expr: add
add: mult ((+ | -) mult)*
mult: term ((* | /) term)*
term: number
Я не знайомий з цією нотацією, на жаль. Але ідею я зрозумів.
Мене тут мабуть більше непокоїть робота зі стейтом парсеру. По-ідеї, це все можна організувати як data flow просто, для мене такий підхід виглядав би природніше.
Але я не дойобуюсь, це просто роздуми) все круто, молодець 👍