src/Pure/Syntax/syntax.ML
changeset 42056 160a630b2c7e
parent 42048 afd11ca8e018
child 42131 1d9710ff7209
equal deleted inserted replaced
42055:ad87c485ff30 42056:160a630b2c7e
   108   val basic_nonterms: string list
   108   val basic_nonterms: string list
   109   val print_gram: syntax -> unit
   109   val print_gram: syntax -> unit
   110   val print_trans: syntax -> unit
   110   val print_trans: syntax -> unit
   111   val print_syntax: syntax -> unit
   111   val print_syntax: syntax -> unit
   112   val guess_infix: syntax -> string -> mixfix option
   112   val guess_infix: syntax -> string -> mixfix option
       
   113   val positions_raw: Config.raw
       
   114   val positions: bool Config.T
   113   val ambiguity_enabled: bool Config.T
   115   val ambiguity_enabled: bool Config.T
   114   val ambiguity_level_raw: Config.raw
   116   val ambiguity_level_raw: Config.raw
   115   val ambiguity_level: int Config.T
   117   val ambiguity_level: int Config.T
   116   val ambiguity_limit: int Config.T
   118   val ambiguity_limit: int Config.T
   117   val standard_parse_term: (term -> string option) ->
   119   val standard_parse_term: (term -> string option) ->
   695   in (case (results, exns) of ([], exn :: _) => reraise exn | _ => results) end;
   697   in (case (results, exns) of ([], exn :: _) => reraise exn | _ => results) end;
   696 
   698 
   697 
   699 
   698 (* read_ast *)
   700 (* read_ast *)
   699 
   701 
       
   702 val positions_raw = Config.declare "syntax_positions" (fn _ => Config.Bool true);
       
   703 val positions = Config.bool positions_raw;
       
   704 
   700 val ambiguity_enabled =
   705 val ambiguity_enabled =
   701   Config.bool (Config.declare "syntax_ambiguity_enabled" (fn _ => Config.Bool true));
   706   Config.bool (Config.declare "syntax_ambiguity_enabled" (fn _ => Config.Bool true));
   702 
   707 
   703 val ambiguity_level_raw = Config.declare "syntax_ambiguity_level" (fn _ => Config.Int 1);
   708 val ambiguity_level_raw = Config.declare "syntax_ambiguity_level" (fn _ => Config.Int 1);
   704 val ambiguity_level = Config.int ambiguity_level_raw;
   709 val ambiguity_level = Config.int ambiguity_level_raw;
   730         (Context_Position.if_visible ctxt warning (cat_lines
   735         (Context_Position.if_visible ctxt warning (cat_lines
   731           (("Ambiguous input" ^ Position.str_of pos ^
   736           (("Ambiguous input" ^ Position.str_of pos ^
   732             "\nproduces " ^ string_of_int len ^ " parse trees" ^
   737             "\nproduces " ^ string_of_int len ^ " parse trees" ^
   733             (if len <= limit then "" else " (" ^ string_of_int limit ^ " displayed)") ^ ":") ::
   738             (if len <= limit then "" else " (" ^ string_of_int limit ^ " displayed)") ^ ":") ::
   734             map show_pt (take limit pts))));
   739             map show_pt (take limit pts))));
       
   740 
       
   741     val constrain_pos = not raw andalso Config.get ctxt positions;
   735   in
   742   in
   736     some_results (Syn_Trans.parsetree_to_ast ctxt false (lookup_tr parse_ast_trtab)) pts
   743     some_results (Syn_Trans.parsetree_to_ast ctxt constrain_pos (lookup_tr parse_ast_trtab)) pts
   737   end;
   744   end;
   738 
   745 
   739 
   746 
   740 (* read *)
   747 (* read *)
   741 
   748