src/Pure/Isar/attrib.ML
changeset 58045 ab2483fad861
parent 58028 e4250d370657
child 58047 9f3826352b52
equal deleted inserted replaced
58037:f7be22c6646b 58045:ab2483fad861
    46   val internal: (morphism -> attribute) -> Token.src
    46   val internal: (morphism -> attribute) -> Token.src
    47   val add_del: attribute -> attribute -> attribute context_parser
    47   val add_del: attribute -> attribute -> attribute context_parser
    48   val thm: thm context_parser
    48   val thm: thm context_parser
    49   val thms: thm list context_parser
    49   val thms: thm list context_parser
    50   val multi_thm: thm list context_parser
    50   val multi_thm: thm list context_parser
       
    51   val check_attribs: Proof.context -> Token.src list -> Token.src list
       
    52   val read_attribs: Proof.context -> Symbol_Pos.text * Position.T -> Token.src list
    51   val transform_facts: morphism ->
    53   val transform_facts: morphism ->
    52     (Attrib.binding * (thm list * Token.src list) list) list ->
    54     (Attrib.binding * (thm list * Token.src list) list) list ->
    53     (Attrib.binding * (thm list * Token.src list) list) list
    55     (Attrib.binding * (thm list * Token.src list) list) list
    54   val partial_evaluation: Proof.context ->
    56   val partial_evaluation: Proof.context ->
    55     (binding * (thm list * Token.src list) list) list ->
    57     (binding * (thm list * Token.src list) list) list ->
   272 val thm = gen_thm Facts.the_single;
   274 val thm = gen_thm Facts.the_single;
   273 val multi_thm = gen_thm (K I);
   275 val multi_thm = gen_thm (K I);
   274 val thms = Scan.repeat multi_thm >> flat;
   276 val thms = Scan.repeat multi_thm >> flat;
   275 
   277 
   276 end;
   278 end;
       
   279 
       
   280 
       
   281 (* read attribute source *)
       
   282 
       
   283 fun check_attribs ctxt raw_srcs =
       
   284   let
       
   285     val srcs = map (check_src ctxt) raw_srcs;
       
   286     val _ = map (attribute ctxt) srcs;
       
   287   in srcs end;
       
   288 
       
   289 fun read_attribs ctxt (text, pos) =
       
   290   let
       
   291     val lex = #1 (Keyword.get_lexicons ());
       
   292     val syms = Symbol_Pos.explode (text, pos);
       
   293   in
       
   294     (case Token.read lex Parse.attribs (syms, pos) of
       
   295       [raw_srcs] => check_attribs ctxt raw_srcs
       
   296     | _ => error ("Malformed attributes" ^ Position.here pos))
       
   297   end;
   277 
   298 
   278 
   299 
   279 (* transform fact expressions *)
   300 (* transform fact expressions *)
   280 
   301 
   281 fun transform_facts phi = map (fn ((a, atts), bs) =>
   302 fun transform_facts phi = map (fn ((a, atts), bs) =>