我正在尝试使用 C 和 libyaml 编写一个 yaml 格式的配置文件解析器。我的互联网搜索并没有给我带来任何运气,我找到了一份体面且完整的 API 文档和操作手册。Andrew Poelstra在这里的教程没有描述基于文档的[使用yaml_parser_load ()
]解析方法,在我看来,这比基于令牌和基于事件的方法更合乎逻辑和合理。
所以目前我坚持使用来自yaml.h的 doxygen 生成的文档,这让我对在将文档加载到解析器后如何实际解析某些内容感到困惑。具体来说,我不知道我们在and结构的定义中讨论的是哪个堆栈。yaml_document_s
yaml_node_s
一个例子yaml_node_s.data.mapping
:
struct {
/** The stack of mapping pairs (key, value). */
struct {
/** The beginning of the stack. */
yaml_node_pair_t *start;
/** The end of the stack. */
yaml_node_pair_t *end;
/** The top of the stack. */
yaml_node_pair_t *top;
} pairs;
/** The mapping style. */
yaml_mapping_style_t style;
} mapping;
我发现*start
(在我的情况下)指向一个yaml_node_pair_t
's 数组,每个数组都包含一对key
和value
整数,它们是可以使用该yaml_document_get_node ()
函数获取相应节点的索引。*end
和指针的含义*top
以及如何确定边界并使用它们迭代映射对我来说仍然是一个谜,因为*end
不包含最终节点对索引。
如果有人至少向我澄清了这里的堆栈含义,或者更好地为我提供了良好的文档和示例,我会非常高兴。提前致谢。