我正在寻找一个解析器生成器工具,给C#输出和相当快。我的目标是像解析文本一样解析JSON,并从中创建CLR对象。为此,我使用了GOLD解析器引擎,但它对我的需求来说太慢了。有没有人能给我推荐一个又好又快的解析器生成器工具来生成C#代码?我听说过Irony和ANTLR,但没有使用它们的经验。它们能生成更快的解析器吗?或者有没有更好的选择?
发布于 2011-03-11 20:53:03
我觉得你应该考虑一下GPLEX Scanner Generator。这是在不需要回溯和没有锚定模式的词汇规范的情况下使用的最快的一种。
另外,你也可以选择SLK Parser Generator (它支持C,C++,Java,C#语言)。
也要联系这个问题。
它询问关于改进您所使用的黄金解析器的问题:[Improve the GOLD Parser]
发布于 2011-04-27 02:16:35
ANTLR是一种LL解析器,在语言接受方面不如LR解析器强大。请验证您的上下文语言在所有可能的情况下是否符合LL规范。还有一些其他的东西需要考虑,比如歧义语法,上下文无关或上下文敏感的语法.etc……最好先用不同的解析器类型( LL(+),LR(+),CALR(+),LALR(+) )来评估你的需求。+表示一次或多次向前看。之后,选择该解析器类型的一个解析器生成工具。
ANTLR是一个自上而下的LL(k)解析器。在某些情况下很好,但在其他情况下就不好了,因为我们在最左边的派生上递归处理。像gold解析器,Visual Parse++ ..etc这样的解析器是LR(k)解析器,基本上是自下而上的解析器。通过对不同解析器的比较研究,我们选择了LR(k)解析器(visual parse++对我们来说比较好),在生成解析树的方法上,LR(K)解析器通常更快。
准确地说,每种解析方法都有自己的规范,在不同的情况下,这些规范的好坏各不相同。我们需要为我们的语言评估最好的。同样,解析器的性能对于您想要开发的每种语言都是双重的。
1)将方法wrt解析为您正在开发的语言。2)使用解析器生成工具(工具在某些情况下可能开发得不是很好)
希望能有所帮助。如果我能提供任何进一步的信息,请告诉我。
V M Rakesh (rakesh.vm@gmail.com)
发布于 2011-03-11 20:55:51
我不能谈论性能,但你可以试试GPLEX/GPPG
https://stackoverflow.com/questions/5272997
复制相似问题