Смотрите наш PHP интерфейс . Это не построено с использованием традиционных LEX и YACC, но имеет преимущество, заключающееся в огромных усилиях по созданию надежного синтаксического анализатора и тестировании с жестким ударом в течение нескольких лет. Используя полностью разработанную грамматику, он анализирует полный PHP5 (это сложно, язык плохо определен), включая сбор всех подробностей о интерполированных строковых значениях, автоматически создает AST и может распечатывать AST обратно до полностью корректного макета, сохраняющего исходный текст PHP, включая комментарии.
Неизменно есть жизнь за парсингом. и необходимы инструменты для поддержки анализа или модификации кода для достижения реальной цели. Механизм, лежащий в основе интерфейса PHP, DMS Software Reengineering Toolkit , обеспечивает LEX- и YACC-подобный механизм, который мы используем, и дополнительно предоставляет возможность процедурной навигации / проверки / изменения AST, предоставляет источник -переписать правила переписывания для сопоставления с образцом и / или преобразования кода, поддерживает построение таблиц символов и обеспечивает среду управления и анализа потока данных. Благодаря этому механизму гораздо проще сосредоточиться на выполнении работы, чем пытаться внедрить такой механизм ad hoc по мере необходимости. (DMS фактически обрабатывает множество языков, используя внешние интерфейсы в качестве средства интеграции).