2012-01-04 62 views
2

我使用可用的目標C語法here,並試圖解析這個代碼「人品沒有可行的替代方案」:ANTLR的錯誤

int main() 
{ 
    int k=0; 
} 

這是一個客觀的C代碼,它應該得到解析,但它是當我調用函數translation_unit時給了我以下錯誤。 錯誤是:

line 1:0 no viable alternative at character 'main' 
line 1:0 no viable alternative at character '(' 
line 1:0 no viable alternative at character ')' 

回答

0

出了問題,因爲該規則direct_declarator

direct_declarator 
: identifier declarator_suffix* 
| '(' declarator ')' declarator_suffix* 
; 

任務,應該是main功能的括號裏面的東西。但是,如果你使可選:

direct_declarator 
: identifier declarator_suffix* 
| '(' declarator? ')' declarator_suffix* 
; 

我很確定會出現其他問題。坦率地說,這個語法非常糟糕:如果我是你,我不會使用它。不,我不知道更好的:)。因爲語法發佈在antlr網站上並不意味着它是一個合適的語法。它張貼在Wiki上,任何人都可以發佈他們的作品:使用它時請記住這一點。

+1

謝謝..其實這是我的大學項目,我們真的沒有時間寫自己的目標c語法。所以我們必須用這個語法來完成這項工作。併爲我們做這項工作..並感謝這是非常有益的 – 2012-01-04 15:14:57