c - 获取 $$ 来保存 $1 和 $2 的串联

标签 c yacc

我需要将短语组合成一个句子并将其作为单词传递。 我有一个 yacc 规则,其中规定:

words : words WORD  {
                if($1 == NULL)
                {
                    $$ = $2;
                }
                else
                {
                    printf("\t$1 = %s\n",$1);
                    printf("\t$2 = %s\n",$2);
                    strBuffer[0]='\0';
                    strcat((char *)strBuffer,$1);
                    $$ = strcat((char *)strBuffer,$2);
                    printf("\t$$ = %s\n\n",$$);                             
                }
            }

char strBuffer[200] 是一个足够大的全局数组。

但是当我运行解析器时,我得到:

$1 = The G
$2 = nats and 
$$ = nats and           

我应该怎么做才能使 $1 和 $2 都变成 $$?

最佳答案

尝试:

sprintf($$, "%s%s", $1, $2);

关于c - 获取 $$ 来保存 $1 和 $2 的串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5741093/

相关文章:

c - 嵌入式系统开发为什么要烧录根文件系统

c - 使用字符串循环并输出到 C 中的独特配置?

c - 为什么我的代码中出现无限循环?

c - 设置语言环境时 Windows C 运行时 toupper 变慢

parsing - 如何解析依赖于父节点信息的子节点?

bison - 安装Bison后"make: yacc: Command not found"

c++ - c - 这 2 个 const 是什么意思?

c - YACC 生成的解析器对重复的相同输入给出不同的输出

c - FLEX- Bison : error: expected identifier or ‘(’ before string constant

parsing - Yacc仍在行业中使用吗?