3

我正在使用此处提供的 Objective C 语法,并尝试解析此代码:

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 ')'
4

1 回答 1

0

它出错了,因为规则direct_declarator

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

main要求在函数的括号内应该有一些东西。但是,如果您将其设为可选:

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

我很确定还会出现其他问题。坦率地说,这种语法非常糟糕:如果我是你,我不会使用它。不,我不知道有更好的:)。因为语法发布在 antlr 网站上并不意味着它是正确的语法。它发布在 Wiki 上,任何人都可以在其中发布他们的作品:使用其中的内容时请记住这一点。

于 2012-01-04T11:15:50.413 回答