Bison .y ファイルにブレークポイントを設定した場合、そのブレークポイントで $$ 疑似変数の内容を調べる方法はありますか?
質問する
1279 次
3 に答える
5
$$ はセマンティック値スタックのトップです。少し解釈が難しいかもしれません。本当に必要な場合は、スタック ポインターが yyssp と呼ばれ、スタックが yyvsa と呼ばれる場合があるため、使用している bison のバージョンに応じて、yyvsa[yyssp] のようなものが必要な場合があります。生成された .tab.c コードを見てください。
于 2009-11-08T21:53:29.943 に答える
2
Bison はyyparse()
、動的に割り当てられたローカル変数としてスタックを保持します。
おそらく、一時的なデバッグの問題を解決する最も簡単な方法はy.tab.c
、行*++yyvsp = yylval
がグローバルにコピーをドロップするようにパッチを適用することです。YYPOPSTACK()
同じことをするためにハックすることもできます。
于 2009-11-08T22:10:04.960 に答える
0
yylval
withの型を再定義しました%union
:
%union {
int int_val;
double double_val;
}
そして、私が得るのは、yyval.int_val
またはyyval.double_val
のタイプに応じてです$$
。
しかし、Richard Pennington が言ったように、生成された.tab.c
コードを確認するのが最善の方法です。
于 2015-07-08T17:15:08.543 に答える