diff options
| author | letouzey | 2010-05-19 15:29:44 +0000 |
|---|---|---|
| committer | letouzey | 2010-05-19 15:29:44 +0000 |
| commit | 259dde7928696593c2d3c6de474f5cf50fa4417d (patch) | |
| tree | 7fe225a0731c13b30cb10ae7098e096f38903366 /lib | |
| parent | e1feff1215562d8f99fedf73c87011e6d7edca19 (diff) | |
Nicer representation of tokens, more independant of camlp*
Cf tok.ml, token isn't anymore string*string where first
string encodes the kind of the token, but rather a nice
sum type. Unfortunately, string*string (a.k.a Plexing.pattern)
is still used in some places of Camlp5, so there's a few
conversions back and forth. But the penalty should be quite low,
and having nicer tokens helps in the forthcoming integration
of support for camlp4 post 3.10
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@13018 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/compat.ml4 | 3 | ||||
| -rw-r--r-- | lib/util.ml | 9 | ||||
| -rw-r--r-- | lib/util.mli | 7 |
3 files changed, 16 insertions, 3 deletions
diff --git a/lib/compat.ml4 b/lib/compat.ml4 index 5ed8d7a546..c377581527 100644 --- a/lib/compat.ml4 +++ b/lib/compat.ml4 @@ -17,8 +17,7 @@ let unloc loc = Stdpp.first_pos loc, Stdpp.last_pos loc let join_loc loc1 loc2 = if loc1 = dummy_loc or loc2 = dummy_loc then dummy_loc else Stdpp.encl_loc loc1 loc2 -type token = string*string -type lexer = token Token.glexer +type lexer = Tok.t Token.glexer ELSE (* official camlp4 of ocaml >= 3.10 *) diff --git a/lib/util.ml b/lib/util.ml index a70278d575..d08727d27e 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -1115,6 +1115,15 @@ let array_rev_to_list a = if i >= Array.length a then res else tolist (i+1) (a.(i) :: res) in tolist 0 [] +(* Stream *) + +let stream_nth n st = + try List.nth (Stream.npeek (n+1) st) n + with Failure _ -> raise Stream.Failure + +let stream_njunk n st = + for i = 1 to n do Stream.junk st done + (* Matrices *) let matrix_transpose mat = diff --git a/lib/util.mli b/lib/util.mli index f7f40b8056..9cef982fb3 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -269,7 +269,12 @@ val array_distinct : 'a array -> bool val array_union_map : ('a -> 'b -> 'b) -> 'a array -> 'b -> 'b val array_rev_to_list : 'a array -> 'a list -(** {6 Matrices } *) +(** {6 Streams. } *) + +val stream_nth : int -> 'a Stream.t -> 'a +val stream_njunk : int -> 'a Stream.t -> unit + +(** {6 Matrices. } *) val matrix_transpose : 'a list list -> 'a list list |
