3

私はここで利用可能なObjectiveC文法を使用しており、このコードを解析しようとしています。

int main()
{   
    int k=0;
}

これはObjectiveCコードであり、解析されるはずですが、関数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-siteに掲載されているため、適切な文法であるとは限りません。それは誰でも自分の作品を投稿できるWikiに投稿されています:それからのものを使用するときはそれを覚えておいてください。

于 2012-01-04T11:15:50.413 に答える