sig
module type S =
sig
module Loc : Sig.Loc
module Token :
sig
module Loc :
sig
type t = Loc.t
val mk : string -> t
val ghost : t
val of_lexing_position : Lexing.position -> t
val to_ocaml_location : t -> Camlp4_import.Location.t
val of_ocaml_location : Camlp4_import.Location.t -> t
val of_lexbuf : Lexing.lexbuf -> t
val of_tuple :
string * int * int * int * int * int * int * bool -> t
val to_tuple :
t -> string * int * int * int * int * int * int * bool
val merge : t -> t -> t
val join : t -> t
val move : [ `both | `start | `stop ] -> int -> t -> t
val shift : int -> t -> t
val move_line : int -> t -> t
val file_name : t -> string
val start_line : t -> int
val stop_line : t -> int
val start_bol : t -> int
val stop_bol : t -> int
val start_off : t -> int
val stop_off : t -> int
val start_pos : t -> Lexing.position
val stop_pos : t -> Lexing.position
val is_ghost : t -> bool
val ghostify : t -> t
val set_file_name : string -> t -> t
val strictly_before : t -> t -> bool
val make_absolute : t -> t
val print : Format.formatter -> t -> unit
val dump : Format.formatter -> t -> unit
val to_string : t -> string
exception Exc_located of t * exn
val raise : t -> exn -> 'a
val name : string ref
end
type t
val to_string : t -> string
val print : Format.formatter -> t -> unit
val match_keyword : string -> t -> bool
val extract_string : t -> string
module Filter :
sig
type token_filter = (t, Loc.t) Sig.stream_filter
type t
val mk : (string -> bool) -> t
val define_filter : t -> (token_filter -> token_filter) -> unit
val filter : t -> token_filter
val keyword_added : t -> string -> bool -> unit
val keyword_removed : t -> string -> unit
end
module Error : Sig.Error
end
module Lexer :
sig
module Loc :
sig
type t = Loc.t
val mk : string -> t
val ghost : t
val of_lexing_position : Lexing.position -> t
val to_ocaml_location : t -> Camlp4_import.Location.t
val of_ocaml_location : Camlp4_import.Location.t -> t
val of_lexbuf : Lexing.lexbuf -> t
val of_tuple :
string * int * int * int * int * int * int * bool -> t
val to_tuple :
t -> string * int * int * int * int * int * int * bool
val merge : t -> t -> t
val join : t -> t
val move : [ `both | `start | `stop ] -> int -> t -> t
val shift : int -> t -> t
val move_line : int -> t -> t
val file_name : t -> string
val start_line : t -> int
val stop_line : t -> int
val start_bol : t -> int
val stop_bol : t -> int
val start_off : t -> int
val stop_off : t -> int
val start_pos : t -> Lexing.position
val stop_pos : t -> Lexing.position
val is_ghost : t -> bool
val ghostify : t -> t
val set_file_name : string -> t -> t
val strictly_before : t -> t -> bool
val make_absolute : t -> t
val print : Format.formatter -> t -> unit
val dump : Format.formatter -> t -> unit
val to_string : t -> string
exception Exc_located of t * exn
val raise : t -> exn -> 'a
val name : string ref
end
module Token :
sig
module Loc :
sig
type t = Loc.t
val mk : string -> t
val ghost : t
val of_lexing_position : Lexing.position -> t
val to_ocaml_location : t -> Camlp4_import.Location.t
val of_ocaml_location : Camlp4_import.Location.t -> t
val of_lexbuf : Lexing.lexbuf -> t
val of_tuple :
string * int * int * int * int * int * int * bool -> t
val to_tuple :
t -> string * int * int * int * int * int * int * bool
val merge : t -> t -> t
val join : t -> t
val move : [ `both | `start | `stop ] -> int -> t -> t
val shift : int -> t -> t
val move_line : int -> t -> t
val file_name : t -> string
val start_line : t -> int
val stop_line : t -> int
val start_bol : t -> int
val stop_bol : t -> int
val start_off : t -> int
val stop_off : t -> int
val start_pos : t -> Lexing.position
val stop_pos : t -> Lexing.position
val is_ghost : t -> bool
val ghostify : t -> t
val set_file_name : string -> t -> t
val strictly_before : t -> t -> bool
val make_absolute : t -> t
val print : Format.formatter -> t -> unit
val dump : Format.formatter -> t -> unit
val to_string : t -> string
exception Exc_located of t * exn
val raise : t -> exn -> 'a
val name : string ref
end
type t = Token.t
val to_string : t -> string
val print : Format.formatter -> t -> unit
val match_keyword : string -> t -> bool
val extract_string : t -> string
module Filter :
sig
type token_filter = (t, Loc.t) Sig.stream_filter
type t = Token.Filter.t
val mk : (string -> bool) -> t
val define_filter :
t -> (token_filter -> token_filter) -> unit
val filter : t -> token_filter
val keyword_added : t -> string -> bool -> unit
val keyword_removed : t -> string -> unit
end
module Error :
sig
type t = Token.Error.t
exception E of t
val to_string : t -> string
val print : Format.formatter -> t -> unit
end
end
module Error : Sig.Error
val mk :
unit -> Loc.t -> char Stream.t -> (Token.t * Loc.t) Stream.t
end
module Action : Sig.Grammar.Action
type gram = {
gfilter : Camlp4.Struct.Grammar.Structure.S.Token.Filter.t;
gkeywords : (string, int Pervasives.ref) Hashtbl.t;
glexer :
Camlp4.Struct.Loc.t ->
char Stream.t ->
(Camlp4.Struct.Grammar.Structure.S.Token.t * Camlp4.Struct.Loc.t)
Stream.t;
warning_verbose : bool Pervasives.ref;
error_verbose : bool Pervasives.ref;
}
type token_info = {
prev_loc : Camlp4.Struct.Loc.t;
cur_loc : Camlp4.Struct.Loc.t;
}
type token_stream =
(Camlp4.Struct.Grammar.Structure.S.Token.t *
Camlp4.Struct.Grammar.Structure.S.token_info)
Stream.t
type efun = Camlp4.Struct.Grammar.Structure.S.token_stream -> Action.t
type token_pattern =
(Camlp4.Struct.Grammar.Structure.S.Token.t -> bool) * string
type internal_entry = {
egram : Camlp4.Struct.Grammar.Structure.S.gram;
ename : string;
mutable estart : int -> Camlp4.Struct.Grammar.Structure.S.efun;
mutable econtinue :
int ->
Camlp4.Struct.Loc.t ->
Action.t -> Camlp4.Struct.Grammar.Structure.S.efun;
mutable edesc : Camlp4.Struct.Grammar.Structure.S.desc;
}
and desc =
Dlevels of Camlp4.Struct.Grammar.Structure.S.level list
| Dparser of
(Camlp4.Struct.Grammar.Structure.S.token_stream -> Action.t)
and level = {
assoc : Camlp4.Sig.Grammar.assoc;
lname : string option;
lsuffix : Camlp4.Struct.Grammar.Structure.S.tree;
lprefix : Camlp4.Struct.Grammar.Structure.S.tree;
}
and symbol =
Smeta of string * Camlp4.Struct.Grammar.Structure.S.symbol list *
Action.t
| Snterm of Camlp4.Struct.Grammar.Structure.S.internal_entry
| Snterml of Camlp4.Struct.Grammar.Structure.S.internal_entry *
string
| Slist0 of Camlp4.Struct.Grammar.Structure.S.symbol
| Slist0sep of Camlp4.Struct.Grammar.Structure.S.symbol *
Camlp4.Struct.Grammar.Structure.S.symbol
| Slist1 of Camlp4.Struct.Grammar.Structure.S.symbol
| Slist1sep of Camlp4.Struct.Grammar.Structure.S.symbol *
Camlp4.Struct.Grammar.Structure.S.symbol
| Sopt of Camlp4.Struct.Grammar.Structure.S.symbol
| Stry of Camlp4.Struct.Grammar.Structure.S.symbol
| Sself
| Snext
| Stoken of Camlp4.Struct.Grammar.Structure.S.token_pattern
| Skeyword of string
| Stree of Camlp4.Struct.Grammar.Structure.S.tree
and tree =
Node of Camlp4.Struct.Grammar.Structure.S.node
| LocAct of Action.t * Action.t list
| DeadEnd
and node = {
node : Camlp4.Struct.Grammar.Structure.S.symbol;
son : Camlp4.Struct.Grammar.Structure.S.tree;
brother : Camlp4.Struct.Grammar.Structure.S.tree;
}
type production_rule =
Camlp4.Struct.Grammar.Structure.S.symbol list * Action.t
type single_extend_statment =
string option * Camlp4.Sig.Grammar.assoc option *
Camlp4.Struct.Grammar.Structure.S.production_rule list
type extend_statment =
Camlp4.Sig.Grammar.position option *
Camlp4.Struct.Grammar.Structure.S.single_extend_statment list
type delete_statment = Camlp4.Struct.Grammar.Structure.S.symbol list
type ('a, 'b, 'c) fold =
Camlp4.Struct.Grammar.Structure.S.internal_entry ->
Camlp4.Struct.Grammar.Structure.S.symbol list ->
('a Stream.t -> 'b) -> 'a Stream.t -> 'c
type ('a, 'b, 'c) foldsep =
Camlp4.Struct.Grammar.Structure.S.internal_entry ->
Camlp4.Struct.Grammar.Structure.S.symbol list ->
('a Stream.t -> 'b) -> ('a Stream.t -> unit) -> 'a Stream.t -> 'c
val get_filter :
Camlp4.Struct.Grammar.Structure.S.gram ->
Camlp4.Struct.Grammar.Structure.S.Token.Filter.t
val using : Camlp4.Struct.Grammar.Structure.S.gram -> string -> unit
val removing : Camlp4.Struct.Grammar.Structure.S.gram -> string -> unit
end
module Make :
functor (Lexer : Sig.Lexer) ->
sig
module Loc :
sig
type t = Lexer.Loc.t
val mk : string -> t
val ghost : t
val of_lexing_position : Lexing.position -> t
val to_ocaml_location : t -> Camlp4_import.Location.t
val of_ocaml_location : Camlp4_import.Location.t -> t
val of_lexbuf : Lexing.lexbuf -> t
val of_tuple :
string * int * int * int * int * int * int * bool -> t
val to_tuple :
t -> string * int * int * int * int * int * int * bool
val merge : t -> t -> t
val join : t -> t
val move : [ `both | `start | `stop ] -> int -> t -> t
val shift : int -> t -> t
val move_line : int -> t -> t
val file_name : t -> string
val start_line : t -> int
val stop_line : t -> int
val start_bol : t -> int
val stop_bol : t -> int
val start_off : t -> int
val stop_off : t -> int
val start_pos : t -> Lexing.position
val stop_pos : t -> Lexing.position
val is_ghost : t -> bool
val ghostify : t -> t
val set_file_name : string -> t -> t
val strictly_before : t -> t -> bool
val make_absolute : t -> t
val print : Format.formatter -> t -> unit
val dump : Format.formatter -> t -> unit
val to_string : t -> string
exception Exc_located of t * exn
val raise : t -> exn -> 'a
val name : string ref
end
module Token :
sig
module Loc :
sig
type t = Lexer.Loc.t
val mk : string -> t
val ghost : t
val of_lexing_position : Lexing.position -> t
val to_ocaml_location : t -> Camlp4_import.Location.t
val of_ocaml_location : Camlp4_import.Location.t -> t
val of_lexbuf : Lexing.lexbuf -> t
val of_tuple :
string * int * int * int * int * int * int * bool -> t
val to_tuple :
t -> string * int * int * int * int * int * int * bool
val merge : t -> t -> t
val join : t -> t
val move : [ `both | `start | `stop ] -> int -> t -> t
val shift : int -> t -> t
val move_line : int -> t -> t
val file_name : t -> string
val start_line : t -> int
val stop_line : t -> int
val start_bol : t -> int
val stop_bol : t -> int
val start_off : t -> int
val stop_off : t -> int
val start_pos : t -> Lexing.position
val stop_pos : t -> Lexing.position
val is_ghost : t -> bool
val ghostify : t -> t
val set_file_name : string -> t -> t
val strictly_before : t -> t -> bool
val make_absolute : t -> t
val print : Format.formatter -> t -> unit
val dump : Format.formatter -> t -> unit
val to_string : t -> string
exception Exc_located of t * exn
val raise : t -> exn -> 'a
val name : string ref
end
type t = Lexer.Token.t
val to_string : t -> string
val print : Format.formatter -> t -> unit
val match_keyword : string -> t -> bool
val extract_string : t -> string
module Filter :
sig
type token_filter = (t, Loc.t) Sig.stream_filter
type t = Lexer.Token.Filter.t
val mk : (string -> bool) -> t
val define_filter :
t -> (token_filter -> token_filter) -> unit
val filter : t -> token_filter
val keyword_added : t -> string -> bool -> unit
val keyword_removed : t -> string -> unit
end
module Error :
sig
type t = Lexer.Token.Error.t
exception E of t
val to_string : t -> string
val print : Format.formatter -> t -> unit
end
end
module Action : Sig.Grammar.Action
module Lexer :
sig
module Loc :
sig
type t = Lexer.Loc.t
val mk : string -> t
val ghost : t
val of_lexing_position : Lexing.position -> t
val to_ocaml_location : t -> Camlp4_import.Location.t
val of_ocaml_location : Camlp4_import.Location.t -> t
val of_lexbuf : Lexing.lexbuf -> t
val of_tuple :
string * int * int * int * int * int * int * bool -> t
val to_tuple :
t -> string * int * int * int * int * int * int * bool
val merge : t -> t -> t
val join : t -> t
val move : [ `both | `start | `stop ] -> int -> t -> t
val shift : int -> t -> t
val move_line : int -> t -> t
val file_name : t -> string
val start_line : t -> int
val stop_line : t -> int
val start_bol : t -> int
val stop_bol : t -> int
val start_off : t -> int
val stop_off : t -> int
val start_pos : t -> Lexing.position
val stop_pos : t -> Lexing.position
val is_ghost : t -> bool
val ghostify : t -> t
val set_file_name : string -> t -> t
val strictly_before : t -> t -> bool
val make_absolute : t -> t
val print : Format.formatter -> t -> unit
val dump : Format.formatter -> t -> unit
val to_string : t -> string
exception Exc_located of t * exn
val raise : t -> exn -> 'a
val name : string ref
end
module Token :
sig
module Loc :
sig
type t = Loc.t
val mk : string -> t
val ghost : t
val of_lexing_position : Lexing.position -> t
val to_ocaml_location : t -> Camlp4_import.Location.t
val of_ocaml_location : Camlp4_import.Location.t -> t
val of_lexbuf : Lexing.lexbuf -> t
val of_tuple :
string * int * int * int * int * int * int * bool -> t
val to_tuple :
t -> string * int * int * int * int * int * int * bool
val merge : t -> t -> t
val join : t -> t
val move : [ `both | `start | `stop ] -> int -> t -> t
val shift : int -> t -> t
val move_line : int -> t -> t
val file_name : t -> string
val start_line : t -> int
val stop_line : t -> int
val start_bol : t -> int
val stop_bol : t -> int
val start_off : t -> int
val stop_off : t -> int
val start_pos : t -> Lexing.position
val stop_pos : t -> Lexing.position
val is_ghost : t -> bool
val ghostify : t -> t
val set_file_name : string -> t -> t
val strictly_before : t -> t -> bool
val make_absolute : t -> t
val print : Format.formatter -> t -> unit
val dump : Format.formatter -> t -> unit
val to_string : t -> string
exception Exc_located of t * exn
val raise : t -> exn -> 'a
val name : string ref
end
type t = Lexer.Token.t
val to_string : t -> string
val print : Format.formatter -> t -> unit
val match_keyword : string -> t -> bool
val extract_string : t -> string
module Filter :
sig
type token_filter = (t, Loc.t) Sig.stream_filter
type t = Lexer.Token.Filter.t
val mk : (string -> bool) -> t
val define_filter :
t -> (token_filter -> token_filter) -> unit
val filter : t -> token_filter
val keyword_added : t -> string -> bool -> unit
val keyword_removed : t -> string -> unit
end
module Error :
sig
type t = Lexer.Token.Error.t
exception E of t
val to_string : t -> string
val print : Format.formatter -> t -> unit
end
end
module Error :
sig
type t = Lexer.Error.t
exception E of t
val to_string : t -> string
val print : Format.formatter -> t -> unit
end
val mk :
unit -> Loc.t -> char Stream.t -> (Token.t * Loc.t) Stream.t
end
type gram = {
gfilter : Camlp4.Struct.Grammar.Structure.Make.Token.Filter.t;
gkeywords : (string, int Pervasives.ref) Hashtbl.t;
glexer :
Camlp4.Struct.Grammar.Structure.Make.Loc.t ->
char Stream.t ->
(Camlp4.Struct.Grammar.Structure.Make.Token.t *
Camlp4.Struct.Grammar.Structure.Make.Loc.t)
Stream.t;
warning_verbose : bool Pervasives.ref;
error_verbose : bool Pervasives.ref;
}
type token_info = {
prev_loc : Camlp4.Struct.Grammar.Structure.Make.Loc.t;
cur_loc : Camlp4.Struct.Grammar.Structure.Make.Loc.t;
}
type token_stream =
(Camlp4.Struct.Grammar.Structure.Make.Token.t *
Camlp4.Struct.Grammar.Structure.Make.token_info)
Stream.t
type efun =
Camlp4.Struct.Grammar.Structure.Make.token_stream -> Action.t
type token_pattern =
(Camlp4.Struct.Grammar.Structure.Make.Token.t -> bool) * string
type internal_entry = {
egram : Camlp4.Struct.Grammar.Structure.Make.gram;
ename : string;
mutable estart : int -> Camlp4.Struct.Grammar.Structure.Make.efun;
mutable econtinue :
int ->
Camlp4.Struct.Grammar.Structure.Make.Loc.t ->
Action.t -> Camlp4.Struct.Grammar.Structure.Make.efun;
mutable edesc : Camlp4.Struct.Grammar.Structure.Make.desc;
}
and desc =
Dlevels of Camlp4.Struct.Grammar.Structure.Make.level list
| Dparser of
(Camlp4.Struct.Grammar.Structure.Make.token_stream -> Action.t)
and level = {
assoc : Camlp4.Sig.Grammar.assoc;
lname : string option;
lsuffix : Camlp4.Struct.Grammar.Structure.Make.tree;
lprefix : Camlp4.Struct.Grammar.Structure.Make.tree;
}
and symbol =
Smeta of string *
Camlp4.Struct.Grammar.Structure.Make.symbol list * Action.t
| Snterm of Camlp4.Struct.Grammar.Structure.Make.internal_entry
| Snterml of Camlp4.Struct.Grammar.Structure.Make.internal_entry *
string
| Slist0 of Camlp4.Struct.Grammar.Structure.Make.symbol
| Slist0sep of Camlp4.Struct.Grammar.Structure.Make.symbol *
Camlp4.Struct.Grammar.Structure.Make.symbol
| Slist1 of Camlp4.Struct.Grammar.Structure.Make.symbol
| Slist1sep of Camlp4.Struct.Grammar.Structure.Make.symbol *
Camlp4.Struct.Grammar.Structure.Make.symbol
| Sopt of Camlp4.Struct.Grammar.Structure.Make.symbol
| Stry of Camlp4.Struct.Grammar.Structure.Make.symbol
| Sself
| Snext
| Stoken of Camlp4.Struct.Grammar.Structure.Make.token_pattern
| Skeyword of string
| Stree of Camlp4.Struct.Grammar.Structure.Make.tree
and tree =
Node of Camlp4.Struct.Grammar.Structure.Make.node
| LocAct of Action.t * Action.t list
| DeadEnd
and node = {
node : Camlp4.Struct.Grammar.Structure.Make.symbol;
son : Camlp4.Struct.Grammar.Structure.Make.tree;
brother : Camlp4.Struct.Grammar.Structure.Make.tree;
}
type production_rule =
Camlp4.Struct.Grammar.Structure.Make.symbol list * Action.t
type single_extend_statment =
string option * Camlp4.Sig.Grammar.assoc option *
Camlp4.Struct.Grammar.Structure.Make.production_rule list
type extend_statment =
Camlp4.Sig.Grammar.position option *
Camlp4.Struct.Grammar.Structure.Make.single_extend_statment list
type delete_statment =
Camlp4.Struct.Grammar.Structure.Make.symbol list
type ('a, 'b, 'c) fold =
Camlp4.Struct.Grammar.Structure.Make.internal_entry ->
Camlp4.Struct.Grammar.Structure.Make.symbol list ->
('a Stream.t -> 'b) -> 'a Stream.t -> 'c
type ('a, 'b, 'c) foldsep =
Camlp4.Struct.Grammar.Structure.Make.internal_entry ->
Camlp4.Struct.Grammar.Structure.Make.symbol list ->
('a Stream.t -> 'b) -> ('a Stream.t -> unit) -> 'a Stream.t -> 'c
val get_filter :
Camlp4.Struct.Grammar.Structure.Make.gram ->
Camlp4.Struct.Grammar.Structure.Make.Token.Filter.t
val token_location :
Camlp4.Struct.Grammar.Structure.Make.token_info ->
Camlp4.Struct.Grammar.Structure.Make.Loc.t
type 'a not_filtered = 'a
val using :
Camlp4.Struct.Grammar.Structure.Make.gram -> string -> unit
val removing :
Camlp4.Struct.Grammar.Structure.Make.gram -> string -> unit
end
end