私の会社は、Android 用のソフトウェアを作成しようとしています。私たちは Java を使用したいと考えており、会社のソフトウェアには C++ のコンポーネントがあり、移植する必要があります (または、少なくとも NDK を試す前に移植を試みる必要があります)。このコードはAccentを使用して作成され、文法文法を定義します。私が知る限り、元の作家 (現在は亡くなっています) は、文法を指定する方法を指定する文法を書き、その文法とアクセントを使用してコンパイラー コンパイラーをコンパイルしました。コンパイラ-コンパイラは、指定された形式の文法を取得し、バイナリ コードを生成して、その文法に準拠した文字列を解析します。文法のスニペットの例を次に示します。
//include rules from from this file (such as <alpha>)
include "alphabet.bnf"
<<topSymbol>> = <alpha> <alpha> <alpha>? .//two letters with an optional third
//square brackets enclose an XML statement clarifying semantics of the rule
[
<topSymbol>
<letter>
<command val="doSomethingToLetter"/>
</letter>
<!--etc.-->
</topSymbol>
]
私の質問は、Antlr またはその他のツールを使用して、Java でこれを行う方法です。コンパイラ-コンパイラ-コンパイラは、私にはかなり複雑に思えます。または、文法的およびセマンティックな XML 情報を含むこのタイプの文法を簡単にコンパイル/解析する方法を知りたいです。