src/Pure/Isar/keyword.ML
changeset 46958 0ec8f04e753a
parent 46957 0c15caf47040
child 46961 5c6955f487e5
equal deleted inserted replaced
46957:0c15caf47040 46958:0ec8f04e753a
    43   val command_keyword: string -> T option
    43   val command_keyword: string -> T option
    44   val command_tags: string -> string list
    44   val command_tags: string -> string list
    45   val dest: unit -> string list * string list
    45   val dest: unit -> string list * string list
    46   val keyword_statusN: string
    46   val keyword_statusN: string
    47   val status: unit -> unit
    47   val status: unit -> unit
    48   val declare: string -> T option -> unit
    48   val define: string * T option -> unit
    49   val is_diag: string -> bool
    49   val is_diag: string -> bool
    50   val is_control: string -> bool
    50   val is_control: string -> bool
    51   val is_regular: string -> bool
    51   val is_regular: string -> bool
    52   val is_heading: string -> bool
    52   val is_heading: string -> bool
    53   val is_theory_begin: string -> bool
    53   val is_theory_begin: string -> bool
   212     val _ = List.app keyword_status (sort_strings (Scan.dest_lexicon minor));
   212     val _ = List.app keyword_status (sort_strings (Scan.dest_lexicon minor));
   213     val _ = List.app command_status (sort_wrt #1 (Symtab.dest commands));
   213     val _ = List.app command_status (sort_wrt #1 (Symtab.dest commands));
   214   in () end;
   214   in () end;
   215 
   215 
   216 
   216 
   217 (* declare *)
   217 (* define *)
   218 
   218 
   219 fun declare name NONE =
   219 fun define (name, NONE) =
   220      (change_keywords (fn ((minor, major), commands) =>
   220      (change_keywords (fn ((minor, major), commands) =>
   221         let
   221         let
   222           val minor' = Scan.extend_lexicon (Symbol.explode name) minor;
   222           val minor' = Scan.extend_lexicon (Symbol.explode name) minor;
   223         in ((minor', major), commands) end);
   223         in ((minor', major), commands) end);
   224       keyword_status name)
   224       keyword_status name)
   225   | declare name (SOME kind) =
   225   | define (name, SOME kind) =
   226      (change_keywords (fn ((minor, major), commands) =>
   226      (change_keywords (fn ((minor, major), commands) =>
   227         let
   227         let
   228           val major' = Scan.extend_lexicon (Symbol.explode name) major;
   228           val major' = Scan.extend_lexicon (Symbol.explode name) major;
   229           val commands' = Symtab.update (name, kind) commands;
   229           val commands' = Symtab.update (name, kind) commands;
   230         in ((minor, major'), commands') end);
   230         in ((minor, major'), commands') end);