什么是C#输出最快的解析器生成器工具?

时间:2011-03-11 12:41:37

标签: c# .net parser-generator compiler-compiler

我正在寻找一个解析器生成器工具,它可以提供C#输出并且相当快。我的目标是像文本一样解析JSON并从中创建CLR对象。我使用了GOLD Parser引擎,但事实证明这对我的需求来说很慢。任何人都可以建议我一个好的,快速的解析器生成器工具,它发出C#代码?我听说过Irony和ANTLR,但没有经验。它们会生成相当快的解析器还是有更好的选择?

5 个答案:

答案 0 :(得分:6)

我认为你应该考虑GPLEX Scanner Generator。 这是在词法规范中使用的最快的,不需要回溯,并且没有锚定模式。

否则, 你也可以去SLK Parser Generator(它支持C,C ++,Java,C#语言)。

也要接触这个问题。
它询问有关改进您使用过的GOLD Parser:[Improve the GOLD Parser]

答案 1 :(得分:2)

ANTLR是一个LL解析器,其功能不如LR解析器接受语言接受。请验证您在所有可能情况下的语境是否符合LL规范。还有其他一些需要考虑的事情,如模糊语法,无上下文或上下文敏感语法。等...最好先用不同的解析器类型(LL(+),LR(+),CALR(+)评估您的需求, LALR(+))可用。 +表示1次或更多次前瞻。之后,选择一个解析器类型的解析器生成工具。

ANTLR是一个LL(k)自上而下的解析器..在某些情况下很好但在其他情况下却没有,因为我们在最左边的推导上递归处理。像黄金解析器,Visual Parse ++ ..等解析器是LR(k)解析器,它们基本上是自下而上的解析器。通过我对评估不同解析器的研究,我们选择了LR(k)解析器(visual parse ++对我们有用),这通常在生成解析树的过程中更快。

准确地说,每种解析方法都有其规格在不同情况下的好坏。我们需要为我们的语言评估最好的一个。对于您想要开发的每种语言,解析器的性能也会有两倍的效果

1)解析您正在开发的语言的方法。 2)使用的解析器生成工具(在某些情况下可能不会开发工具)

希望它有所帮助。如果我可以提供任何进一步的信息,请告诉我。

V M Rakesh (rakesh.vm@gmail.com)

答案 2 :(得分:1)

我无法谈论表现,但您可以尝试GPLEX/GPPG

答案 3 :(得分:0)

最新版本的JSON.NET能够直接从JSON创建动态CLR对象。那是别无选择吗?当然,静态类型的去序列化也是可行的。

JSON.NET

答案 4 :(得分:0)

为什么不使用JavaScriptSerializer类中的构建来反序列化JSON?

通用反序列化方法:http://msdn.microsoft.com/en-us/library/bb355316.aspx

JavascriptSerializer类:http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx