| Attached Files | camlp4_not_found.diff [^] (3,430 bytes) 2010-08-03 15:22 [Show Content] [Hide Content]diff --git camlp4/Camlp4/Struct/Grammar/Delete.ml camlp4/Camlp4/Struct/Grammar/Delete.ml
index 929ac2b..4e3ce5a 100644
--- camlp4/Camlp4/Struct/Grammar/Delete.ml
+++ camlp4/Camlp4/Struct/Grammar/Delete.ml
@@ -17,9 +17,12 @@
* - Nicolas Pouillard: refactoring
*)
+exception Rule_not_found of string;
+
module Make (Structure : Structure.S) = struct
module Tools = Tools.Make Structure;
module Parser = Parser.Make Structure;
+ module Print = Print.Make Structure;
open Structure;
(* Deleting a rule *)
@@ -83,6 +86,17 @@ and decr_keyw_use_in_tree gram =
decr_keyw_use_in_tree gram n.brother
} ]
;
+
+value rule_not_found _entry symbols =
+ let b = Buffer.create 13 in
+ let ppf = Format.formatter_of_buffer b in
+ do {
+ Print.print_rule ppf symbols;
+ Format.pp_print_flush ppf ();
+ raise (Rule_not_found (Buffer.contents b))
+ }
+;
+
value rec delete_rule_in_suffix entry symbols =
fun
[ [lev :: levs] ->
@@ -104,7 +118,7 @@ value rec delete_rule_in_suffix entry symbols =
| None ->
let levs = delete_rule_in_suffix entry symbols levs in
[lev :: levs] ]
- | [] -> raise Not_found ]
+ | [] -> rule_not_found entry symbols ]
;
value rec delete_rule_in_prefix entry symbols =
@@ -128,7 +142,7 @@ value rec delete_rule_in_prefix entry symbols =
| None ->
let levs = delete_rule_in_prefix entry symbols levs in
[lev :: levs] ]
- | [] -> raise Not_found ]
+ | [] -> rule_not_found entry symbols ]
;
value rec delete_rule_in_level_list entry symbols levs =
diff --git camlp4/Camlp4Parsers/Camlp4ListComprehension.ml camlp4/Camlp4Parsers/Camlp4ListComprehension.ml
index 874426b..fa5ee19 100644
--- camlp4/Camlp4Parsers/Camlp4ListComprehension.ml
+++ camlp4/Camlp4Parsers/Camlp4ListComprehension.ml
@@ -102,7 +102,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct
try do {
DELETE_RULE Gram expr: "["; sem_expr_for_list; "::"; expr; "]" END;
True
- } with [ Not_found -> False ];
+ } with [ Struct.Grammar.Delete.Rule_not_found _ -> False ];
value comprehension_or_sem_expr_for_list =
Gram.Entry.mk "comprehension_or_sem_expr_for_list";
diff --git camlp4/Camlp4Parsers/Camlp4MacroParser.ml camlp4/Camlp4Parsers/Camlp4MacroParser.ml
index 57f660d..20fa7a3 100644
--- camlp4/Camlp4Parsers/Camlp4MacroParser.ml
+++ camlp4/Camlp4Parsers/Camlp4MacroParser.ml
@@ -234,7 +234,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct
defined.val := list_remove x defined.val;
}
with
- [ Not_found -> () ];
+ [ Struct.Grammar.Delete.Rule_not_found _ -> () ];
value parse_def s =
match Gram.parse_string expr (Loc.mk "<command line>") s with
diff --git camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.ml camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.ml
index e56ab36..75016d8 100644
--- camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.ml
+++ camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.ml
@@ -40,7 +40,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct
value revised =
try
(DELETE_RULE Gram expr: "if"; SELF; "then"; SELF; "else"; SELF END; True)
- with [ Not_found -> begin
+ with [ Struct.Grammar.Delete.Rule_not_found _ -> begin
DELETE_RULE Gram expr: "if"; SELF; "then"; expr LEVEL "top"; "else"; expr LEVEL "top" END;
DELETE_RULE Gram expr: "if"; SELF; "then"; expr LEVEL "top" END; False
end ];
|