2012-01-21 5 views
1

は私が私のJavaを使用して、これを評価する必要がJavaを使用して一般ルールを解釈するにはどうすればよいですか?

if a<b 
    then set a=25 
else set a=-25 

以下のような非常に基本的なルールを持っていると言います。これらの種類の解析を実行する最良の方法は何ですか?正規表現を使用することは非常に困難であり、正しく維持することは非常に難しいでしょうか?

誰かがアプローチを提案できますか?詳しい情報が必要な場合はお知らせください。

+0

あなたの言語の構文チェッカーを作成しようとしていますか、何を達成しようとしていますか? – kba

+0

私は、レキシカルパーサー - JavaCCのJava実装を参照してください。ルールをJava表現にコンパイルしますか? – Apps

答えて

1

構文が正規の場合は、正規表現を使用できます。そうでない場合は、LexersやParsersなどのより複雑なツール(AntlrまたはYacc/Lex/Bison)を使用する必要があります。

あなたは言語設計についてあまり知らない場合、私はあなたがに飛び込む前に、被写体にbookを読むことをお勧め。

+0

Davidに返信してくれてありがとう。私はそれほど複雑ではない。正規表現はこれを行うための最良の方法ですか? – Apps

+0

@Apps、正規表現は、定義済みのパターンが与えられた特定のテキストを照合するために使用されます。言語を解釈する(評価する)場合、ターゲット言語が正規であるかどうかにかかわらず、正規表現は使用できません。 –

1

次のことができるようにできるか/あなたのルール構文を微調整することができますどのくらいに応じて、 GroovyまたはJRubyを使用します。両方とも密接に統合されたDSLを実装するのに非常に優れています。私は外部のDSLを実装する前に、このアプローチを真剣に検討していますが、Antlrはかなり簡単です。

関連する問題