2009-08-05 6 views
4

私は、会社のColdFusionコードベースを検索するためのアプリケーションを作成しようとしています。私はインテリジェントな検索を行うことができるようにしたいと考えています。たとえば、関数がどこに定義されているかを調べます(関数が呼び出されたどこにでもヒットしません)。これを行うには、関数宣言、関数呼び出し、データベースクエリなどを識別するためにColdFusionコードを解析する必要があります。ColdFusionコードパーサーですか?

私はlexとyaccを調べましたが、それらの前と学習曲線は非常に急なようです。私はすでにそこに何かがあり、私が使うことができることを望んでいます。私の他の選択肢は、維持しにくいregex-spaghettiコードの混乱です。私は避けたいものです。

+0

キップこれは私が興味を持ったことです(CFEに統合したいこともあります)ので、何か有用な進歩があったのかどうか疑問に思っていましたか? –

+0

@Peter Boughton:実際、私は同僚のためにこれを求めていました。以下の私の答えを参照してください - 彼はCFEclipseのソースコード中のパーサーを使用しました。それがすべて再配布することが合法かどうかはわかりませんが、私たちはそれを内部開発ツールに使用していました。 – Kip

+0

ライセンスの正確な言葉遣いを確認する必要がありますが、EPLコード(CFEclipseソース)から派生している場合は、単にEPLライセンスと共に配布する必要があります。 しかし、現在のCFEパーサーで置き換えを作成したいので、あなたがそれを大きく見直していなければ、とにかく欲しいものではないでしょう。 –

答えて

3

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

+0

私はそれが[MITライセンス](https://github.com/cfeclipse/cfeclipse/blob/master/org.cfeclipse.cfml/License.txt)を使用していると信じています。 – John

0

なし。 ColdFusionはコードよりもスクリプトに似ているので、パーサーを書くのは難しいでしょう。

ColdFusion Builderは、EclipseでCFM/CFCをアウトラインに解析できます。おそらくCF Builderプラグインがあなたがしたいことをすることができるかどうかに関する調査をすることができます。

+3

スクリプトに似ているということは、パーサーを書くのが難しいというわけではありません。あらゆる言語は、一連の文字列で表されます。パーサは、パーサを構成する手続き型コードによって暗黙的に記述された文字列の集合を解析するか、または、もし設計されていればパーサを駆動する文法規則によって明示的に記述する。 ColdFusionを文法主導型のパーサジェネレータに定義することは、ColdFusionの優れた説明を他のものよりも得るためには重要です。 –

1

実際のランゲージ用のパーサーを書くことは、LexとYaccがしばしばうまく扱えないコンストラクトを含んでいるため、通常困難です。例えば、langaugeはLALR(1)ではありません。 ColdFusionは、XMLに似たスタイルのため、ColdFusionよりも簡単かもしれません。

あなたはすぐに洗練されたパーサを構築したい場合は、GLRの解析をサポートしている私たちの DMS Software Reengineering Toolkitを使用して検討するかもしれません。

を避けたい場合は、をご自身で作成するか、すべての正規表現をハッキングすることを避けてください。Source Code Search Engineこれは言語に敏感なパーサーを持ち、非常に大きなソースコードベースをすばやく検索できます。 「言語に敏感な」パーサーの1つはAdhocTextです。これは、ランダムプログラミングの書籍で見つかるような「汎用」プログラミング言語を処理するように設計されています。 ColdFusionなどのXMLのようなタグも理解しています。評価版は、提供されたリンクからダウンロードして試用することができます。

EDIT 2010年4月3日:最近SCSEに追加された機能は、定義にタグ付けして別々に使用できることです。これは、すべての呼び出しではなく、関数定義を見つけるOPの希望に対応します。

+0

リエンジニアリングツールキットは確かに良いツールであるかもしれませんが、それは[その直前のフロントエンド](http://www.semanticdesigns。com/Products/FrontEnds/index.html?Home = DMSDomains)。 – CrazyPyro

+0

@CrazyPro:ええ、それは本当に残念です。なぜなら、パーサを構築する必要がないからです。しかし、私たちは限られた予算でしかできません: - あなた自身のパーサを構築しなければならない場合、これは良い基礎です。 –

関連する問題