在yacc中,如何将定义放入变量中?
问题描述:
在我的yacc文件我有以下代码:在yacc中,如何将定义放入变量中?
fun_declaration : type_specifier ID '(' params ')'
{$2->type = "function";
$2->args = params; }
params : param_list | VOID ;
你明白我想要做什么?
args是一个字符串。我试图把函数参数放到这个字符串中。怎么做?
答
只需引用$n
它就像您会引用规则中的任何语义值组件。事情是这样的:
$2->args = strdup($4);
+0
当我尝试得到错误“'fun_declaration'没有声明类型。” – neuromancer 2009-12-03 18:00:23
答
你需要有“PARAMS”回到你$$希望字符串,就像ID被返回一个指向某个结构与“类型”和“ARGS”字段。这意味着你需要一个%类型声明来说明要使用哪个%union的元素。
有很多关于如何使用yacc的书籍和在线教程。
您是否曾想过查看yacc的文档?你问的这些问题对我来说几乎是难以置信的。 – 2009-12-06 05:21:44