我们什么时候使用ANTLR

时间:2011-08-24 14:56:13

标签: c# antlr

任何人都可以指导我在ASP.Net,C#项目中使用ANTLR dll的目的。

我刚注意到某些项目中引用了 antlr.runtime Antlr3.Runtime Antlr3.Utlility 程序集。

如果可以举出一些真实世界的例子,或者任何网页链接都会有用,那就太棒了。

4 个答案:

答案 0 :(得分:45)

WebGrease包使用Antlr包。 WebGrease包由ASP.NET Web Optimization包使用。

如果要删除Antlr,请删除ASP.NET Web Optimization包。它将依次删除其他2个包。

如果您正确设计了应用程序,它不会对性能产生太大影响。

答案 1 :(得分:7)

ANTLR是一个解析器生成器,能够生成多种语言的解析器,包括C#。 ANTLR主页为here

创作者Terence Parr还出版了一本书The Definitive ANTLR Reference

答案 2 :(得分:3)

如果您在运行时使用antlr语法解析任何文本,则需要这些dll。

通常有两个步骤。

1)在你的.g文件上运行java antlr解析器,生成一个C#lexer,C#语法和可能的C#tree walker。

2)将这些文件构建到您的应用程序中。如果您使用的是ANTLR版本3,这些文件将与antlr.runtime dll或antlr3.runtime dll一起使用。

您的C#程序现在可以使用您在步骤1中编译的语法来解析文本文件。

答案 3 :(得分:0)

ASP.NET Web Optimization package依赖于WebGrease,而后者又依赖于Antlr。如果要删除Antlr,则必须删除ASP.NET Web Optimization。所以现在的问题变成了:

  

新的MVC项目中的ASP.NET Web Optimization package是什么?

它用于捆绑和缩小.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-concatgulp-uglify这样的依赖项。

相关问题