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

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

问题描述:

在我的yacc文件我有以下代码:在yacc中,如何将定义放入变量中?

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

params : param_list | VOID ; 

你明白我想要做什么?

args是一个字符串。我试图把函数参数放到这个字符串中。怎么做?

+0

您是否曾想过查看yacc的文档?你问的这些问题对我来说几乎是难以置信的。 – 2009-12-06 05:21:44

只需引用$n它就像您会引用规则中的任何语义值组件。事情是这样的:

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

当我尝试得到错误“'fun_declaration'没有声明类型。” – neuromancer 2009-12-03 18:00:23

你需要有“PARAMS”回到你$$希望字符串,就像ID被返回一个指向某个结构与“类型”和“ARGS”字段。这意味着你需要一个%类型声明来说明要使用哪个%union的元素。

有很多关于如何使用yacc的书籍和在线教程。