我需要爲某些特定語言(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