configuration option "syntax_ast_trace" and "syntax_ast_stat";
authorwenzelm
Tue, 21 Dec 2010 21:21:21 +0100
changeset 41626390c53904220
parent 41625 08240feb69c7
child 41627 55286df6a423
configuration option "syntax_ast_trace" and "syntax_ast_stat";
NEWS
src/Pure/Isar/attrib.ML
src/Pure/Syntax/ast.ML
src/Pure/Syntax/syntax.ML
     1.1 --- a/NEWS	Tue Dec 21 21:05:50 2010 +0100
     1.2 +++ b/NEWS	Tue Dec 21 21:21:21 2010 +0100
     1.3 @@ -54,6 +54,8 @@
     1.4    show_consts                   show_consts
     1.5    show_abbrevs                  show_abbrevs
     1.6  
     1.7 +  Syntax.trace_ast              syntax_ast_trace
     1.8 +  Syntax.stat_ast               syntax_ast_stat
     1.9    Syntax.ambiguity_level        syntax_ambiguity_level
    1.10  
    1.11    Goal_Display.goals_limit      goals_limit
     2.1 --- a/src/Pure/Isar/attrib.ML	Tue Dec 21 21:05:50 2010 +0100
     2.2 +++ b/src/Pure/Isar/attrib.ML	Tue Dec 21 21:21:21 2010 +0100
     2.3 @@ -398,7 +398,9 @@
     2.4  (* theory setup *)
     2.5  
     2.6  val _ = Context.>> (Context.map_theory
     2.7 - (register_config Syntax.show_brackets_raw #>
     2.8 + (register_config Syntax.ast_trace_raw #>
     2.9 +  register_config Syntax.ast_stat_raw #>
    2.10 +  register_config Syntax.show_brackets_raw #>
    2.11    register_config Syntax.show_sorts_raw #>
    2.12    register_config Syntax.show_types_raw #>
    2.13    register_config Syntax.show_structs_raw #>
     3.1 --- a/src/Pure/Syntax/ast.ML	Tue Dec 21 21:05:50 2010 +0100
     3.2 +++ b/src/Pure/Syntax/ast.ML	Tue Dec 21 21:21:21 2010 +0100
     3.3 @@ -24,8 +24,10 @@
     3.4    val fold_ast_p: string -> ast list * ast -> ast
     3.5    val unfold_ast: string -> ast -> ast list
     3.6    val unfold_ast_p: string -> ast -> ast list * ast
     3.7 -  val trace_ast: bool Unsynchronized.ref
     3.8 -  val stat_ast: bool Unsynchronized.ref
     3.9 +  val ast_trace_raw: Config.raw
    3.10 +  val ast_trace: bool Config.T
    3.11 +  val ast_stat_raw: Config.raw
    3.12 +  val ast_stat: bool Config.T
    3.13  end;
    3.14  
    3.15  signature AST =
    3.16 @@ -33,8 +35,7 @@
    3.17    include AST1
    3.18    val head_of_rule: ast * ast -> string
    3.19    val rule_error: ast * ast -> string option
    3.20 -  val normalize: bool -> bool -> (string -> (ast * ast) list) -> ast -> ast
    3.21 -  val normalize_ast: (string -> (ast * ast) list) -> ast -> ast
    3.22 +  val normalize: Proof.context -> (string -> (ast * ast) list) -> ast -> ast
    3.23  end;
    3.24  
    3.25  structure Ast : AST =
    3.26 @@ -168,10 +169,18 @@
    3.27  
    3.28  (* normalize *)
    3.29  
    3.30 +val ast_trace_raw = Config.declare "syntax_ast_trace" (fn _ => Config.Bool false);
    3.31 +val ast_trace = Config.bool ast_trace_raw;
    3.32 +
    3.33 +val ast_stat_raw = Config.declare "syntax_ast_stat" (fn _ => Config.Bool false);
    3.34 +val ast_stat = Config.bool ast_stat_raw;
    3.35 +
    3.36  (*the normalizer works yoyo-like: top-down, bottom-up, top-down, ...*)
    3.37 +fun normalize ctxt get_rules pre_ast =
    3.38 +  let
    3.39 +    val trace = Config.get ctxt ast_trace;
    3.40 +    val stat = Config.get ctxt ast_stat;
    3.41  
    3.42 -fun normalize trace stat get_rules pre_ast =
    3.43 -  let
    3.44      val passes = Unsynchronized.ref 0;
    3.45      val failed_matches = Unsynchronized.ref 0;
    3.46      val changes = Unsynchronized.ref 0;
    3.47 @@ -241,13 +250,4 @@
    3.48        else ();
    3.49    in post_ast end;
    3.50  
    3.51 -
    3.52 -(* normalize_ast *)
    3.53 -
    3.54 -val trace_ast = Unsynchronized.ref false;
    3.55 -val stat_ast = Unsynchronized.ref false;
    3.56 -
    3.57 -fun normalize_ast get_rules ast =
    3.58 -  normalize (! trace_ast) (! stat_ast) get_rules ast;
    3.59 -
    3.60  end;
     4.1 --- a/src/Pure/Syntax/syntax.ML	Tue Dec 21 21:05:50 2010 +0100
     4.2 +++ b/src/Pure/Syntax/syntax.ML	Tue Dec 21 21:21:21 2010 +0100
     4.3 @@ -736,7 +736,7 @@
     4.4      val asts = read_asts ctxt syn false root inp;
     4.5    in
     4.6      Syn_Trans.asts_to_terms ctxt (lookup_tr parse_trtab)
     4.7 -      (map (Ast.normalize_ast (Symtab.lookup_list parse_ruletab)) asts)
     4.8 +      (map (Ast.normalize ctxt (Symtab.lookup_list parse_ruletab)) asts)
     4.9    end;
    4.10  
    4.11  
    4.12 @@ -871,7 +871,7 @@
    4.13    in
    4.14      Pretty.markup markup (prt_t ctxt curried prtabs (lookup_tr' print_ast_trtab)
    4.15        (lookup_tokentr tokentrtab (print_mode_value ()))
    4.16 -      (Ast.normalize_ast (Symtab.lookup_list print_ruletab) ast))
    4.17 +      (Ast.normalize ctxt (Symtab.lookup_list print_ruletab) ast))
    4.18    end;
    4.19  
    4.20  in