我在yacc中编写了一个简单的配置文件解析器,它处理这样的文件:
asdf=50
foobar=42
即。字=号码。
我的问题是,如何将其整合到我的程序中?我最终希望将处理后的值存储在一些内部数据结构中,以后我可以随意访问。每个yacc示例我只看到printf()s输出到stdout的值,但这在实际程序中似乎没用。
答案 0 :(得分:1)
您可以通过将数据插入到您自己的数据结构中的代码替换那些printf。像这样:
rule: TOKEN1 TOKEN2 TOKEN3
{
add_data(your_data, $1, $2, $3);
};
其中add_data
是一个函数,可将$1
,$2
和$3
中包含的数据添加到变量your_data
中包含的自定义数据结构中
我担心your_data
必须是全球性的。我挖了一些旧的yacc项目和其他stackoverflow问题,如this,我还没有找到另一种方法。如果有人知道更好的方法,请发表评论。
如果您发布代码,我可以尝试为您提供具体信息。