Из Parsekit: как сопоставить отдельные символы кавычек?
Если вы определяете парсер:
@start = int;
int = /[+-]?[0-9]+/
К сожалению, он не будет анализировать целые числа с префиксом «+», если вы не включите:
@numberState = "+" // at the top.
В приведенном выше анализе чисел парсер по умолчанию «Symbol» даже не упоминался, но он все еще активен и переопределяет пользовательские парсеры.
Итак, с числами вы все еще можете исправить это, добавив директиву. Что, если вы пытаетесь создать парсер для "++"? Я не нашел ни одной директивы, которая могла бы заставить работать следующий парсер.
@start = plusplus;
plusplus = "++";
Влияние парсеров по умолчанию на пользовательский парсер кажется настолько произвольным. Почему я не могу разобрать "++"?
Можно ли просто полностью отключить парсеры по умолчанию? Кажется, они мешают, если я не делаю что-то общее.
Или, может быть, я все неправильно понял.
РЕДАКТИРОВАТЬ:
Я нашел парсер, который будет анализировать plus plus:
@start = plusplus;
plusplus = plus plus;
plus = "+";
Я предполагаю, что ответ таков: буквальные символы, определенные в вашем синтаксическом анализаторе, не могут перекрываться между синтаксическими анализаторами по умолчанию; Он должен полностью содержаться хотя бы одним из них.