Имеет ли смысл использовать `nom` для обработки пользовательских типов перечислений?

Я пытаюсь реализовать синтаксический анализатор для простого языка запросов. Цель состоит в том, чтобы генерировать operations из текста, а затем оцените их, прежде чем передать их вверх по дереву. Если я правильно понимаю, мне придется реализовать некоторые из номинальных черт (InputLength, InputTake, Slice).

Отчасти путем реализации InputTake черта, я понимаю, что я должен вернуть сублимы перечислений, которые представляют мои операции запроса, где разделение может быть выполнено частично через идентификатор. Например, я могу разобрать идентификатор name_of_var и это take_split() Метод может дать 2 среза, что не имеет смысла для меня.

Что мне здесь делать? Мне не нравится идея нарезать бул / число, поскольку они имеют смысл только в целом.

Что вы думаете о возвращении None в случае, если я считаю срез байта недействительным?

1 ответ

Для чего это стоит...

Я предположил, что тип вывода одного парсера был входом родительского парсера. Что действительно происходит, так это то, что все парсеры могут ожидать один и тот же тип ввода и возвращать то, что им нравится. Сгенерированный объект (который является AST) возвращается и обрабатывается в конце.

Другие вопросы по тегам