src/Pure/Isar/outer_parse.ML
changeset 18618 387d170e4aa9
parent 18136 51385f358b53
child 18669 cd6d6baf0411
equal deleted inserted replaced
18617:8928e8722301 18618:387d170e4aa9
    58   val opt_mixfix: token list -> Syntax.mixfix * token list
    58   val opt_mixfix: token list -> Syntax.mixfix * token list
    59   val opt_infix': token list -> Syntax.mixfix * token list
    59   val opt_infix': token list -> Syntax.mixfix * token list
    60   val opt_mixfix': token list -> Syntax.mixfix * token list
    60   val opt_mixfix': token list -> Syntax.mixfix * token list
    61   val mixfix': token list -> Syntax.mixfix * token list
    61   val mixfix': token list -> Syntax.mixfix * token list
    62   val const: token list -> (bstring * string * Syntax.mixfix) * token list
    62   val const: token list -> (bstring * string * Syntax.mixfix) * token list
       
    63   val param: token list -> (bstring * string option * Syntax.mixfix) * token list
    63   val term: token list -> string * token list
    64   val term: token list -> string * token list
    64   val prop: token list -> string * token list
    65   val prop: token list -> string * token list
    65   val propp: token list -> (string * (string list * string list)) * token list
    66   val propp: token list -> (string * (string list * string list)) * token list
    66   val termp: token list -> (string * string list) * token list
    67   val termp: token list -> (string * string list) * token list
    67   val arguments: token list -> Args.T list * token list
    68   val arguments: token list -> Args.T list * token list
    68   val attribs: token list -> Attrib.src list * token list
    69   val attribs: token list -> Attrib.src list * token list
    69   val opt_attribs: token list -> Attrib.src list * token list
    70   val opt_attribs: token list -> Attrib.src list * token list
    70   val thm_name: string -> token list -> (bstring * Attrib.src list) * token list
    71   val thm_name: string -> token list -> (bstring * Attrib.src list) * token list
    71   val opt_thm_name: string -> token list -> (bstring * Attrib.src list) * token list
    72   val opt_thm_name: string -> token list -> (bstring * Attrib.src list) * token list
       
    73   val spec: token list -> ((bstring * Attrib.src list) * string list) * token list
       
    74   val named_spec: token list -> ((bstring * Attrib.src list) * string list) * token list
    72   val spec_name: token list -> ((bstring * string) * Attrib.src list) * token list
    75   val spec_name: token list -> ((bstring * string) * Attrib.src list) * token list
    73   val spec_opt_name: token list -> ((bstring * string) * Attrib.src list) * token list
    76   val spec_opt_name: token list -> ((bstring * string) * Attrib.src list) * token list
    74   val xthm: token list -> (thmref * Attrib.src list) * token list
    77   val xthm: token list -> (thmref * Attrib.src list) * token list
    75   val xthms1: token list -> (thmref * Attrib.src list) list * token list
    78   val xthms1: token list -> (thmref * Attrib.src list) list * token list
    76   val name_facts: token list ->
    79   val name_facts: token list ->
   243 val mixfix' = fix_decl !!! (mixfix || binder || infxl || infxr || infx);
   246 val mixfix' = fix_decl !!! (mixfix || binder || infxl || infxr || infx);
   244 
   247 
   245 
   248 
   246 (* consts *)
   249 (* consts *)
   247 
   250 
   248 val const =
   251 val const = name -- ($$$ "::" |-- !!! typ) -- opt_mixfix >> triple1;
   249   name -- ($$$ "::" |-- !!! (typ -- opt_mixfix)) >> triple2;
   252 val param = name -- Scan.option ($$$ "::" |-- !!! typ) -- opt_mixfix >> triple1;
   250 
   253 
   251 
   254 
   252 (* terms *)
   255 (* terms *)
   253 
   256 
   254 val trm = short_ident || long_ident || sym_ident || term_var || number || string;
   257 val trm = short_ident || long_ident || sym_ident || term_var || number || string;
   303 val opt_attribs = Scan.optional attribs [];
   306 val opt_attribs = Scan.optional attribs [];
   304 
   307 
   305 fun thm_name s = name -- opt_attribs --| $$$ s;
   308 fun thm_name s = name -- opt_attribs --| $$$ s;
   306 fun opt_thm_name s =
   309 fun opt_thm_name s =
   307   Scan.optional ((name -- opt_attribs || (attribs >> pair "")) --| $$$ s) ("", []);
   310   Scan.optional ((name -- opt_attribs || (attribs >> pair "")) --| $$$ s) ("", []);
       
   311 
       
   312 val spec = opt_thm_name ":" -- Scan.repeat1 prop;
       
   313 val named_spec = thm_name ":" -- Scan.repeat1 prop;
   308 
   314 
   309 val spec_name = thm_name ":" -- prop >> (fn ((x, y), z) => ((x, z), y));
   315 val spec_name = thm_name ":" -- prop >> (fn ((x, y), z) => ((x, z), y));
   310 val spec_opt_name = opt_thm_name ":" -- prop >> (fn ((x, y), z) => ((x, z), y));
   316 val spec_opt_name = opt_thm_name ":" -- prop >> (fn ((x, y), z) => ((x, z), y));
   311 
   317 
   312 val thm_sel = $$$ "(" |-- list1
   318 val thm_sel = $$$ "(" |-- list1