Module type Grammar.S
Signature type of the functor Grammar.GMake
. The types and functions are almost the same than in generic interface, but:
- Grammars are not values. Functions holding a grammar as parameter do not have this parameter yet.
- The type
parsable
is used in functionparse
instead of the char stream, avoiding the possible loss of tokens. - The type of tokens (expressions and patterns) can be any type (instead of (string * string)); the module parameter must specify a way to show them as (string * string)
val parsable : ?loc:Loc.t -> char Stdlib.Stream.t -> parsable
val tokens : string -> (string option * int) list
module Entry : sig ... end
type ty_norec
=
|
TyNoRec
type ty_mayrec
=
|
TyMayRec
type ('self, 'trec, 'a) ty_symbol
type ('self, 'trec, 'f, 'r) ty_rule
type 'a ty_rules
type 'a ty_production
val s_nterm : 'a Entry.e -> ('self, ty_norec, 'a) ty_symbol
val s_nterml : 'a Entry.e -> string -> ('self, ty_norec, 'a) ty_symbol
val s_list0 : ('self, 'trec, 'a) ty_symbol -> ('self, 'trec, 'a list) ty_symbol
val s_list0sep : ('self, 'trec, 'a) ty_symbol -> ('self, ty_norec, 'b) ty_symbol -> bool -> ('self, 'trec, 'a list) ty_symbol
val s_list1 : ('self, 'trec, 'a) ty_symbol -> ('self, 'trec, 'a list) ty_symbol
val s_list1sep : ('self, 'trec, 'a) ty_symbol -> ('self, ty_norec, 'b) ty_symbol -> bool -> ('self, 'trec, 'a list) ty_symbol
val s_opt : ('self, 'trec, 'a) ty_symbol -> ('self, 'trec, 'a option) ty_symbol
val s_self : ('self, ty_mayrec, 'self) ty_symbol
val s_next : ('self, ty_mayrec, 'self) ty_symbol
val s_token : 'c pattern -> ('self, ty_norec, 'c) ty_symbol
val s_rules : warning:(string -> unit) option -> 'a ty_rules list -> ('self, ty_norec, 'a) ty_symbol
val r_stop : ('self, ty_norec, 'r, 'r) ty_rule
val r_next : ('self, _, 'a, 'r) ty_rule -> ('self, _, 'b) ty_symbol -> ('self, ty_mayrec, 'b -> 'a, 'r) ty_rule
val r_next_norec : ('self, ty_norec, 'a, 'r) ty_rule -> ('self, ty_norec, 'b) ty_symbol -> ('self, ty_norec, 'b -> 'a, 'r) ty_rule
val rules : ((_, ty_norec, 'f, Loc.t -> 'a) ty_rule * 'f) -> 'a ty_rules
val production : (('a, _, 'f, Loc.t -> 'a) ty_rule * 'f) -> 'a ty_production
module Unsafe : sig ... end
val safe_extend : warning:(string -> unit) option -> 'a Entry.e -> Gramext.position option -> (string option * Gramext.g_assoc option * 'a ty_production list) list -> unit
val safe_delete_rule : 'a Entry.e -> ('a, _, 'f, 'r) ty_rule -> unit