src/Pure/Isar/parse.ML
changeset 40290 47f572aff50a
parent 36959 f5417836dbea
child 40296 ac4d75f86d97
equal deleted inserted replaced
40289:b89dae026bae 40290:47f572aff50a
    24   val minus: string parser
    24   val minus: string parser
    25   val term_var: string parser
    25   val term_var: string parser
    26   val type_ident: string parser
    26   val type_ident: string parser
    27   val type_var: string parser
    27   val type_var: string parser
    28   val number: string parser
    28   val number: string parser
       
    29   val float_number: string parser
    29   val string: string parser
    30   val string: string parser
    30   val alt_string: string parser
    31   val alt_string: string parser
    31   val verbatim: string parser
    32   val verbatim: string parser
    32   val sync: string parser
    33   val sync: string parser
    33   val eof: string parser
    34   val eof: string parser
    44   val opt_keyword: string -> bool parser
    45   val opt_keyword: string -> bool parser
    45   val begin: string parser
    46   val begin: string parser
    46   val opt_begin: bool parser
    47   val opt_begin: bool parser
    47   val nat: int parser
    48   val nat: int parser
    48   val int: int parser
    49   val int: int parser
       
    50   val real: real parser
    49   val enum: string -> 'a parser -> 'a list parser
    51   val enum: string -> 'a parser -> 'a list parser
    50   val enum1: string -> 'a parser -> 'a list parser
    52   val enum1: string -> 'a parser -> 'a list parser
    51   val and_list: 'a parser -> 'a list parser
    53   val and_list: 'a parser -> 'a list parser
    52   val and_list1: 'a parser -> 'a list parser
    54   val and_list1: 'a parser -> 'a list parser
    53   val enum': string -> 'a context_parser -> 'a list context_parser
    55   val enum': string -> 'a context_parser -> 'a list context_parser
   166 val sym_ident = kind Token.SymIdent;
   168 val sym_ident = kind Token.SymIdent;
   167 val term_var = kind Token.Var;
   169 val term_var = kind Token.Var;
   168 val type_ident = kind Token.TypeIdent;
   170 val type_ident = kind Token.TypeIdent;
   169 val type_var = kind Token.TypeVar;
   171 val type_var = kind Token.TypeVar;
   170 val number = kind Token.Nat;
   172 val number = kind Token.Nat;
       
   173 val float_number = kind Token.Float;
   171 val string = kind Token.String;
   174 val string = kind Token.String;
   172 val alt_string = kind Token.AltString;
   175 val alt_string = kind Token.AltString;
   173 val verbatim = kind Token.Verbatim;
   176 val verbatim = kind Token.Verbatim;
   174 val sync = kind Token.Sync;
   177 val sync = kind Token.Sync;
   175 val eof = kind Token.EOF;
   178 val eof = kind Token.EOF;
   190 val underscore = sym_ident :-- (fn "_" => Scan.succeed () | _ => Scan.fail) >> #1;
   193 val underscore = sym_ident :-- (fn "_" => Scan.succeed () | _ => Scan.fail) >> #1;
   191 fun maybe scan = underscore >> K NONE || scan >> SOME;
   194 fun maybe scan = underscore >> K NONE || scan >> SOME;
   192 
   195 
   193 val nat = number >> (#1 o Library.read_int o Symbol.explode);
   196 val nat = number >> (#1 o Library.read_int o Symbol.explode);
   194 val int = Scan.optional (minus >> K ~1) 1 -- nat >> op *;
   197 val int = Scan.optional (minus >> K ~1) 1 -- nat >> op *;
       
   198 val real = float_number >> (the o Real.fromString);
   195 
   199 
   196 val tag_name = group "tag name" (short_ident || string);
   200 val tag_name = group "tag name" (short_ident || string);
   197 val tags = Scan.repeat ($$$ "%" |-- !!! tag_name);
   201 val tags = Scan.repeat ($$$ "%" |-- !!! tag_name);
   198 
   202 
   199 val opt_unit = Scan.optional ($$$ "(" -- $$$ ")" >> (K ())) ();
   203 val opt_unit = Scan.optional ($$$ "(" -- $$$ ")" >> (K ())) ();