質問
実際には、本格的な Lex/Yacc ではないかもしれません。Web アプリを管理するためにコマンド インタープリター フロントエンドを実装しています。文法定義を取得して、オブジェクトのメソッドを直接呼び出すパーサーに変換するものを探しています。ASP.NET MVC がどのコントローラー メソッドを呼び出すかを判断し、引数をポニーアップする方法と同様です。
したがって、ユーザーがコマンド プロンプトで「create foo」と入力すると、透過的にメソッドが呼び出されます。
private void Create(string id) { /* ... */ }
ああ、それらのコントローラー メソッドの属性 (たとえば) からヘルプ テキストを生成できれば、それも素晴らしいでしょう。
解決
私はレックス/ Yaccのは、任意の助けになると確信していませんよ。あなただけの基本的なトークナイザと手で書くために高速で通訳が必要になります。あなたが解析ルートにまだならアイロニーを参照してください。
追記として:あなたは、PowerShellとそのコマンドレットを検討している。
?他のヒント
私はC#でLEX / YACCの非常に簡単再実装されているGPLEX / GPPGと小さなプロジェクトのカップルをやりました。私は上記の他のツールのいずれかを使用していませんでしたので、私は実際にそれらを比較することはできませんが、これらはうまく働いています。
GPPGはここを見つけることができ、GPLEX <のhref = "のhttp://gplex.codeplex。 COM /」のrel = "nofollowをnoreferrer">ここを。
言われていることは、私は同意、フルLEX / YACCソリューションは、おそらくあなたの問題のためにやり過ぎです。私はIronPythonのを使用してバインディングのセットを生成することをお勧め:それは.NETコードで簡単にインターフェースし、非プログラマは基本的な構文はかなり使える見つけるように見えること、そしてあなたがそれを使用することを選択した場合、それは/あなたの力を多くの柔軟性を提供します。。 P>
また、 ANTLR に、C#のサポートを持っているを見てみます。
まだ初期のCTPはとても生産のアプリで使用することはできませんが、あなたはオスロ/ MGrammarに興味がある可能性があります。 http://msdn.microsoft.com/en-us/oslo/する
ジソンは最近大きな注目を集めています。これは、JavaScript への Bison ポートです。非常に単純な性質のため、jison 解析/字句解析テンプレートを php に移植し、現在は C# に移植しています。まだまだ新しい内容ですが、機会があればぜひご覧ください。 https://github.com/robertleeplummerjr/jison/tree/master/ports/csharp/Jison
ココ/ Rは、.NET実装とコンパイラ・ジェネレータです。あなたはそれを試してみることもできますが、私は仕事に、このようなライブラリーを得ることがあなた自身のトークナイザを書くよりも速いだろうかはわからない。
私は csflex を示唆している。最も有名なのUNIXスキャナジェネレータを
IはLEX / yaccは既にのSDK(即ちRTM)のいずれかであると考えています。 Windowsまたは.NET FrameworkのSDKます。
庭園ポイントパーサジェネレータここのは、C#のためのYacc / Bisonの機能を提供します。ここはの donwloadedすることができます。 GPPGを使用して便利な例が提供されるここを
アントンが言ったように、PowerShellは、おそらく行く方法です。あなたは良いセットを持ってに、その後のlex / yaccの実装マルコム・クロウをしたいです場合。
の編集のコンパイラツールへの
念のため、C#のためのC#でレクサーとLALRパーサの実装ます:
http://code.google.com/p/naive-language-tools / の
ただし、これらのツール(NLT)が発電機ではありません、レックス/ Yaccのに使用して類似していなければなりません!このように、スピードを忘れます。