我們使用GPPG(本質上是Bison的bison)來爲編程語言生成解析器。除了一個真正討厭的位,一切都很好。我們解析的語言有一種「隱式比較」規則,其中「表達式表達式」應該被解釋爲「表達式==表達式」。 例如,這是一個完全有效的語句: If SomeValue False Then
EndIf
這顯然介紹解析器生成過程中的種種矛盾。我第一次嘗試解決這些問題是沿着這些方向發展的(爲簡潔起見)。我
我在理解轉換/減少關於語法的轉換/減少的問題時遇到了問題,我知道它沒有含糊之處。這種情況是if類型之一,但它不是'懸而未決'的問題,因爲我有強制性的END子句分隔代碼塊。 這裏是GPPG語法(它是一種野牛一樣編譯器編譯...這不是一個回聲): %output=program.cs
%start program
%token FOR
%token END
%token THINGS
%