我正在尋找一個能夠構建解析器(使用C#)的工具,如果我給它一個BNF語法(例如http://savage.net.au/SQL/sql-2003-2.bnf)給定BNF語法輸出C#的分析器發生器?
這樣的生成器是否存在?
我正在尋找一個能夠構建解析器(使用C#)的工具,如果我給它一個BNF語法(例如http://savage.net.au/SQL/sql-2003-2.bnf)給定BNF語法輸出C#的分析器發生器?
這樣的生成器是否存在?
通常BNF語法太模棱兩可了。 ANTLR可能會對你正在尋找的東西有好處。
Visual Studio SDK實際上附帶了詞法分析器和分析器生成工具。這些被稱爲MPPG和MPLex,並且是Managed Babel包的一部分。雖然將它們捆綁在SDK中的目的是爲Visual Studio開發語言擴展,但它們完全可用於創建通用的AST發佈解析器。
MPLex和MPPG基於GPLEX和GPPG(昆士蘭科技大學的項目),並以與Lex和Yacc類似的方式使用。 SDK還包含MSBuild操作,用於使解析器生成成爲常規生成過程的一部分。
這裏是展示在行動MPLex和MPPG截屏:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx
看來你是對的。我剛剛在網上的某個地方讀到:「If-then-else不能在上下文無關的優先/無謂語法中明確指定,例如EBNF」 – ilitirit 2008-09-30 15:40:57