Commit 9f135688 authored by Taddeüs Kroes's avatar Taddeüs Kroes

Added more CSS3 selectors

parent 70b28195
...@@ -80,8 +80,8 @@ rule token = parse ...@@ -80,8 +80,8 @@ rule token = parse
| "<!--" { CDO } | "<!--" { CDO }
| "-->" { CDC } | "-->" { CDC }
| ['~''|']?'=' as op { RELATION op } | ['~' '^' '$' '*' '|']? '=' as op { RELATION op }
| ['>''~'] as c { COMBINATOR (Char.escaped c) } | ['>' '~'] as c { COMBINATOR (Char.escaped c) }
| mystring as s { STRING (strip_quotes s) } | mystring as s { STRING (strip_quotes s) }
| badstring { raise (SyntaxError "bad string") } | badstring { raise (SyntaxError "bad string") }
......
...@@ -228,18 +228,13 @@ simple_selector: ...@@ -228,18 +228,13 @@ simple_selector:
{ elem ^ String.concat "" addons } { elem ^ String.concat "" addons }
| addons=element_addon+ | addons=element_addon+
{ String.concat "" addons } { String.concat "" addons }
%inline element_addon: %inline element_addon: a=HASH | a=cls | a=attrib | a=pseudo { a }
| a=HASH | a=cls | a=attrib | a=pseudo
{ a }
element_name: element_name:
| tag=IDENT { tag } | tag=IDENT { tag }
| STAR { "*" } | STAR { "*" }
cls: cls:
| DOT name=IDENT | DOT name=IDENT
{ "." ^ name } { "." ^ name }
attrib: attrib:
| LBRACK S* left=IDENT S* right=pair(RELATION, rel_value)? RBRACK | LBRACK S* left=IDENT S* right=pair(RELATION, rel_value)? RBRACK
{ let right = match right with None -> "" | Some (op, term) -> op ^ term in { let right = match right with None -> "" | Some (op, term) -> op ^ term in
...@@ -247,13 +242,11 @@ attrib: ...@@ -247,13 +242,11 @@ attrib:
%inline rel_value: %inline rel_value:
| S* id=IDENT S* { id } | S* id=IDENT S* { id }
| S* s=STRING S* { "\"" ^ s ^ "\"" } | S* s=STRING S* { "\"" ^ s ^ "\"" }
pseudo: pseudo:
| COLON id=IDENT | COLON id=IDENT
{ ":" ^ id } { ":" ^ id }
| COLON f=FUNCTION S* arg=terminated(IDENT, S*)? RPAREN | COLON f=FUNCTION args=wslist(COMMA, simple_selector) RPAREN
{ let arg = match arg with None -> "" | Some id -> id in { ":" ^ f ^ "(" ^ String.concat "," args ^ ")" }
":" ^ f ^ "(" ^ arg ^ ")" }
declaration: declaration:
| name=property S* COLON S* value=expr important=boption(ig2(IMPORTANT_SYM, S*)) | name=property S* COLON S* value=expr important=boption(ig2(IMPORTANT_SYM, S*))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment