我正在使用Objective C语法here,并尝试解析此代码:
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 :(得分:0)
它出错了,因为规则direct_declarator
:
direct_declarator
: identifier declarator_suffix*
| '(' declarator ')' declarator_suffix*
;
要求main
函数的括号内应该有一些内容。但是如果你选择那个:
direct_declarator
: identifier declarator_suffix*
| '(' declarator? ')' declarator_suffix*
;
我很确定会出现其他问题。坦率地说,那个语法很糟糕:如果我是你,我不会用它。不,我不知道更好的一个:)。因为语法发布在antlr-site上并不意味着它是一个正确的语法。它发布在Wiki上,任何人都可以发布他们的工作:在使用其中的东西时记住这一点。