web-dev-qa-db-ja.com

いつANTLRを使用するか

ASP.Net、C#プロジェクトでANTLR dllを使用する目的を誰かが私に案内してくれませんか?.

antlr.runtimeAntlr3.RuntimeAntlr3.Utlilityアセンブリがいくつかのプロジェクトで参照されていることに気づきました。

いくつかの実際の例を引用できるか、またはWebページへのリンクが役立つ場合は、すばらしいでしょう。

27
inutan

実行時にantlr文法を使用してテキストを解析する場合は、これらのDLLが必要です。

通常、2つのステップがあります。

1).gファイルに対してJava antlrパーサーを実行して、C#レクサー、C#文法、場合によってはC#ツリーウォーカーを生成します。

2)これらのファイルをアプリケーションにビルドします。これらのファイルは、antlr.runtime dll、またはANTLRバージョン3を使用している場合はantlr3.runtime dllと連携して機能します。

これで、C#プログラムは、手順1でコンパイルした文法を使用してテキストファイルを解析できます。

3
chollida

Antlrパッケージは、WebGreaseパッケージによって使用されます。 WebGreaseパッケージは、ASP.NET Web最適化パッケージによって使用されます。

Antlrを削除する場合は、ASP.NET Web最適化パッケージを削除します。次に、他の2つのパッケージを削除します。

アプリケーションを適切に設計していれば、パフォーマンスにはあまり影響しません。

47
Grim Reaper

ANTLRは、C#を含む複数の言語でパーサーを生成できるパーサージェネレーターです。 ANTLRのホームページは here です。

作成者のTerence Parrも本 The Definitive ANTLR Reference を発行しています。

7
luketorjussen

ASP.NET Web最適化パッケージWebGrease に依存します Antlr に依存します。 Antlr を削除する場合は、 ASP.NET Web最適化 を削除する必要があります。したがって、質問は次のようになります。

新しいMVCプロジェクトで使用される ASP.NET Web最適化パッケージ とは何ですか?

.cssおよび.jsリソースをバンドルして縮小するために使用されます。新しいASP.NET MVC Webプロジェクトには、バンドルが定義されている/App_Start/BundleConfig.csという名前のファイルがあります。例えば:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/jquery-{version}.js"));
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/bootstrap.css", "~/Content/site.css"));
// etc.

/Views/Shared/_Layout.cshtmlでは、これらの定義済みバンドルが返されたビューに追加されます。

@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/jquery")

したがって、これらの参照を削除する場合、gulpのような依存関係を gulp-concat および gulp-uglify でバンドル/縮小するために別の戦略/ツールを使用する必要があります。

0
Igor