8

私は ANTLR 文法を持っており、パーサーをファジングしたいと考えています。

4

3 に答える 3

1

CFG 文法からの生成をお探しですか? すなわち。文法で受け入れられる文字列の生成? これは文法の正しさをチェックするのに良い考えかもしれませんが、受け入れられる文字列のセットはおそらく無限であることを覚えておいてください。本当に悪いバグは、文法仕様ですでに明らかになっているはずです。うまくいけば、LL らしさのチェックによって明らかになります。

私はANTLRの世界でツールを知りません.(E)BNF生成に関する簡単なGoogle検索でも、有用なものは何も明らかになりませんでした.

ただし、パフォーマンスなどが問題にならない場合は、独自のジェネレーターをロールすることはそれほど難しくありません。プロローグが頭に浮かびます。利用可能な文献はたくさんありますが、Java を離れたくない場合は、自家醸造が進むべき道だと思います。とにかく楽しい。

于 2010-08-08T13:32:29.333 に答える
0

ANTLR文法から文(トークンの文字列)を生成したと仮定します。なぜあなたのANTLRベースのパーサーが彼らに反対すると思いますか?

あなたが本当にしなければならないことは、かなり合法ではない文字列を作成することです。したがって、必要なのは、誤った文字列を生成する可能性のあるジェネレーターです。

ANTLRがANTLR文法から一連のプロシージャを生成することを考えると、生成されたパーサーを使用してセンテンスジェネレーターを生成することは難しいと思います。必要なのは、文法の明示的なモデルです。そして、これはすでにあなたに利用可能です:ANTLR入力文法。

私が見る追加の複雑さは、トークン定義を構成する正規表現からの正当なトークンの生成です。繰り返しますが、これを行うにはANTLR入力を処理する必要があります。

これらの両方の処理は技術的に簡単に思えます。基盤として使用するのに最適なエンジンは、おそらくANTLRフロントエンドです。これは明らかにANTLR仕様を解析するため、ANTLR入力の表現を保持する必要があります。

于 2010-08-10T00:44:52.703 に答える