我在野牛上遇到了一些问题(再次)。我正在尝试使用 $$ 在我的语法文件中的“递归规则”之间传递一个字符串值,但是当我打印我传递的值时,输出看起来像一个错误的引用 (AU��) 而不是我的值写在我的输入文件中。
line: tok1 tok2
| tok1 tok2 tok3
{
int len=0;
len = strlen($1) + strlen($3) + 3;
char out[len];
strcpy(out,$1);
strcat(out," = ");
strcat(out,$3);
printf("out -> %s;\n",out);
$$ = out;
}
| line tok4
{
printf("line -> %s\n",$1);
}
在这里,我报告了代码的简化部分。输入令牌 tok1 tok2 tok3 它应该分配给 $$ out 变量(使用 printf 我可以看到在规则的第一部分中 out 变量具有正确的值)。按顺序匹配 tok4 我在规则的递归部分。但是当我打印 $1 值时(应该等于 out,因为我已经通过 $$ 传递了它),我没有正确的输出。