2009-03-28 2 views
5

Я хотел бы проанализировать источник REXX, чтобы я мог анализировать структуру программы с Java.Как я могу разобрать код REXX в Java?

Мне нужно сделать что-то вроде нормализации эквивалентных логических структур в источнике, которые синтаксически различны, найти повторяющиеся объявления переменных и т. Д., И у меня уже есть фон Java.

Любые более простые способы сделать это, чем писать нагрузку кода?

ответ

5

Если у вас есть BNF Rexx грамматику, то javacc может помочь вам построить AST (Abstract Syntax Tree) представление этого кода Rexx.

Более точно, JavaCC будет строить Java классы которые:

  • синтаксического анализа Rexx код и
  • фактически создает AST.

По-прежнему будет «загружаться код», но вы не должны были писать записи классов для этого парсера кода Rexx. Только его поколение.

1

Посмотрите ANTLR, это действительно хорошая работа построения AST, преобразуя его и т.д ... Она имеет хороший редактор (ANTLRWorks), построен на Java, и может отлаживать парсер/дерево ходунки пока они запускаются в вашем приложении. Действительно стоит исследовать любую работу по разбору.

8

REXX - не простой язык для анализа с помощью общих инструментов, особенно тех, которые ожидают грамматику BNF. В отличие от большинства языков, созданных людьми, подверженными C, REXX не имеет зарезервированных слов, что делает задачу несколько сложной. Каждый термин, который выглядит как зарезервированное слово, фактически разрешен только в его конкретном контексте (например, «PULL» зарезервирован только как первое слово инструкции PULL или второе слово инструкции PARSE PULL - вы также можете иметь переменную PULL ("PULL = 1 + 2")). Кроме того, есть некоторые очень удивительные эффекты комментариев. Но ANSI REXX standard имеет полный синтаксис и все правила.