src/Pure/Isar/parse.ML
changeset 58861 5ff61774df11
parent 58854 b979c781c2db
child 58908 58bedbc18915
equal deleted inserted replaced
58860:fee7cfa69c50 58861:5ff61774df11
    37   val keyword_with: (string -> bool) -> string parser
    37   val keyword_with: (string -> bool) -> string parser
    38   val keyword_markup: bool * Markup.T -> string -> string parser
    38   val keyword_markup: bool * Markup.T -> string -> string parser
    39   val keyword_improper: string -> string parser
    39   val keyword_improper: string -> string parser
    40   val $$$ : string -> string parser
    40   val $$$ : string -> string parser
    41   val reserved: string -> string parser
    41   val reserved: string -> string parser
    42   val semicolon: string parser
       
    43   val underscore: string parser
    42   val underscore: string parser
    44   val maybe: 'a parser -> 'a option parser
    43   val maybe: 'a parser -> 'a option parser
    45   val tag_name: string parser
    44   val tag_name: string parser
    46   val tags: string list parser
    45   val tags: string list parser
    47   val opt_unit: unit parser
    46   val opt_unit: unit parser
   214 
   213 
   215 fun reserved x =
   214 fun reserved x =
   216   group (fn () => "reserved identifier " ^ quote x)
   215   group (fn () => "reserved identifier " ^ quote x)
   217     (RESET_VALUE (Scan.one (Token.ident_with (fn y => x = y)) >> Token.content_of));
   216     (RESET_VALUE (Scan.one (Token.ident_with (fn y => x = y)) >> Token.content_of));
   218 
   217 
   219 val semicolon = $$$ ";";
       
   220 
       
   221 val minus = sym_ident :-- (fn "-" => Scan.succeed () | _ => Scan.fail) >> #1;
   218 val minus = sym_ident :-- (fn "-" => Scan.succeed () | _ => Scan.fail) >> #1;
   222 val underscore = sym_ident :-- (fn "_" => Scan.succeed () | _ => Scan.fail) >> #1;
   219 val underscore = sym_ident :-- (fn "_" => Scan.succeed () | _ => Scan.fail) >> #1;
   223 fun maybe scan = underscore >> K NONE || scan >> SOME;
   220 fun maybe scan = underscore >> K NONE || scan >> SOME;
   224 
   221 
   225 val nat = number >> (#1 o Library.read_int o Symbol.explode);
   222 val nat = number >> (#1 o Library.read_int o Symbol.explode);