if (token->type != YAML_STREAM_START_TOKEN) {
return yaml_parser_set_parser_error(parser,
- "did not found expected <stream-start>", token->start_mark);
+ "did not find expected <stream-start>", token->start_mark);
}
parser->state = YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE;
token = PEEK_TOKEN(parser);
if (!token) return 0;
+ /* Parse extra document end indicators. */
+
+ if (!implicit)
+ {
+ while (token->type == YAML_DOCUMENT_END_TOKEN) {
+ SKIP_TOKEN(parser);
+ token = PEEK_TOKEN(parser);
+ if (!token) return 0;
+ }
+ }
+
/* Parse an implicit document. */
if (implicit && token->type != YAML_VERSION_DIRECTIVE_TOKEN &&
if (!token) goto error;
if (token->type != YAML_DOCUMENT_START_TOKEN) {
yaml_parser_set_parser_error(parser,
- "did not found expected <document start>", token->start_mark);
+ "did not find expected <document start>", token->start_mark);
goto error;
}
if (!PUSH(parser, parser->states, YAML_PARSE_DOCUMENT_END_STATE))
start_mark = end_mark = token->start_mark;
- while (token->type == YAML_DOCUMENT_END_TOKEN) {
+ if (token->type == YAML_DOCUMENT_END_TOKEN) {
end_mark = token->end_mark;
SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
implicit = 0;
}
if (strcmp((char *)tag_directive->handle, (char *)tag_handle) == 0) {
size_t prefix_len = strlen((char *)tag_directive->prefix);
size_t suffix_len = strlen((char *)tag_suffix);
- tag = yaml_malloc(prefix_len+suffix_len+1);
+ tag = YAML_MALLOC(prefix_len+suffix_len+1);
if (!tag) {
parser->error = YAML_MEMORY_ERROR;
goto error;
return 1;
}
else if (anchor || tag) {
- yaml_char_t *value = yaml_malloc(1);
+ yaml_char_t *value = YAML_MALLOC(1);
if (!value) {
parser->error = YAML_MEMORY_ERROR;
goto error;
yaml_parser_set_parser_error_context(parser,
(block ? "while parsing a block node"
: "while parsing a flow node"), start_mark,
- "did not found expected node content", token->start_mark);
+ "did not find expected node content", token->start_mark);
goto error;
}
}
else if (token->type == YAML_BLOCK_END_TOKEN)
{
parser->state = POP(parser, parser->states);
- POP(parser, parser->marks);
+ (void)POP(parser, parser->marks);
SEQUENCE_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
SKIP_TOKEN(parser);
return 1;
{
return yaml_parser_set_parser_error_context(parser,
"while parsing a block collection", POP(parser, parser->marks),
- "did not found expected '-' indicator", token->start_mark);
+ "did not find expected '-' indicator", token->start_mark);
}
}
else if (token->type == YAML_BLOCK_END_TOKEN)
{
parser->state = POP(parser, parser->states);
- POP(parser, parser->marks);
+ (void)POP(parser, parser->marks);
MAPPING_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
SKIP_TOKEN(parser);
return 1;
{
return yaml_parser_set_parser_error_context(parser,
"while parsing a block mapping", POP(parser, parser->marks),
- "did not found expected key", token->start_mark);
+ "did not find expected key", token->start_mark);
}
}
else {
return yaml_parser_set_parser_error_context(parser,
"while parsing a flow sequence", POP(parser, parser->marks),
- "did not found expected ',' or ']'", token->start_mark);
+ "did not find expected ',' or ']'", token->start_mark);
}
}
}
parser->state = POP(parser, parser->states);
- POP(parser, parser->marks);
+ (void)POP(parser, parser->marks);
SEQUENCE_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
SKIP_TOKEN(parser);
return 1;
else {
return yaml_parser_set_parser_error_context(parser,
"while parsing a flow mapping", POP(parser, parser->marks),
- "did not found expected ',' or '}'", token->start_mark);
+ "did not find expected ',' or '}'", token->start_mark);
}
}
}
parser->state = POP(parser, parser->states);
- POP(parser, parser->marks);
+ (void)POP(parser, parser->marks);
MAPPING_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
SKIP_TOKEN(parser);
return 1;
{
yaml_char_t *value;
- value = yaml_malloc(1);
+ value = YAML_MALLOC(1);
if (!value) {
parser->error = YAML_MEMORY_ERROR;
return 0;
} tag_directives = { NULL, NULL, NULL };
yaml_token_t *token;
- if (!STACK_INIT(parser, tag_directives, INITIAL_STACK_SIZE))
+ if (!STACK_INIT(parser, tag_directives, yaml_tag_directive_t*))
goto error;
token = PEEK_TOKEN(parser);
goto error;
}
if (token->data.version_directive.major != 1
- && token->data.version_directive.minor != 1) {
+ || token->data.version_directive.minor != 1) {
yaml_parser_set_parser_error(parser,
"found incompatible YAML document", token->start_mark);
goto error;
}
- version_directive = yaml_malloc(sizeof(yaml_version_directive_t));
+ version_directive = YAML_MALLOC_STATIC(yaml_version_directive_t);
if (!version_directive) {
parser->error = YAML_MEMORY_ERROR;
goto error;
}
else if (token->type == YAML_TAG_DIRECTIVE_TOKEN) {
- yaml_tag_directive_t value = {
- token->data.tag_directive.handle,
- token->data.tag_directive.prefix
- };
+ yaml_tag_directive_t value;
+ value.handle = token->data.tag_directive.handle;
+ value.prefix = token->data.tag_directive.prefix;
+
if (!yaml_parser_append_tag_directive(parser, value, 0,
token->start_mark))
goto error;
token = PEEK_TOKEN(parser);
if (!token) goto error;
}
-
+
for (default_tag_directive = default_tag_directives;
default_tag_directive->handle; default_tag_directive++) {
if (!yaml_parser_append_tag_directive(parser, *default_tag_directive, 1,
STACK_DEL(parser, tag_directives);
}
+ yaml_free(version_directive);
return 1;
error: