我有这个 Yacc 代码:
...
%union{
int counter;
char* partial_code;
}
....
single_selection_predicate: STRING EQ SINGLE_QUOTATION STRING SINGLE_QUOTATION
{ $<counter>$ = 1;
printf("Counter: %d\n", $<counter>$);
int size = sizeof(char)*(strlen($<partial_code>1) + strlen($<partial_code>4) + 7);
$<partial_code>$ = (char*)malloc(size);
printf("Counter: %d\n", $<counter>$);}
;
....
我希望语法规则相关代码块中的第一个和第二个 printf 打印相同的输出。但是,我得到这样的东西:
Counter: 1
Counter: 7402224
也许发生了一些溢出,但我不知道为什么。你可以帮帮我吗?