我需要为某些特定语言(SQL的子集)编写解析器。据我所知,最简单的方法是在BNF中定义语法并使用yacc-like工具(我对GPPG有积极的经验)。但是当我开始时,我意识到这些工具会产生依赖于某些核心解析器程序集的解析器(例如,用于GPPG的ShiftReduceParser.dll)。我需要为Silverilght实现解析器,所以我不能使用定位到完整框架的库。Silverilght中的语言解析器
是否有任何可用于Silverilght的解析器生成器工具?
我需要为某些特定语言(SQL的子集)编写解析器。据我所知,最简单的方法是在BNF中定义语法并使用yacc-like工具(我对GPPG有积极的经验)。但是当我开始时,我意识到这些工具会产生依赖于某些核心解析器程序集的解析器(例如,用于GPPG的ShiftReduceParser.dll)。我需要为Silverilght实现解析器,所以我不能使用定位到完整框架的库。Silverilght中的语言解析器
是否有任何可用于Silverilght的解析器生成器工具?
您是否需要解析器在Silverlight内部运行?你不能让服务器通过WCF或其他传输来处理该功能吗?这样,您可以使用您以前有过的代码来执行解析。
是的,我可以使用服务器端解析,但客户端更优选。 – altso 2010-01-08 19:18:54
您可能想试试像ANTLR这样的图书馆。 Here's an article显示如何使用它进行SQL解析。
感谢您的建议,但如果我正确理解文档(http://www.antlr.org/wiki/display/ANTLR3/Antlr+3+CSharp+Target),则使用ANTLR生成的解析器需要Antlr3.Runtime.dll和Antlr3 .Utility.dll。所以,我不能在Silverlight中使用它。 – altso 2010-01-08 19:31:31
您可以使用在C#4.0中实现的Jigsaw parsing library。有一篇详细的文章解释how to build a parser using it here on CodeProject.com。
+1。好问题,我也很好奇这件事。 – 2010-01-08 21:25:59