1
假設我有一個語法如果我給它像這需要全局變量,和cANTLR語法不是回溯
program: (declaration)* (procedure)*;
declaration: typespec identifier ';';
procedure: typespec identifier '(' ')' ';';
typespec: 'char' | 'int';
identifier: ('a' .. 'z' | 'A' .. 'Z') ('A' - 'Z' | 'a' .. 'z' | '0' .. '9' | '_')*;
一些變化的一些方法聲明的護理:
int MAX;
char proc();
語法讀取int MAX;正確的,但它然後希望將聲明規則也應用到第二行,並且它到達時失敗(在這一點上,我期望它回溯並應用程序的下一個規則。有人請告訴我爲什麼這不會發生?
這不是整個語法,我只是隔離了一個例子。我試圖運行你的語法,我得到了以下內容(<語法SimpleC>(程序NoViableAltException(6 @ [()* loopback 2:10:(declaration)*])) – user692734 2012-02-15 00:48:50
你測試時輸入了什麼? – 2012-02-15 00:51:37
上面那個。問題是我和解說員一起跑了,我得到了那個錯誤。如果我用Tool創建實際的詞法分析器和解析器,它就可以工作。我覺得我一整天都被譯員愚弄了:| – user692734 2012-02-15 00:54:33