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
yylvalwithの型を再定義しました%union:
%union {
int int_val;
double double_val;
}
そして、私が得るのは、yyval.int_valまたはyyval.double_valのタイプに応じてです$$。
しかし、Richard Pennington が言ったように、生成された.tab.cコードを確認するのが最善の方法です。
于 2015-07-08T17:15:08.543 に答える