src/Pure/Isar/parse.ML
changeset 67215 03d0c958d65a
parent 67136 1368cfa92b7a
child 69349 7cef9e386ffe
equal deleted inserted replaced
67214:87038a574d09 67215:03d0c958d65a
    65   val name: string parser
    65   val name: string parser
    66   val binding: binding parser
    66   val binding: binding parser
    67   val embedded: string parser
    67   val embedded: string parser
    68   val text: string parser
    68   val text: string parser
    69   val path: string parser
    69   val path: string parser
       
    70   val session_name: string parser
    70   val theory_name: string parser
    71   val theory_name: string parser
    71   val liberal_name: string parser
    72   val liberal_name: string parser
    72   val parname: string parser
    73   val parname: string parser
    73   val parbinding: binding parser
    74   val parbinding: binding parser
    74   val class: string parser
    75   val class: string parser
   107   val attribs: Token.src list parser
   108   val attribs: Token.src list parser
   108   val opt_attribs: Token.src list parser
   109   val opt_attribs: Token.src list parser
   109   val thm_sel: Facts.interval list parser
   110   val thm_sel: Facts.interval list parser
   110   val thm: (Facts.ref * Token.src list) parser
   111   val thm: (Facts.ref * Token.src list) parser
   111   val thms1: (Facts.ref * Token.src list) list parser
   112   val thms1: (Facts.ref * Token.src list) list parser
       
   113   val option_name: string parser
       
   114   val option_value: string parser
       
   115   val options: ((string * Position.T) * (string * Position.T)) list parser
   112 end;
   116 end;
   113 
   117 
   114 structure Parse: PARSE =
   118 structure Parse: PARSE =
   115 struct
   119 struct
   116 
   120 
   270 
   274 
   271 val text = group (fn () => "text") (embedded || verbatim);
   275 val text = group (fn () => "text") (embedded || verbatim);
   272 
   276 
   273 val path = group (fn () => "file name/path specification") embedded;
   277 val path = group (fn () => "file name/path specification") embedded;
   274 
   278 
       
   279 val session_name = group (fn () => "session name") name;
   275 val theory_name = group (fn () => "theory name") name;
   280 val theory_name = group (fn () => "theory name") name;
   276 
   281 
   277 val liberal_name = keyword_with Token.ident_or_symbolic || name;
   282 val liberal_name = keyword_with Token.ident_or_symbolic || name;
   278 
   283 
   279 val parname = Scan.optional ($$$ "(" |-- name --| $$$ ")") "";
   284 val parname = Scan.optional ($$$ "(" |-- name --| $$$ ")") "";
   464   (literal_fact >> Facts.Fact ||
   469   (literal_fact >> Facts.Fact ||
   465     position name -- Scan.option thm_sel >> Facts.Named) -- opt_attribs;
   470     position name -- Scan.option thm_sel >> Facts.Named) -- opt_attribs;
   466 
   471 
   467 val thms1 = Scan.repeat1 thm;
   472 val thms1 = Scan.repeat1 thm;
   468 
   473 
       
   474 
       
   475 (* options *)
       
   476 
       
   477 val option_name = group (fn () => "option name") name;
       
   478 val option_value = group (fn () => "option value") ((token real || token name) >> Token.content_of);
       
   479 
       
   480 val option =
       
   481   position option_name :-- (fn (_, pos) =>
       
   482     Scan.optional ($$$ "=" |-- !!! (position option_value)) ("true", pos));
       
   483 
       
   484 val options = $$$ "[" |-- list1 option --| $$$ "]";
       
   485 
   469 end;
   486 end;