Можно ли использовать лексер / парсер в качестве транскодера?

Я смотрю на преобразование процедур / пакетов plsql в классы Java. Я только что наткнулся на "парсер ANTLR PL/SQL 11g" ( ссылка). Все еще пытаюсь понять, что он делает и как его использовать. Предполагая, что у меня есть отображение между конструкциями plsql и java, возможно ли использовать этот синтаксический анализатор plsql для генерации java-кода?

3 ответа

Решение

Другой плакат гласит: "Парсера недостаточно".

Я согласен, но хочу доказать, что анализатор еще далек от практической реализации (даже если предположить, что он создает полный AST).

Вам также нужно как минимум разрешение имен и типов, чтобы вы знали, какие типы и операторы в Java использовать, когда вы сталкиваетесь с оператором PLSQL. Для хорошей работы вам могут потребоваться различные виды анализа потоков (контроль и поток данных).

См. Какие шаблоны можно применять в коде, чтобы упростить перевод на другой язык программирования? для некоторого обсуждения трудностей.

Да, но просто бросить грамматику в проблему недостаточно. Вам нужно будет выяснить, как вы будете отображать семантику PL/SQL в Java. Использование связанного синтаксического анализатора, вероятно, поможет, так как обходчик абстрактного синтаксического дерева предоставлен в том же проекте. Генерация Java-кода не должна быть трудной, но не тривиальной задачей.

Я бы использовал Xtext и Xtend. Действительно волшебный. Пожалуйста, смотрите их видео на Vimeo.

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