実際、本格的なLex/Yaccではないかもしれません。 Webアプリを管理するためのコマンドインタープリターフロントエンドを実装しています。文法定義を取得して、オブジェクトのメソッドを直接呼び出すパーサーに変換するものを探しています。 ASP.NET MVCが呼び出すコントローラーメソッドを把握する方法、および引数をポニーアップする方法と同様です。
したがって、ユーザーがコマンドプロンプトで「createfoo」と入力した場合、メソッドを透過的に呼び出す必要があります。
private void Create(string id) { /* ... */ }
ああ、そしてそれがそれらのコントローラーメソッドの(例えば)属性からヘルプテキストを生成することができれば、それも素晴らしいでしょう。
Lex/Yaccが役立つかどうかはわかりません。必要なのは、手書きで書くのが速い基本的なトークナイザーとインタープリターだけです。まだルートの解析を行っている場合は、 Irony を参照してください。
補足として:PowerShellとそのコマンドレットについて検討しましたか?
私はGPLEX/GPPGを使用していくつかの小さなプロジェクトを実行しました。これは、C#でのLex/YACCの非常に単純な再実装です。上記の他のツールを使用したことがないため、実際に比較することはできませんが、これらは正常に機能しました。
GPPGは ここ およびGPLEX ここ で見つけることができます。
そうは言っても、私は同意します。完全なLex/YACCソリューションはおそらくあなたの問題にとってやり過ぎです。 IronPythonを使用してバインディングのセットを生成することをお勧めします。これは.NETコードと簡単にインターフェースし、プログラマー以外の人は基本的な構文がかなり使いやすいと感じているようです。
C#をサポートしている Antlr もご覧ください。
まだ初期のCTPなので、本番アプリでは使用できませんが、Oslo/MGrammarに興味があるかもしれません: http://msdn.Microsoft.com/en-us/oslo/
ジソンは最近多くの注目を集めています。これは、javascriptへのBisonポートです。非常に単純な性質であるため、jison解析/字句解析テンプレートをphpに移植し、次にC#に移植しました。それはまだ非常に新しいですが、機会があれば、ここでそれを見てください: https://github.com/robertleeplummerjr/jison/tree/master/ports/csharp/Jison
Lex/yaccはすでにSDKの1つ(つまりRTM)に含まれていると思います。 Windowsまたは.NETFrameworkSDKのいずれか。
csflex --flexのC#ポート-最も有名なunixスキャナージェネレーターをお勧めします。
Coco/Rは、.NETを実装したコンパイラジェネレータです。それを試すこともできますが、そのようなライブラリを機能させる方が、独自のトークナイザーを作成するよりも速いかどうかはわかりません。
念のため、C#for C#でのレクサーとLALRパーサーの実装:
http://code.google.com/p/naive-language-tools/
Lex/Yaccと同じように使用できるはずですが、これらのツール(NLT)はジェネレーターではありません。したがって、速度を忘れてください。
アントンが言ったように、PowerShellはおそらく行く方法です。 Lex/yaccの実装が必要な場合は、 Malcolm Crowe が適切なセットです。