src/Pure/Syntax/syn_ext.ML
changeset 12865 6b3484b8d572
parent 12785 27debaf2112d
child 14647 3f9d3d5cd0cd
equal deleted inserted replaced
12864:cecaa6e64fd5 12865:6b3484b8d572
    44       print_translation: (string * (bool -> typ -> term list -> term)) list,
    44       print_translation: (string * (bool -> typ -> term list -> term)) list,
    45       print_rules: (Ast.ast * Ast.ast) list,
    45       print_rules: (Ast.ast * Ast.ast) list,
    46       print_ast_translation: (string * (Ast.ast list -> Ast.ast)) list,
    46       print_ast_translation: (string * (Ast.ast list -> Ast.ast)) list,
    47       token_translation: (string * string * (string -> string * real)) list}
    47       token_translation: (string * string * (string -> string * real)) list}
    48   val mfix_args: string -> int
    48   val mfix_args: string -> int
       
    49   val escape_mfix: string -> string
    49   val mk_syn_ext: bool -> string list -> mfix list ->
    50   val mk_syn_ext: bool -> string list -> mfix list ->
    50     string list -> (string * (Ast.ast list -> Ast.ast)) list *
    51     string list -> (string * (Ast.ast list -> Ast.ast)) list *
    51     (string * (term list -> term)) list *
    52     (string * (term list -> term)) list *
    52     (string * (bool -> typ -> term list -> term)) list * (string * (Ast.ast list -> Ast.ast)) list
    53     (string * (bool -> typ -> term list -> term)) list * (string * (Ast.ast list -> Ast.ast)) list
    53     -> (string * string * (string -> string * real)) list
    54     -> (string * string * (string -> string * real)) list
   214     if length (filter is_index xsymbs) <= 1 then xsymbs
   215     if length (filter is_index xsymbs) <= 1 then xsymbs
   215     else error "Duplicate index arguments (\\<index>)";
   216     else error "Duplicate index arguments (\\<index>)";
   216 in
   217 in
   217   val read_mixfix = unique_index o read_symbs o Symbol.explode;
   218   val read_mixfix = unique_index o read_symbs o Symbol.explode;
   218   val mfix_args = length o filter is_argument o read_mixfix;
   219   val mfix_args = length o filter is_argument o read_mixfix;
       
   220   val escape_mfix = implode o map (fn s => if is_meta s then "'" ^ s else s) o Symbol.explode;
   219 end;
   221 end;
   220 
   222 
   221 
   223 
   222 (* mfix_to_xprod *)
   224 (* mfix_to_xprod *)
   223 
   225