8 S.split (S.regexp "[ \r\n\t]+") s
10 let mk_css_atom s rs =
12 let map (b, (x1, x2)) = cs, b, x1, x2 in
15 let mk_string_atom s rs =
16 let map (b, (x1, x2)) = s, b, x1, x2 in
23 %token SPACE NAME TABLE CSS URI EXT SR OC CC OB CB PS OP CP AT EOF
26 %type <(string * string) list * (string * Table.table * Table.css Attr.atoms * Table.uri Attr.atoms * Table.ext Attr.atoms) list> script
31 | SPACE TEXT TEXT { $2, $3 }
36 | space spaces { $1 :: $2 }
41 | AT OP TEXT TEXT CP { T.Link (true, $3, $4) }
42 | AT AT OP TEXT TEXT CP { T.Link (false, $4, $5) }
43 | AT TEXT { T.Link (true, $2, $2) }
44 | AT AT TEXT { T.Link (false, $3, $3) }
49 | text PS texts { $1 :: $3 }
55 | NUM { T.Glue (Some $1) }
60 | CSS TEXT { split $2 }
74 | css uri ext key { T.mk_key $4 $1 $2 $3 }
75 | css uri ext OC tables CC { T.mk_line false $5 $1 $2 $3 }
76 | css uri ext OB tables CB { T.mk_line true $5 $1 $2 $3 }
81 | table tables { $1 :: $2 }
90 | NUM { Some $1, Some $1 }
92 | NUM NUM { Some $1, Some $2 }
93 | NUM SR { Some $1, None }
94 | SR NUM { None, Some $2 }
95 | SR SR { None, None }
99 | OB interval CB { true, $2 }
100 | OC interval CC { false, $2 }
105 | range ranges { $1 :: $2 }
109 | CSS TEXT ranges { mk_css_atom $2 $3 }
114 | catom catoms { $1 @ $2 }
118 | URI TEXT ranges { mk_string_atom $2 $3 }
123 | uatom uatoms { $1 @ $2 }
127 | EXT TEXT ranges { mk_string_atom $2 $3 }
132 | xatom xatoms { $1 @ $2 }
136 | name TABLE table catoms uatoms xatoms { $1, $3, $4, $5, $6 }
141 | directive directives { $1 :: $2 }
145 | spaces directives EOF { $1, $2 }