| 51 |
|
|
| 52 |
let char_list pos s = |
let char_list pos s = |
| 53 |
let s = seq_of_string pos s in |
let s = seq_of_string pos s in |
| 54 |
List.map (fun (loc,c) -> mk loc (Cst (Types.Char (Chars.Unichar.from_char c)))) s |
List.map (fun (loc,c) -> mk loc (Cst (Types.Char (Chars.mk_char c)))) s |
| 55 |
|
|
| 56 |
|
|
| 57 |
EXTEND |
EXTEND |
| 153 |
| `Explode x -> mk x.loc (Op ("@",[x;q])) |
| `Explode x -> mk x.loc (Op ("@",[x;q])) |
| 154 |
) l e |
) l e |
| 155 |
| t = [ a = TAG -> |
| t = [ a = TAG -> |
| 156 |
mk loc (Cst (Types.Atom (Types.AtomPool.mk a))) |
mk loc (Cst (Types.Atom (Atoms.mk a))) |
| 157 |
| "<"; e = expr LEVEL "no_appl" -> e ]; |
| "<"; e = expr LEVEL "no_appl" -> e ]; |
| 158 |
a = expr_attrib_spec; ">"; c = expr -> |
a = expr_attrib_spec; ">"; c = expr -> |
| 159 |
mk loc (Xml (t, mk loc (Pair (a,c)))) |
mk loc (Xml (t, mk loc (Pair (a,c)))) |
| 238 |
| "("; a = LIDENT; ":="; c = const; ")" -> Elem (mk loc (Constant (a,c))) |
| "("; a = LIDENT; ":="; c = const; ")" -> Elem (mk loc (Constant (a,c))) |
| 239 |
| UIDENT "PCDATA" -> string_regexp |
| UIDENT "PCDATA" -> string_regexp |
| 240 |
| i = STRING1; "--"; j = STRING1 -> |
| i = STRING1; "--"; j = STRING1 -> |
| 241 |
let i = Chars.Unichar.from_char (parse_char loc i) |
let i = Chars.mk_char (parse_char loc i) |
| 242 |
and j = Chars.Unichar.from_char (parse_char loc j) in |
and j = Chars.mk_char (parse_char loc j) in |
| 243 |
Elem (mk loc (Internal (Types.char (Chars.char_class i j)))) |
Elem (mk loc (Internal (Types.char (Chars.char_class i j)))) |
| 244 |
| s = STRING1 -> |
| s = STRING1 -> |
| 245 |
let s = seq_of_string loc s in |
let s = seq_of_string loc s in |
| 246 |
List.fold_right |
List.fold_right |
| 247 |
(fun (loc,c) accu -> |
(fun (loc,c) accu -> |
| 248 |
let c = Chars.Unichar.from_char c in |
let c = Chars.mk_char c in |
| 249 |
let c = Chars.atom c in |
let c = Chars.atom c in |
| 250 |
Seq (Elem (mk loc (Internal (Types.char c))), accu)) |
Seq (Elem (mk loc (Internal (Types.char c))), accu)) |
| 251 |
s |
s |
| 270 |
| "("; a = LIDENT; ":="; c = const; ")" -> mk loc (Constant (a,c)) |
| "("; a = LIDENT; ":="; c = const; ")" -> mk loc (Constant (a,c)) |
| 271 |
| a = UIDENT -> mk loc (PatVar a) |
| a = UIDENT -> mk loc (PatVar a) |
| 272 |
| i = INT ; "--"; j = INT -> |
| i = INT ; "--"; j = INT -> |
| 273 |
let i = Big_int.big_int_of_string i |
let i = Intervals.mk i |
| 274 |
and j = Big_int.big_int_of_string j in |
and j = Intervals.mk j in |
| 275 |
mk loc (Internal (Types.interval (Intervals.bounded i j))) |
mk loc (Internal (Types.interval (Intervals.bounded i j))) |
| 276 |
| i = INT -> |
| i = INT -> |
| 277 |
let i = Big_int.big_int_of_string i in |
let i = Intervals.mk i in |
| 278 |
mk loc (Internal (Types.interval (Intervals.atom i))) |
mk loc (Internal (Types.interval (Intervals.atom i))) |
| 279 |
| "*"; "--"; j = INT -> |
| "*"; "--"; j = INT -> |
| 280 |
let j = Big_int.big_int_of_string j in |
let j = Intervals.mk j in |
| 281 |
mk loc (Internal (Types.interval (Intervals.left j))) |
mk loc (Internal (Types.interval (Intervals.left j))) |
| 282 |
| i = INT; "--"; "*" -> |
| i = INT; "--"; "*" -> |
| 283 |
let i = Big_int.big_int_of_string i in |
let i = Intervals.mk i in |
| 284 |
mk loc (Internal (Types.interval (Intervals.right i))) |
mk loc (Internal (Types.interval (Intervals.right i))) |
| 285 |
| i = char -> |
| i = char -> |
| 286 |
mk loc (Internal (Types.char (Chars.char_class i i))) |
mk loc (Internal (Types.char (Chars.char_class i i))) |
| 296 |
[ "<"; LIDENT "_" -> mk loc (Internal (Types.atom (Atoms.any))) |
[ "<"; LIDENT "_" -> mk loc (Internal (Types.atom (Atoms.any))) |
| 297 |
| a = TAG -> |
| a = TAG -> |
| 298 |
mk loc |
mk loc |
| 299 |
(Internal (Types.atom (Atoms.atom (Types.AtomPool.mk a)))) ] |
(Internal (Types.atom (Atoms.atom (Atoms.mk a)))) ] |
| 300 |
| [ "<"; t = pat -> t ] |
| [ "<"; t = pat -> t ] |
| 301 |
]; |
]; |
| 302 |
a = attrib_spec; ">"; c = pat -> |
a = attrib_spec; ">"; c = pat -> |
| 308 |
mk loc (Internal |
mk loc (Internal |
| 309 |
(Types.char |
(Types.char |
| 310 |
(Chars.atom |
(Chars.atom |
| 311 |
(Chars.Unichar.from_char c))))) s in |
(Chars.mk_char c))))) s in |
| 312 |
let s = s @ [mk loc (Internal (Sequence.nil_type))] in |
let s = s @ [mk loc (Internal (Sequence.nil_type))] in |
| 313 |
multi_prod loc s |
multi_prod loc s |
| 314 |
] |
] |
| 326 |
|
|
| 327 |
char: |
char: |
| 328 |
[ |
[ |
| 329 |
[ c = STRING1 -> Chars.Unichar.from_char (parse_char loc c) |
[ c = STRING1 -> Chars.mk_char (parse_char loc c) |
| 330 |
| "!"; i = INT -> Chars.Unichar.from_int (int_of_string i) ] |
| "!"; i = INT -> Chars.mk_int (int_of_string i) ] |
| 331 |
]; |
]; |
| 332 |
|
|
| 333 |
|
|
| 334 |
const: |
const: |
| 335 |
[ |
[ |
| 336 |
[ i = INT -> Types.Integer (Big_int.big_int_of_string i) |
[ i = INT -> Types.Integer (Intervals.mk i) |
| 337 |
| "`"; a = [LIDENT | UIDENT] -> Types.Atom (Types.AtomPool.mk a) |
| "`"; a = [LIDENT | UIDENT] -> Types.Atom (Atoms.mk a) |
| 338 |
| c = char -> Types.Char c ] |
| c = char -> Types.Char c ] |
| 339 |
]; |
]; |
| 340 |
|
|