6 void print_escaped(yaml_char_t * str, size_t length);
8 int main(int argc, char *argv[])
17 input = fopen(argv[1], "rb");
19 fprintf(stderr, "Usage: libyaml-parser [<input-file>]\n");
24 if (!yaml_parser_initialize(&parser)) {
25 fprintf(stderr, "Could not initialize the parser object\n");
28 yaml_parser_set_input_file(&parser, input);
31 yaml_event_type_t type;
32 if (!yaml_parser_parse(&parser, &event)) {
33 fprintf(stderr, "Parse error: %s\n", parser.problem);
38 if (type == YAML_NO_EVENT)
40 else if (type == YAML_STREAM_START_EVENT)
42 else if (type == YAML_STREAM_END_EVENT)
44 else if (type == YAML_DOCUMENT_START_EVENT) {
46 if (!event.data.document_start.implicit)
50 else if (type == YAML_DOCUMENT_END_EVENT) {
52 if (!event.data.document_end.implicit)
56 else if (type == YAML_MAPPING_START_EVENT) {
58 if (event.data.mapping_start.anchor)
59 printf(" &%s", event.data.mapping_start.anchor);
60 if (event.data.mapping_start.tag)
61 printf(" <%s>", event.data.mapping_start.tag);
64 else if (type == YAML_MAPPING_END_EVENT)
66 else if (type == YAML_SEQUENCE_START_EVENT) {
68 if (event.data.sequence_start.anchor)
69 printf(" &%s", event.data.sequence_start.anchor);
70 if (event.data.sequence_start.tag)
71 printf(" <%s>", event.data.sequence_start.tag);
74 else if (type == YAML_SEQUENCE_END_EVENT)
76 else if (type == YAML_SCALAR_EVENT) {
78 if (event.data.scalar.anchor)
79 printf(" &%s", event.data.scalar.anchor);
80 if (event.data.scalar.tag)
81 printf(" <%s>", event.data.scalar.tag);
82 switch (event.data.scalar.style) {
83 case YAML_PLAIN_SCALAR_STYLE:
86 case YAML_SINGLE_QUOTED_SCALAR_STYLE:
89 case YAML_DOUBLE_QUOTED_SCALAR_STYLE:
92 case YAML_LITERAL_SCALAR_STYLE:
95 case YAML_FOLDED_SCALAR_STYLE:
98 case YAML_ANY_SCALAR_STYLE:
101 print_escaped(event.data.scalar.value, event.data.scalar.length);
104 else if (type == YAML_ALIAS_EVENT)
105 printf("=ALI *%s\n", event.data.alias.anchor);
109 yaml_event_delete(&event);
111 if (type == YAML_STREAM_END_EVENT)
115 assert(!fclose(input));
116 yaml_parser_delete(&parser);
122 void print_escaped(yaml_char_t * str, size_t length)
127 for (i = 0; i < length; i++) {