src/Pure/Isar/args.ML
changeset 56500 90f17a04567d
parent 56499 7e0178c84994
child 57942 e5bec882fdd0
equal deleted inserted replaced
56499:7e0178c84994 56500:90f17a04567d
    31   val bracks: 'a parser -> 'a parser
    31   val bracks: 'a parser -> 'a parser
    32   val mode: string -> bool parser
    32   val mode: string -> bool parser
    33   val maybe: 'a parser -> 'a option parser
    33   val maybe: 'a parser -> 'a option parser
    34   val cartouche_inner_syntax: string parser
    34   val cartouche_inner_syntax: string parser
    35   val cartouche_source_position: Symbol_Pos.source parser
    35   val cartouche_source_position: Symbol_Pos.source parser
       
    36   val text_source_position: Symbol_Pos.source parser
       
    37   val text: string parser
    36   val name_inner_syntax: string parser
    38   val name_inner_syntax: string parser
    37   val name_source_position: Symbol_Pos.source parser
    39   val name_source_position: Symbol_Pos.source parser
    38   val name: string parser
    40   val name: string parser
    39   val binding: binding parser
    41   val binding: binding parser
    40   val alt_name: string parser
    42   val alt_name: string parser
   149 
   151 
   150 val ident = Parse.token
   152 val ident = Parse.token
   151   (Parse.short_ident || Parse.long_ident || Parse.sym_ident || Parse.term_var ||
   153   (Parse.short_ident || Parse.long_ident || Parse.sym_ident || Parse.term_var ||
   152     Parse.type_ident || Parse.type_var || Parse.number);
   154     Parse.type_ident || Parse.type_var || Parse.number);
   153 
   155 
   154 val string = Parse.token (Parse.string || Parse.verbatim);
   156 val string = Parse.token Parse.string;
   155 val alt_string = Parse.token (Parse.alt_string || Parse.cartouche);
   157 val alt_string = Parse.token (Parse.alt_string || Parse.cartouche);
   156 val symbolic = Parse.token (Parse.keyword_with Token.ident_or_symbolic);
   158 val symbolic = Parse.token (Parse.keyword_with Token.ident_or_symbolic);
   157 
   159 
   158 fun $$$ x =
   160 fun $$$ x =
   159   (ident || Parse.token Parse.keyword) :|-- (fn tok =>
   161   (ident || Parse.token Parse.keyword) :|-- (fn tok =>
   161       if x = y
   163       if x = y
   162       then (Token.assign (SOME (Token.Literal (false, Markup.quasi_keyword))) tok; Scan.succeed x)
   164       then (Token.assign (SOME (Token.Literal (false, Markup.quasi_keyword))) tok; Scan.succeed x)
   163       else Scan.fail
   165       else Scan.fail
   164     end);
   166     end);
   165 
   167 
   166 
       
   167 val named = ident || string;
   168 val named = ident || string;
   168 
   169 
   169 val add = $$$ "add";
   170 val add = $$$ "add";
   170 val del = $$$ "del";
   171 val del = $$$ "del";
   171 val colon = $$$ ":";
   172 val colon = $$$ ":";
   180 fun maybe scan = $$$ "_" >> K NONE || scan >> SOME;
   181 fun maybe scan = $$$ "_" >> K NONE || scan >> SOME;
   181 
   182 
   182 val cartouche = Parse.token Parse.cartouche;
   183 val cartouche = Parse.token Parse.cartouche;
   183 val cartouche_inner_syntax = cartouche >> Token.inner_syntax_of;
   184 val cartouche_inner_syntax = cartouche >> Token.inner_syntax_of;
   184 val cartouche_source_position = cartouche >> Token.source_position_of;
   185 val cartouche_source_position = cartouche >> Token.source_position_of;
       
   186 
       
   187 val text_token = named || Parse.token (Parse.verbatim || Parse.cartouche);
       
   188 val text_source_position = text_token >> Token.source_position_of;
       
   189 val text = text_token >> Token.content_of;
   185 
   190 
   186 val name_inner_syntax = named >> Token.inner_syntax_of;
   191 val name_inner_syntax = named >> Token.inner_syntax_of;
   187 val name_source_position = named >> Token.source_position_of;
   192 val name_source_position = named >> Token.source_position_of;
   188 
   193 
   189 val name = named >> Token.content_of;
   194 val name = named >> Token.content_of;