src/Pure/Isar/attrib.ML
changeset 58047 9f3826352b52
parent 58045 ab2483fad861
child 58865 ce8d13995516
equal deleted inserted replaced
58046:2873ca3f4b33 58047:9f3826352b52
    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
    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
    52   val read_attribs: Proof.context -> Symbol_Pos.source -> Token.src list
    53   val transform_facts: morphism ->
    53   val transform_facts: morphism ->
    54     (Attrib.binding * (thm list * Token.src list) list) list ->
    54     (Attrib.binding * (thm list * Token.src list) list) list ->
    55     (Attrib.binding * (thm list * Token.src list) list) list
    55     (Attrib.binding * (thm list * Token.src list) list) list
    56   val partial_evaluation: Proof.context ->
    56   val partial_evaluation: Proof.context ->
    57     (binding * (thm list * Token.src list) list) list ->
    57     (binding * (thm list * Token.src list) list) list ->
   284   let
   284   let
   285     val srcs = map (check_src ctxt) raw_srcs;
   285     val srcs = map (check_src ctxt) raw_srcs;
   286     val _ = map (attribute ctxt) srcs;
   286     val _ = map (attribute ctxt) srcs;
   287   in srcs end;
   287   in srcs end;
   288 
   288 
   289 fun read_attribs ctxt (text, pos) =
   289 fun read_attribs ctxt source =
   290   let
   290   let
       
   291     val syms = Symbol_Pos.source_explode source;
   291     val lex = #1 (Keyword.get_lexicons ());
   292     val lex = #1 (Keyword.get_lexicons ());
   292     val syms = Symbol_Pos.explode (text, pos);
       
   293   in
   293   in
   294     (case Token.read lex Parse.attribs (syms, pos) of
   294     (case Token.read lex Parse.attribs (syms, #pos source) of
   295       [raw_srcs] => check_attribs ctxt raw_srcs
   295       [raw_srcs] => check_attribs ctxt raw_srcs
   296     | _ => error ("Malformed attributes" ^ Position.here pos))
   296     | _ => error ("Malformed attributes" ^ Position.here (#pos source)))
   297   end;
   297   end;
   298 
   298 
   299 
   299 
   300 (* transform fact expressions *)
   300 (* transform fact expressions *)
   301 
   301