【发布时间】:2011-07-17 13:31:20
【问题描述】:
我在 yacc 中编写了一个简单的配置文件解析器,它处理这样的文件:
asdf=50
foobar=42
即单词=数字。
我的问题是,如何将其集成到我的程序中?我最终希望将处理后的值存储在一些内部数据结构中,以便以后可以随意访问。我看到的每个 yacc 示例都只是简单地将值 printf() 输出到 stdout,但这在实际程序中似乎没有用。
【问题讨论】:
我在 yacc 中编写了一个简单的配置文件解析器,它处理这样的文件:
asdf=50
foobar=42
即单词=数字。
我的问题是,如何将其集成到我的程序中?我最终希望将处理后的值存储在一些内部数据结构中,以便以后可以随意访问。我看到的每个 yacc 示例都只是简单地将值 printf() 输出到 stdout,但这在实际程序中似乎没有用。
【问题讨论】:
您可以通过将数据插入您自己的数据结构的代码替换这些 printf。像这样的:
rule: TOKEN1 TOKEN2 TOKEN3
{
add_data(your_data, $1, $2, $3);
};
其中add_data 是将$1、$2 和$3 中包含的数据添加到变量your_data 中包含的自定义数据结构中的函数。
恐怕your_data 必须是全球性的。我挖掘了一些我拥有的旧 yacc 项目和其他 stackoverflow 问题,如this,但我还没有找到另一种方法。如果有人知道更好的方法,请发表评论。
如果您发布您的代码,我可以尝试帮助您详细说明。
【讨论】: