Ответ 1
Я бы предложил попробовать ANTLR. ANTLRWorks может быть полезно.
Я написал генератор парсеров LL (1) самостоятельно в чистом PHP, так как я не знал о других решениях на основе PHP.
Я знаю вопрос Lex и Yacc в PHP задавали вопросы раньше, чем 1 год назад.
Есть ли новый зрелый генератор парсера PHP? Мои поиски привели меня к следующим: что вы думаете о них, других?
[Ответ:] Кто-то дал мне эту замечательную ссылку на старый вопрос: Есть ли альтернатива для flex/bison, которая может использоваться в 8-битных встроенных системах?
Эти сообщения позволили мне понять большую часть генерируемого кода ANTLR. Поэтому мой выбор остается прежним: ANTLR, хотя проект кажется мертвым. Я надеюсь, что мне не придется изменять код, поскольку я хотел бы сохранить его поддерживаемым.
Я подожду немного, чтобы увидеть, есть ли другой ответ, иначе я согласен с вашим советом продолжать использовать ANTLR
Я бы предложил попробовать ANTLR. ANTLRWorks может быть полезно.
Я написал генератор парсеров LL (1) самостоятельно в чистом PHP, так как я не знал о других решениях на основе PHP.
Я портировал Jison, клон Bison в javascript, на php. Результатом является синтаксический анализатор, способный обрабатывать очень простой и очень сложный лексинг/синтаксический анализ. Сейчас это часть Jison, но есть несколько обновлений в мой вилка.
Файлы здесь. См. Readme на этой странице, вы одновременно создаете парсер javascript и php, способный делать то же или разные вещи.
Это стабильно, быстро, легко и интересно использовать.
Существует PEG для php https://github.com/hafriedlander/php-peg
Последний файл грамматики для PHP 7.4: https://github.com/php/php-src/blob/af12aa8124232b8fb6e96736e1232f6e0d2554e8/Zend/zend_language_parser.y
PHP использует генератор синтаксического анализатора re2c, но, как я знаю, его синтаксис совместим с ANTLR.