【发布时间】:2013-08-31 20:01:39
【问题描述】:
我在野牛上遇到了一些问题(再次)。 我正在尝试使用 $$ 在我的语法文件中的“递归规则”之间传递一个字符串值, 但是当我打印我传递的值时,输出看起来像是一个错误的引用 (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,因为我已经通过 $$ 传递了它),我没有正确的输出。
【问题讨论】:
标签: recursion token grammar bison flex-lexer