2008-09-30 42 views

回答

12

通常BNF語法太模棱兩可了。 ANTLR可能會對你正在尋找的東西有好處。

+2

看來你是對的。我剛剛在網上的某個地方讀到:「If-then-else不能在上下文無關的優先/無謂語法中明確指定,例如EBNF」 – ilitirit 2008-09-30 15:40:57

11

你將不得不微調BNF,但TinyPG是一個偉大的工具。

+0

尼斯找不到。謝謝。 – ilitirit 2008-10-03 12:25:44

+0

Tiny PG非常好,謝謝你的提示。 – Skurmedel 2009-08-14 14:37:21

13

Visual Studio SDK實際上附帶了詞法分析器和分析器生成工具。這些被稱爲MPPG和MPLex,並且是Managed Babel包的一部分。雖然將它們捆綁在SDK中的目的是爲Visual Studio開發語言擴展,但它們完全可用於創建通用的AST發佈解析器。

MPLex和MPPG基於GPLEXGPPG(昆士蘭科技大學的項目),並以與Lex和Yacc類似的方式使用。 SDK還包含MSBuild操作,用於使解析器生成成爲常規生成過程的一部分。

這裏是展示在行動MPLex和MPPG截屏:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx

2

IronMeta是一個C#實現Alex Warth的OMeta;它是一個packrat PEG(解析表達式語法;使用偏向選擇),因此語法比使用yacc-like LALR系統時更清晰。