Java からプログラムの構造を解析できるように、REXX ソースを解析したいと考えています。
構文的に異なるソース内の同等の論理構造を正規化する、重複する変数宣言を見つけるなどのことを行う必要があり、すでに Java のバックグラウンドがあります。
大量のコードを書くよりも簡単な方法はありますか?
REXX は、一般的なツール、特に BNF 文法を期待するツールで簡単に解析できる言語ではありません。C に触れる人々によって設計されたほとんどの言語とは異なり、REXX には予約語がないため、作業が多少複雑になります。予約語のように見えるすべての用語は、実際にはその特定のコンテキストでのみ解決されます (たとえば、「PULL」は、命令の最初の単語PULL
または命令の 2 番目の単語としてのみ予約されPARSE PULL
ています。PULL という変数を使用することもできます (" PULL = 1 + 2
"))。さらに、コメントには非常に驚くべき効果がいくつかあります。しかし、ANSI REXX 標準には完全な構文とすべての規則があります。
BNF Rexx 文法を使用している場合、 javaccはその Rexx コードのAST (Abstract Syntax Tree) 表現を構築するのに役立ちます。
より正確には、javacc は次のようなJava クラスを構築します。
「コードのロード」は依然として存在しますが、その Rexx コード パーサーのクラスを作成するのはあなたではありません。その世代のみ。
ANTLRを見てください。AST の構築、変換などの素晴らしい作業を実際に行います...素晴らしいエディター (ANTLRWorks) を備えており、Java 上に構築されており、パーサー / ツリー ウォーカーを実行中にデバッグできます。応用。あらゆる種類の解析ジョブについて調査する価値があります。