Имеет ли смысл использовать `nom` для обработки пользовательских типов перечислений?
Я пытаюсь реализовать синтаксический анализатор для простого языка запросов. Цель состоит в том, чтобы генерировать operations
из текста, а затем оцените их, прежде чем передать их вверх по дереву. Если я правильно понимаю, мне придется реализовать некоторые из номинальных черт (InputLength
, InputTake
, Slice
).
Отчасти путем реализации InputTake
черта, я понимаю, что я должен вернуть сублимы перечислений, которые представляют мои операции запроса, где разделение может быть выполнено частично через идентификатор. Например, я могу разобрать идентификатор name_of_var
и это take_split()
Метод может дать 2 среза, что не имеет смысла для меня.
Что мне здесь делать? Мне не нравится идея нарезать бул / число, поскольку они имеют смысл только в целом.
Что вы думаете о возвращении None
в случае, если я считаю срез байта недействительным?
1 ответ
Для чего это стоит...
Я предположил, что тип вывода одного парсера был входом родительского парсера. Что действительно происходит, так это то, что все парсеры могут ожидать один и тот же тип ввода и возвращать то, что им нравится. Сгенерированный объект (который является AST) возвращается и обрабатывается в конце.