Мне неизвестен какой-либо общий лексер или генератор парсеров, специально предназначенный для RPython.Некоторые с выходом Python могут работать, но я бы не стал на это ставить.Однако в rlib.parsing
есть набор инструментов для разбора.Это кажется вполне пригодным для использования.OTOH, в документации есть предупреждение: по сообщениям, оно все еще находится в разработке, экспериментально и пока используется только для интерпретатора Prolog.
В качестве альтернативы, вы можете написать интерфейс вручную.Предоставленные Lexer могут быть раздражающими и неестественными (вы можете извлечь вспомогательные модули для DFA, используемых реализацией Python).Но парсеры - это просто, если вы знаете правильные алгоритмы.Я большой поклонник "анализаторов приоритетов операторов сверху вниз", также называемых "синтаксические анализаторы Pratt", которые достаточно просты (рекурсивный спуск), но делают все проблемы с синтаксическим анализом выражений (вложенность, приоритет, ассоциативность и т. Д.) Быстрыми.О них удручающе мало информации, но мне было достаточно нескольких постов в блоге:
- Один за Крокфорд (хотя я бы не рекомендовал это, он выбрасывает много не связанных между собойзаполняет синтаксический анализатор и затемняет его),
- еще один на effbot.org (использует Python),
- и третий, к сожалению, даже менее известныйпарень, который сам разрабатывает язык, Роберт Нистром .