diff options
author | Luc Maranget <luc.maranget@inria.fr> | 2003-02-24 15:13:01 +0000 |
---|---|---|
committer | Luc Maranget <luc.maranget@inria.fr> | 2003-02-24 15:13:01 +0000 |
commit | 22589806252efb6ab2d629eed8a3faf63dfbeb95 (patch) | |
tree | b6f350e0226953f925515394165455bead221e2f /camlp4/ocaml_src/lib/token.ml | |
parent | 477788b86b4864f67bf846c2cb2d314aa50fb737 (diff) |
merci damien (locations fantomes)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5400 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'camlp4/ocaml_src/lib/token.ml')
-rw-r--r-- | camlp4/ocaml_src/lib/token.ml | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/camlp4/ocaml_src/lib/token.ml b/camlp4/ocaml_src/lib/token.ml index 99bbd2f21..63f09bc19 100644 --- a/camlp4/ocaml_src/lib/token.ml +++ b/camlp4/ocaml_src/lib/token.ml @@ -110,6 +110,8 @@ let mstore len s = let get_buff len = String.sub !buff 0 len;; let valch x = Char.code x - Char.code '0';; +let valch_a x = Char.code x - Char.code 'a' + 10;; +let valch_A x = Char.code x - Char.code 'A' + 10;; let rec backslash s i = if i = String.length s then raise Not_found @@ -123,6 +125,7 @@ let rec backslash s i = | '\"' -> '\"', i + 1 | '\'' -> '\'', i + 1 | '0'..'9' as c -> backslash1 (valch c) s (i + 1) + | 'x' -> backslash1h s (i + 1) | _ -> raise Not_found and backslash1 cod s i = if i = String.length s then '\\', i - 1 @@ -136,6 +139,22 @@ and backslash2 cod s i = match s.[i] with '0'..'9' as c -> Char.chr (10 * cod + valch c), i + 1 | _ -> '\\', i - 2 +and backslash1h s i = + if i = String.length s then '\\', i - 1 + else + match s.[i] with + '0'..'9' as c -> backslash2h (valch c) s (i + 1) + | 'a'..'f' as c -> backslash2h (valch_a c) s (i + 1) + | 'A'..'F' as c -> backslash2h (valch_A c) s (i + 1) + | _ -> '\\', i - 1 +and backslash2h cod s i = + if i = String.length s then '\\', i - 2 + else + match s.[i] with + '0'..'9' as c -> Char.chr (16 * cod + valch c), i + 1 + | 'a'..'f' as c -> Char.chr (16 * cod + valch_a c), i + 1 + | 'A'..'F' as c -> Char.chr (16 * cod + valch_A c), i + 1 + | _ -> '\\', i - 2 ;; let rec skip_indent s i = |