aboutsummaryrefslogtreecommitdiff
path: root/gramlib
diff options
context:
space:
mode:
authorEmilio Jesus Gallego Arias2018-11-24 21:22:49 +0100
committerEmilio Jesus Gallego Arias2018-11-27 15:21:50 +0100
commit9703ac1003b7c64fec624f1e7d4407f84fdea873 (patch)
tree7621ce4f47844862a60004e870e6654a5bd86a89 /gramlib
parent786a522c18aa39a6d1d8312bd70132dfbfd16df6 (diff)
[gramlib] Remove unused function `gram_reinit`.
Diffstat (limited to 'gramlib')
-rw-r--r--gramlib/gramext.ml38
-rw-r--r--gramlib/gramext.mli4
-rw-r--r--gramlib/grammar.ml8
-rw-r--r--gramlib/grammar.mli5
4 files changed, 29 insertions, 26 deletions
diff --git a/gramlib/gramext.ml b/gramlib/gramext.ml
index 6a5c16fcc6..c35c4bd18e 100644
--- a/gramlib/gramext.ml
+++ b/gramlib/gramext.ml
@@ -103,14 +103,16 @@ let insert_tree ~warning entry_name gsymbols action tree =
Node {node = s; son = son; brother = bro} ->
Node {node = s; son = son; brother = insert [] bro}
| LocAct (old_action, action_list) ->
- if warning then
- begin
- eprintf "<W> Grammar extension: ";
- if entry_name <> "" then eprintf "in [%s], " entry_name;
- eprintf "some rule has been masked\n";
- flush stderr
- end;
- LocAct (action, old_action :: action_list)
+ begin match warning with
+ | None -> ()
+ | Some warn_fn ->
+ let msg =
+ "<W> Grammar extension: " ^
+ (if entry_name <> "" then "" else "in ["^entry_name^"%s], ") ^
+ "some rule has been masked" in
+ warn_fn msg
+ end;
+ LocAct (action, old_action :: action_list)
| DeadEnd -> LocAct (action, [])
and insert_in_tree s sl tree =
match try_insert s sl tree with
@@ -196,17 +198,23 @@ let change_lev ~warning lev n lname assoc =
match assoc with
None -> lev.assoc
| Some a ->
- if a <> lev.assoc && warning then
- begin
- eprintf "<W> Changing associativity of level \"%s\"\n" n;
- flush stderr
- end;
+ if a <> lev.assoc then
+ begin
+ match warning with
+ | None -> ()
+ | Some warn_fn ->
+ warn_fn ("<W> Changing associativity of level \""^n^"\"")
+ end;
a
in
begin match lname with
Some n ->
- if lname <> lev.lname && warning then
- begin eprintf "<W> Level label \"%s\" ignored\n" n; flush stderr end
+ if lname <> lev.lname then
+ begin match warning with
+ | None -> ()
+ | Some warn_fn ->
+ warn_fn ("<W> Level label \""^n^"\" ignored")
+ end;
| None -> ()
end;
{assoc = a; lname = lev.lname; lsuffix = lev.lsuffix; lprefix = lev.lprefix}
diff --git a/gramlib/gramext.mli b/gramlib/gramext.mli
index a9c20d012b..ecb95ec61b 100644
--- a/gramlib/gramext.mli
+++ b/gramlib/gramext.mli
@@ -53,13 +53,13 @@ type position =
| Like of string
| Level of string
-val levels_of_rules : warning:bool ->
+val levels_of_rules : warning:(string -> unit) option ->
'te g_entry -> position option ->
(string option * g_assoc option * ('te g_symbol list * g_action) list)
list ->
'te g_level list
-val srules : warning:bool -> ('te g_symbol list * g_action) list -> 'te g_symbol
+val srules : warning:(string -> unit) option -> ('te g_symbol list * g_action) list -> 'te g_symbol
val eq_symbol : 'a g_symbol -> 'a g_symbol -> bool
val delete_rule_in_level_list :
diff --git a/gramlib/grammar.ml b/gramlib/grammar.ml
index 520170962d..285c14ec62 100644
--- a/gramlib/grammar.ml
+++ b/gramlib/grammar.ml
@@ -841,8 +841,6 @@ let clear_entry e =
Dlevels _ -> e.edesc <- Dlevels []
| Dparser _ -> ()
-let gram_reinit g glexer = Hashtbl.clear g.gtokens; g.glexer <- glexer
-
(* Functorial interface *)
module type GLexerType = sig type te val lexer : te Plexing.lexer end
@@ -881,7 +879,7 @@ module type S =
val s_self : ('self, 'self) ty_symbol
val s_next : ('self, 'self) ty_symbol
val s_token : Plexing.pattern -> ('self, string) ty_symbol
- val s_rules : warning:bool -> 'a ty_production list -> ('self, 'a) ty_symbol
+ val s_rules : warning:(string -> unit) option -> 'a ty_production list -> ('self, 'a) ty_symbol
val r_stop : ('self, 'r, 'r) ty_rule
val r_next :
('self, 'a, 'r) ty_rule -> ('self, 'b) ty_symbol ->
@@ -889,10 +887,9 @@ module type S =
val production : ('a, 'f, Ploc.t -> 'a) ty_rule * 'f -> 'a ty_production
module Unsafe :
sig
- val gram_reinit : te Plexing.lexer -> unit
val clear_entry : 'a Entry.e -> unit
end
- val safe_extend : warning:bool ->
+ val safe_extend : warning:(string -> unit) option ->
'a Entry.e -> Gramext.position option ->
(string option * Gramext.g_assoc option * 'a ty_production list)
list ->
@@ -953,7 +950,6 @@ module GMake (L : GLexerType) =
Obj.magic p
module Unsafe =
struct
- let gram_reinit = gram_reinit gram
let clear_entry = clear_entry
end
let safe_extend ~warning e pos
diff --git a/gramlib/grammar.mli b/gramlib/grammar.mli
index 0748f5a65d..0c585a7c0d 100644
--- a/gramlib/grammar.mli
+++ b/gramlib/grammar.mli
@@ -53,7 +53,7 @@ module type S =
val s_self : ('self, 'self) ty_symbol
val s_next : ('self, 'self) ty_symbol
val s_token : Plexing.pattern -> ('self, string) ty_symbol
- val s_rules : warning:bool -> 'a ty_production list -> ('self, 'a) ty_symbol
+ val s_rules : warning:(string -> unit) option -> 'a ty_production list -> ('self, 'a) ty_symbol
val r_stop : ('self, 'r, 'r) ty_rule
val r_next :
('self, 'a, 'r) ty_rule -> ('self, 'b) ty_symbol ->
@@ -62,10 +62,9 @@ module type S =
module Unsafe :
sig
- val gram_reinit : te Plexing.lexer -> unit
val clear_entry : 'a Entry.e -> unit
end
- val safe_extend : warning:bool ->
+ val safe_extend : warning:(string -> unit) option ->
'a Entry.e -> Gramext.position option ->
(string option * Gramext.g_assoc option * 'a ty_production list)
list ->