2012-02-14 23 views
-1

"("、 ")"、 "& &"および "||"を使用して、Cのようなスクリプト(実際にGroovy)をいくつかの部分に解析する必要があります。このような区切り文字として:文字列JavaでCのようなパーサを実装する方法

(boo == 1 && (foo == null || foo == 0)) 

から

私はそれが簡単に見えますが、それができる「FOO == 1」の状態では、これ

["boo == 1", "&&", ["foo == null", "||", "foo == 0"] ] 
(list of 3 items, third one is a list too) 

のようなリストのいくつかの種類を取得する必要があります"foo.item(2).contains( 'abcd')== true"(条件も中括弧を含むことができます)であり、私はそれに固執しています。

このようなパーサーを実装する最良の方法は何ですか?私を助ける役に立つライブラリやフレームワークはありますか?私の場合はどちらが簡単ですか?

答えて

1

このようなパーサーを実装するには、JavaCCまたはANTLRのようなパーサライブラリを使用するのが最適です。これにより、リストを取得するだけでなく、階層全体を含む完全な構文ツリーも取得できます。

+0

今、私はANTLRドキュメントを読んでいますが、それは私の仕事にとっては複雑すぎると難しいようです。簡単な方法はありますか?完全な構文木は必要ないと思っていますか? – afel

+0

さて、私はANTLR文法を実装することに固執しています。誰かが私の場合に適切な文法を教えてくれますか? – afel

+0

C++やJavaの文法を見て、そこにあるいくつかのルールを削除し、それをあなたに適したものにすることができます。 – belgther

関連する問題