2010-01-08 89 views
2

我需要为某些特定语言(SQL的子集)编写解析器。据我所知,最简单的方法是在BNF中定义语法并使用yacc-like工具(我对GPPG有积极的经验)。但是当我开始时,我意识到这些工具会产生依赖于某些核心解析器程序集的解析器(例如,用于GPPG的ShiftReduceParser.dll)。我需要为Silverilght实现解析器,所以我不能使用定位到完整框架的库。Silverilght中的语言解析器

是否有任何可用于Silverilght的解析器生成器工具?

+0

+1。好问题,我也很好奇这件事。 – 2010-01-08 21:25:59

回答

3

我不知道你在Silverlight中允许使用哪些框架库,但是Coco/R看起来很轻,只需要从System.IOSystem.Text进行一些流/文本处理。

+0

谢谢,看起来像它适合我所有的需要 – altso 2010-01-08 19:42:47

0

您是否需要解析器在Silverlight内部运行?你不能让服务器通过WCF或其他传输来处理该功能吗?这样,您可以使用您以前有过的代码来执行解析。

+0

是的,我可以使用服务器端解析,但客户端更优选。 – altso 2010-01-08 19:18:54

0

您可能想试试像ANTLR这样的图书馆。 Here's an article显示如何使用它进行SQL解析。

+0

感谢您的建议,但如果我正确理解文档(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