我在yacc中编写了一个简单的配置文件解析器,它像这样处理文件:
asdf=50
foobar=42
。词=号。
我的问题是,我如何将它集成到我的程序中?我最终希望有处理值存储在一些内部数据结构,我可以访问以后,因为我喜欢。我所看到的每个yacc示例都简单地将printf()的值输出到标准输出,但这在实际程序中似乎有点用处。
您可以用将数据插入到您自己的数据结构中的代码来替换这些printf。像这样:
rule: TOKEN1 TOKEN2 TOKEN3
{
add_data(your_data, $1, $2, $3);
};
其中add_data
是将$1
、$2
和$3
中的数据添加到变量your_data
中的自定义数据结构中的函数。
恐怕your_data
必须是全局的。我挖掘了一些旧的yacc项目和其他类似的stackoverflow问题,我还没有找到另一种方法。如果有人知道更好的方法,请评论。
如果你张贴你的代码,我可以试着帮助你的细节。