Я пытался сделать следующее, чтобы разобрать число «а», то один «а»:Non стремится Клини звезда в повышении дух й
*(lit("a")) >> lit("a")
К сожалению, Клини звезда *
в повышении :: spirit :: qi потребляет все «а» с нетерпением, после чего нет возврата, а последний lit(a)
ничего не может сопоставить.
Конечно, используя (например) grep
, следующий будет работать:
$ echo "aaa" | grep "a*a"
aaa
Каков наилучший способ обойти поведение ци здесь? Я понимаю, что откат может испортить семантические действия, поэтому давайте предположим, что qi используется только для хранения атрибутов в AST.
Использование +
вместо *
не решит мою проблему; Предположим, например, что у меня есть анализатор ignore_int_
который анализирует целые, но не производит никакого атрибута, то я мог бы использовать:
*ignore_int_ >> int_
хранить только последнее число.