9

BNF 文法 (例: http://savage.net.au/SQL/sql-2003-2.bnf )を指定すると、(C# で) パーサーを構築できるツールを探しています。

そのようなジェネレーターは存在しますか?

4

5 に答える 5

13

Visual Studio SDKには、実際にはレクサーとパーサーの生成ツールが同梱されています。これらは MPPG および MPLex と呼ばれ、Managed Babelパッケージの一部です。それらを SDK にバンドルする意図は、Visual Studio の言語拡張機能を開発することですが、一般的な AST を発行するパーサーを作成するために完全に使用できます。

MPLex と MPPG は、GPLEXGPPG (クイーンズランド工科大学のプロジェクト) に基づいており、Lex と Yacc と同様の方法で使用されます。SDK には、パーサーの生成を通常のビルド プロセスの一部にするための MSBuild アクションも含まれています。

これは、MPLex と MPPG の動作を示すスクリーンキャストです:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx

于 2009-04-13T21:14:37.733 に答える
13

通常、BNF 文法はあまりにも曖昧です。ANTLR は、おそらく探しているものに適しています。

于 2008-09-30T15:35:07.250 に答える
11

BNF を少し調整する必要がありますが、TinyPGは優れたツールです。

于 2008-10-01T11:18:18.777 に答える
3

アイロニーも見てください:

http://irony.codeplex.com/

非常に有望なようです

于 2011-10-18T20:54:46.967 に答える
2

IronMetaは Alex Warth のOMetaの C# 実装です。これは packrat PEG (構文解析式文法; 偏った選択を使用) であるため、文法は yacc のような LALR システムを使用する場合よりもきれいになります。

于 2012-12-04T16:54:51.497 に答える