BNF 文法 (例: http://savage.net.au/SQL/sql-2003-2.bnf )を指定すると、(C# で) パーサーを構築できるツールを探しています。
そのようなジェネレーターは存在しますか?
BNF 文法 (例: http://savage.net.au/SQL/sql-2003-2.bnf )を指定すると、(C# で) パーサーを構築できるツールを探しています。
そのようなジェネレーターは存在しますか?
Visual Studio SDKには、実際にはレクサーとパーサーの生成ツールが同梱されています。これらは MPPG および MPLex と呼ばれ、Managed Babelパッケージの一部です。それらを SDK にバンドルする意図は、Visual Studio の言語拡張機能を開発することですが、一般的な AST を発行するパーサーを作成するために完全に使用できます。
MPLex と MPPG は、GPLEXとGPPG (クイーンズランド工科大学のプロジェクト) に基づいており、Lex と Yacc と同様の方法で使用されます。SDK には、パーサーの生成を通常のビルド プロセスの一部にするための MSBuild アクションも含まれています。
これは、MPLex と MPPG の動作を示すスクリーンキャストです:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx
通常、BNF 文法はあまりにも曖昧です。ANTLR は、おそらく探しているものに適しています。
BNF を少し調整する必要がありますが、TinyPGは優れたツールです。