Parsing 在yacc中,如何将定义放入变量中?

Parsing 在yacc中,如何将定义放入变量中?,parsing,yacc,Parsing,Yacc,在我的yacc文件中,我有以下代码: fun_declaration : type_specifier ID '(' params ')' {$2->type = "function"; $2->args = params; } params : param_list | VOID ; 你明白我想做什么吗 args是一个字符串。我试图将函数参数放入这个字符串中。如何做到这一点?只需使用$n引用它,就像引用

在我的yacc文件中,我有以下代码:

fun_declaration : type_specifier ID '(' params ')' 
                  {$2->type = "function";
                   $2->args = params; }

params : param_list | VOID ;
你明白我想做什么吗


args是一个字符串。我试图将函数参数放入这个字符串中。如何做到这一点?

只需使用
$n
引用它,就像引用规则中的任何语义值组件一样。大概是这样的:

 $2->args = strdup($4);

您需要让'params'在$$中返回所需的字符串,就像ID返回指向某个结构的指针,其中包含'type'和'args'字段一样。这意味着您需要一个%type声明,声明要使用%union的哪个元素


关于如何像这样使用yacc,有很多书籍和在线教程。

当我尝试时,我发现错误“`fun_declaration'没有声明类型”。您是否想到查看yacc的文档?你问的这些问题几乎让我难以置信。