Можно ли использовать лексер / парсер в качестве транскодера? - PullRequest
1 голос
/ 19 октября 2011

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

Ответы [ 3 ]

2 голосов
/ 20 октября 2011

Другой автор говорит, что "парсера недостаточно".

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

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

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

1 голос
/ 19 октября 2011

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

0 голосов
/ 26 октября 2011

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

...