3

フレックスを使用して文字列を解析する方法について、このサイトの他の例に従っています。

yy_scan_string(string);
yylex();
yyparse(); 
yy_delete_buffer( YY_CURRENT_BUFFER );

4行目は、それが言う問題を与えます

 error: ‘YY_CURRENT_BUFFER’ undeclared (first use in this function)

また、bison ファイル (.y) から呼び出しているので、YY_BUFFER_STATE も取得しないので、利用できるはずです。typedef が見つからない理由がわかりません。Google の最初の 12 個のリンクでは何も思いつきませんでした。助けていただければ幸いです。

4

1 に答える 1

4

YY_CURRENT_BUFFERYY_BUFFER_STATEこれらは bison ではなく flex によって定義されるため、flex によって生成されたファイルで定義 (および使用) されますlex.yy.c。したがって、.lファイルからではなく、ファイルからのみアクセスでき.yます。

バイソン文法でそれらにアクセスしたい場合、最も簡単な方法は、.lファイルの 3 番目のセクションで定義する小さな関数でそれらの使用をカプセル化することです。.y次に、ファイルまたはその他のソース ファイルからその関数を呼び出します。

于 2012-09-08T04:17:18.080 に答える