src/Pure/Isar/parse.ML
changeset 58028 e4250d370657
parent 58011 bc6bced136e5
child 58854 b979c781c2db
equal deleted inserted replaced
58027:dc58ab4d9f44 58028:e4250d370657
   105   val termp: (string * string list) parser
   105   val termp: (string * string list) parser
   106   val target: (xstring * Position.T) parser
   106   val target: (xstring * Position.T) parser
   107   val opt_target: (xstring * Position.T) option parser
   107   val opt_target: (xstring * Position.T) option parser
   108   val args: Token.T list parser
   108   val args: Token.T list parser
   109   val args1: (string -> bool) -> Token.T list parser
   109   val args1: (string -> bool) -> Token.T list parser
       
   110   val attribs: Token.src list parser
       
   111   val opt_attribs: Token.src list parser
       
   112   val thm_sel: Facts.interval list parser
       
   113   val xthm: (Facts.ref * Token.src list) parser
       
   114   val xthms1: (Facts.ref * Token.src list) list parser
   110 end;
   115 end;
   111 
   116 
   112 structure Parse: PARSE =
   117 structure Parse: PARSE =
   113 struct
   118 struct
   114 
   119 
   431 val args = #1 (arguments Token.ident_or_symbolic) false;
   436 val args = #1 (arguments Token.ident_or_symbolic) false;
   432 fun args1 is_symid = #2 (arguments is_symid) false;
   437 fun args1 is_symid = #2 (arguments is_symid) false;
   433 
   438 
   434 end;
   439 end;
   435 
   440 
       
   441 
       
   442 (* attributes *)
       
   443 
       
   444 val attrib = position liberal_name -- !!! args >> uncurry Token.src;
       
   445 val attribs = $$$ "[" |-- list attrib --| $$$ "]";
       
   446 val opt_attribs = Scan.optional attribs [];
       
   447 
       
   448 
       
   449 (* theorem references *)
       
   450 
       
   451 val thm_sel = $$$ "(" |-- list1
       
   452  (nat --| minus -- nat >> Facts.FromTo ||
       
   453   nat --| minus >> Facts.From ||
       
   454   nat >> Facts.Single) --| $$$ ")";
       
   455 
       
   456 val xthm =
       
   457   $$$ "[" |-- attribs --| $$$ "]" >> pair (Facts.named "") ||
       
   458   (literal_fact >> Facts.Fact ||
       
   459     position xname -- Scan.option thm_sel >> Facts.Named) -- opt_attribs;
       
   460 
       
   461 val xthms1 = Scan.repeat1 xthm;
       
   462 
   436 end;
   463 end;
   437 
   464