summaryrefslogtreecommitdiff
path: root/css/parser.y
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2003-04-04 15:19:32 +0000
committerJames Bursa <james@netsurf-browser.org>2003-04-04 15:19:32 +0000
commit4421b2e633179bbd8f5331d2bdc33246aa2f40d9 (patch)
treed8b6e38fbb204c661906a872d112f1550b1653bf /css/parser.y
parenteb256015adc70034e367fe1c564b7fdca964887b (diff)
downloadnetsurf-4421b2e633179bbd8f5331d2bdc33246aa2f40d9.tar.gz
netsurf-4421b2e633179bbd8f5331d2bdc33246aa2f40d9.tar.bz2
[project @ 2003-04-04 15:19:31 by bursa]
New CSS parser. svn path=/import/netsurf/; revision=112
Diffstat (limited to 'css/parser.y')
-rw-r--r--css/parser.y21
1 files changed, 12 insertions, 9 deletions
diff --git a/css/parser.y b/css/parser.y
index 50fbd5d08..5b9751036 100644
--- a/css/parser.y
+++ b/css/parser.y
@@ -1,5 +1,5 @@
/**
- * $Id: parser.y,v 1.3 2003/04/01 21:33:08 bursa Exp $
+ * $Id: parser.y,v 1.4 2003/04/04 15:19:31 bursa Exp $
*/
/*
@@ -47,7 +47,7 @@ block_body ::= block_body SEMI.
ruleset ::= selector_list(A) LBRACE declaration_list(B) RBRACE.
{ css_add_ruleset(stylesheet, A, B);
- css_free_node(A); css_free_node(B); }
+ css_free_node(B); }
ruleset ::= any_list_1(A) LBRACE declaration_list(B) RBRACE.
{ css_free_node(A); css_free_node(B); } /* not CSS2 */
ruleset ::= LBRACE declaration_list RBRACE.
@@ -61,14 +61,14 @@ selector_list(A) ::= selector_list(B) COMMA selector(C).
selector(A) ::= simple_selector(B).
{ A = B; }
selector(A) ::= selector(B) combinator(C) simple_selector(D).
- { B->right = D; A->data = C; A = B; }
+ { D->right = B; D->comb = C; A = D; }
combinator(A) ::= .
- { A = 0; }
-combinator(A) ::= PLUS(B).
- { A = B; }
-combinator(A) ::= GT(B).
- { A = B; }
+ { A = COMB_ANCESTOR; }
+combinator(A) ::= PLUS.
+ { A = COMB_PRECEDED; }
+combinator(A) ::= GT.
+ { A = COMB_PARENT; }
simple_selector(A) ::= element_name(B) detail_list(C).
{ A = css_new_node(NODE_SELECTOR, B, C, 0); }
@@ -159,6 +159,7 @@ any(A) ::= LBRAC any_list(B) RBRAC.
%extra_argument { struct css_stylesheet *stylesheet }
%include {
#define CSS_INTERNALS
+#include "netsurf/css/scanner.h"
#include "netsurf/css/css.h"
#include "netsurf/utils/utils.h" }
%name css_parser_
@@ -168,7 +169,7 @@ any(A) ::= LBRAC any_list(B) RBRAC.
%type selector_list { struct node * }
%type selector { struct node * }
-%type combinator { struct node * }
+%type combinator { combinator }
%type simple_selector { struct node * }
%type detail_list { struct node * }
%type declaration_list { struct node * }
@@ -178,7 +179,9 @@ any(A) ::= LBRAC any_list(B) RBRAC.
%type any_list_1 { struct node * }
%type any { struct node * }
+%destructor selector_list { css_free_node($$); }
%destructor selector { css_free_node($$); }
+%destructor simple_selector { css_free_node($$); }
%destructor declaration_list { css_free_node($$); }
%destructor declaration { css_free_node($$); }
%destructor value { css_free_node($$); }