src/Pure/Isar/outer_parse.ML
changeset 30511 5c628a39b7cb
parent 30339 3fc32dd7a647
child 30573 49899f26fbd1
equal deleted inserted replaced
30510:4120fc59dd85 30511:5c628a39b7cb
     6 
     6 
     7 signature OUTER_PARSE =
     7 signature OUTER_PARSE =
     8 sig
     8 sig
     9   type token = OuterLex.token
     9   type token = OuterLex.token
    10   type 'a parser = token list -> 'a * token list
    10   type 'a parser = token list -> 'a * token list
       
    11   type 'a context_parser = Context.generic * token list -> 'a * (Context.generic * token list)
    11   val group: string -> (token list -> 'a) -> token list -> 'a
    12   val group: string -> (token list -> 'a) -> token list -> 'a
    12   val !!! : (token list -> 'a) -> token list -> 'a
    13   val !!! : (token list -> 'a) -> token list -> 'a
    13   val !!!! : (token list -> 'a) -> token list -> 'a
    14   val !!!! : (token list -> 'a) -> token list -> 'a
    14   val triple1: ('a * 'b) * 'c -> 'a * 'b * 'c
    15   val triple1: ('a * 'b) * 'c -> 'a * 'b * 'c
    15   val triple2: 'a * ('b * 'c) -> 'a * 'b * 'c
    16   val triple2: 'a * ('b * 'c) -> 'a * 'b * 'c
    48   val int: int parser
    49   val int: int parser
    49   val enum: string -> 'a parser -> 'a list parser
    50   val enum: string -> 'a parser -> 'a list parser
    50   val enum1: string -> 'a parser -> 'a list parser
    51   val enum1: string -> 'a parser -> 'a list parser
    51   val and_list: 'a parser -> 'a list parser
    52   val and_list: 'a parser -> 'a list parser
    52   val and_list1: 'a parser -> 'a list parser
    53   val and_list1: 'a parser -> 'a list parser
    53   val enum': string -> ('a * token list -> 'b * ('a * token list)) ->
    54   val enum': string -> 'a context_parser -> 'a list context_parser
    54     'a * token list -> 'b list * ('a * token list)
    55   val enum1': string -> 'a context_parser -> 'a list context_parser
    55   val enum1': string -> ('a * token list -> 'b * ('a * token list)) ->
    56   val and_list': 'a context_parser -> 'a list context_parser
    56     'a * token list -> 'b list * ('a * token list)
    57   val and_list1': 'a context_parser -> 'a list context_parser
    57   val and_list': ('a * token list -> 'b * ('a * token list)) ->
       
    58     'a * token list -> 'b list * ('a * token list)
       
    59   val and_list1': ('a * token list -> 'b * ('a * token list)) ->
       
    60     'a * token list -> 'b list * ('a * token list)
       
    61   val list: 'a parser -> 'a list parser
    58   val list: 'a parser -> 'a list parser
    62   val list1: 'a parser -> 'a list parser
    59   val list1: 'a parser -> 'a list parser
    63   val name: bstring parser
    60   val name: bstring parser
    64   val binding: binding parser
    61   val binding: binding parser
    65   val xname: xstring parser
    62   val xname: xstring parser
   104 
   101 
   105 structure T = OuterLex;
   102 structure T = OuterLex;
   106 type token = T.token;
   103 type token = T.token;
   107 
   104 
   108 type 'a parser = token list -> 'a * token list;
   105 type 'a parser = token list -> 'a * token list;
       
   106 type 'a context_parser = Context.generic * token list -> 'a * (Context.generic * token list);
   109 
   107 
   110 
   108 
   111 (** error handling **)
   109 (** error handling **)
   112 
   110 
   113 (* group atomic parsers (no cuts!) *)
   111 (* group atomic parsers (no cuts!) *)
   337 
   335 
   338 val target = ($$$ "(" -- $$$ "in") |-- !!! (xname --| $$$ ")");
   336 val target = ($$$ "(" -- $$$ "in") |-- !!! (xname --| $$$ ")");
   339 val opt_target = Scan.option target;
   337 val opt_target = Scan.option target;
   340 
   338 
   341 end;
   339 end;
       
   340 
       
   341 type 'a parser = 'a OuterParse.parser;
       
   342 type 'a context_parser = 'a OuterParse.context_parser;
       
   343