2

bison でパーサーを生成すると、次の警告が表示されます。

warning: stray `@'

しかし、それは@、たとえば、これは警告を持つルールの 1 つです。

file : axiom production_rule_list    { NSLog(@"file"); }
     ;

@コードで使用するリスクはありますか? そうでない場合、バイソンにそれが正当な使用であることを伝える方法は@?

前もって感謝します。

4

3 に答える 3

2

メッセージは単なる警告です。無視してかまいません。Xcode を使用している場合は、Issue Navigator に警告さえ表示されません。

Bison 入力ファイルの名前を変更して、.ym拡張子ではなく.y拡張子を付けます。これにより、Objective-C アクションを含む文法であることが Xcode に伝えられます。

于 2012-12-29T20:36:51.140 に答える
0

Actions - Bison 2.7のドキュメントによると、中括弧内のコードは C コードであると予想されるようです。そのため、目的の c コンストラクトを使用できるとは思えません。

ただし、次のような作業を行う外部 C 関数を作成できます。

Logit(char* message)
{
  NSLog(@"%s",message);
}

そしてそれをBisonアクションで使用します

file : axiom production_rule_list    { Logit("file"); }
     ;
于 2012-12-29T19:37:17.097 に答える