C と libyaml を使用して、yaml 形式の構成ファイル パーサーをコーディングしようとしています。私のインターネット検索では、操作マニュアルを含む適切で完全な API のドキュメントを見つけることができませんでした。ここの Andrew Poelstra によるチュートリアルでは、[を使用したyaml_parser_load ()]ドキュメント ベースの解析方法について説明していません。これは、トークン ベースやイベント ベースの方法よりもはるかに論理的で正当化されているように見えます。
したがって、現在、私はyaml.hから doxygen によって生成されたドキュメントに固執しています。ドキュメントをパーサーにロードした後、実際に何かを解析する方法について本当に混乱しています。具体的には、構造体と構造体の定義でどのスタックについて話しているのかわかりません。yaml_document_syaml_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のペアが含まれており、対応するノードを関数を使用して取得できるインデックスです。とポインターの意味と、境界を決定し、それらを使用してマッピングを反復する方法は、最終的なノード ペア インデックスが含まれていないため、私には謎のままです。keyvalueyaml_document_get_node ()*end*top*end
誰かが少なくともここでのスタックの意味を明確にしてくれたり、さらに良いドキュメントや例を提供してくれたりしたら、私は喜んでいます。前もって感謝します。