2010-01-08 42 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