diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-06-26 14:43:38 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-06-26 14:43:38 +0000 |
commit | f87fc9dbb774906dd8c2db4d6094e14b0667fa74 (patch) | |
tree | ff864d3058d046cca4251031b5b35972f0759e8d /src/parse/parse.c | |
parent | 0ab2680de691045101f54517cbefa603f0eef3f9 (diff) | |
download | libcss-f87fc9dbb774906dd8c2db4d6094e14b0667fa74.tar.gz libcss-f87fc9dbb774906dd8c2db4d6094e14b0667fa74.tar.bz2 |
Nested block support.
svn path=/trunk/libcss/; revision=8014
Diffstat (limited to 'src/parse/parse.c')
-rw-r--r-- | src/parse/parse.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/parse/parse.c b/src/parse/parse.c index f7fd2fb..452658f 100644 --- a/src/parse/parse.c +++ b/src/parse/parse.c @@ -1273,7 +1273,7 @@ css_error parseBlockContent(css_parser *parser) if (parser->event != NULL) { parser->event( CSS_PARSER_BLOCK_CONTENT, - parser->tokens, + parser->tokens, parser->event_pw); } @@ -1282,6 +1282,30 @@ css_error parseBlockContent(css_parser *parser) } else if (lwc_string_length(token->ilower) == 1 && lwc_string_data(token->ilower)[0] == ';') { /* Grammar ambiguity. Assume semi */ + error = pushBack(parser, token); + if (error != CSS_OK) + return error; + +#if !defined(NDEBUG) && defined(DEBUG_EVENTS) + parserutils_vector_dump(parser->tokens, + __func__, tprinter); +#endif + if (parser->event != NULL) { + parser->event( + CSS_PARSER_BLOCK_CONTENT, + parser->tokens, + parser->event_pw); + } + + error = getToken(parser, &token); + if (error != CSS_OK) + return error; + + unref_interned_strings_in_tokens( + parser); + parserutils_vector_clear( + parser->tokens); + state->substate = WS; } else if (lwc_string_length(token->ilower) == 1 && lwc_string_data(token->ilower)[0] == '}') { @@ -2298,7 +2322,7 @@ static void tprinter(void *token) css_token *t = token; if (t->data.data) - printf("%d: %.*s", t->type, t->data.len, t->data.data); + printf("%d: %.*s", t->type, (int) t->data.len, t->data.data); else printf("%d", t->type); } |