summaryrefslogtreecommitdiff
path: root/src/parse/parse.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-06-26 14:43:38 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-06-26 14:43:38 +0000
commitf87fc9dbb774906dd8c2db4d6094e14b0667fa74 (patch)
treeff864d3058d046cca4251031b5b35972f0759e8d /src/parse/parse.c
parent0ab2680de691045101f54517cbefa603f0eef3f9 (diff)
downloadlibcss-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.c28
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);
}