4

会社の ColdFusion コードベースを検索するアプリを作成しようとしています。たとえば、関数が定義されている場所を見つけます(関数が呼び出されている場所にはヒットしません)。これを行うには、ColdFusion コードを解析して、関数宣言、関数呼び出し、データベース クエリなどを識別する必要があります。

lex と yacc の使用を検討しましたが、これまで使用したことがなく、学習曲線が非常に急勾配のようです。使えるものがすでにあるといいのですが。私のもう 1 つの選択肢は、保守が困難な正規表現スパゲッティ コードの混乱です。これは避けたいものです。

4

3 に答える 3

3

オープンソースでパーサーがあるため、ソースを CFEclipseに使用しました。これを販売/再配布する場合、これが合法かどうかはわかりませんが、内部ツールとしてのみ使用しています。

于 2009-08-28T14:59:24.480 に答える
2

実際の言語用のパーサーを作成することは、Lex や Yacc がうまく扱えない構文を含んでいるため、通常は困難です。たとえば、その言語は LALR(1) ではありません。XML に似たスタイルのため、ColdFusion の方が簡単かもしれません。

洗練されたパーサーをすばやく構築したい場合は、 GLR 解析をサポートするDMS Software Reengineering Toolkitの使用を検討してください。

独自の正規表現を作成したり、すべての正規表現をハッキングしたりしたくない場合はソース コード検索エンジンを検討してください。言語に依存したパーサーを備えており、非常に大きなソース コード ベースを非常に迅速に検索できます。その「言語に依存する」パーサーの 1 つは AdhocText です。これは、ランダムなプログラミングの本に見られるような「一般的な」プログラミング言語を処理するように設計されています。ColdFusion などの XML に似たタグも理解できます。提供されたリンクから評価版をダウンロードして試すことができます。

EDIT 4/3/2010: SCSE に追加された最近の機能は、定義と用途を別々にタグ付けする機能です。これは、すべての呼び出しではなく関数定義を見つけたいという OP の欲求に対処します。

于 2009-08-06T06:10:35.217 に答える
0

何も存在しませんでした。ColdFusion はコードというよりスクリプトに似ているため、ColdFusion 用のパーサーを作成するのは難しいと思います。

ColdFusion Builder は、Eclipse で CFM/CFC をアウトラインに解析できます。やりたいことを CF Builder プラグインで実行できるかどうかについて、調査を行うことができるかもしれません。

于 2009-08-05T20:39:46.113 に答える