src/Pure/codegen.ML
changeset 18702 7dc7dcd63224
parent 18679 cf9f1584431a
child 18708 4b3dadb4fe33
equal deleted inserted replaced
18701:98e6a0a011f3 18702:7dc7dcd63224
    79   val eval_term: theory -> term -> term
    79   val eval_term: theory -> term -> term
    80   val parse_mixfix: (string -> 'a) -> string -> 'a mixfix list
    80   val parse_mixfix: (string -> 'a) -> string -> 'a mixfix list
    81   val quotes_of: 'a mixfix list -> 'a list
    81   val quotes_of: 'a mixfix list -> 'a list
    82   val num_args_of: 'a mixfix list -> int
    82   val num_args_of: 'a mixfix list -> int
    83   val replace_quotes: 'b list -> 'a mixfix list -> 'b mixfix list
    83   val replace_quotes: 'b list -> 'a mixfix list -> 'b mixfix list
    84   val fillin_mixfix: 'a mixfix list -> Pretty.T list -> ('a -> Pretty.T) -> Pretty.T
    84   val fillin_mixfix: ('a -> Pretty.T) -> 'a mixfix list -> 'a list -> Pretty.T
    85   val mk_deftab: theory -> deftab
    85   val mk_deftab: theory -> deftab
    86 
    86 
    87   val get_node: codegr -> string -> node
    87   val get_node: codegr -> string -> node
    88   val add_edge: string * string -> codegr -> codegr
    88   val add_edge: string * string -> codegr -> codegr
    89   val add_edge_acyclic: string * string -> codegr -> codegr
    89   val add_edge_acyclic: string * string -> codegr -> codegr
   656   | replace_quotes xs (Pretty p :: ms) =
   656   | replace_quotes xs (Pretty p :: ms) =
   657       Pretty p :: replace_quotes xs ms
   657       Pretty p :: replace_quotes xs ms
   658   | replace_quotes (x::xs) (Quote _ :: ms) =
   658   | replace_quotes (x::xs) (Quote _ :: ms) =
   659       Quote x :: replace_quotes xs ms;
   659       Quote x :: replace_quotes xs ms;
   660 
   660 
   661 fun fillin_mixfix ms args f =
   661 fun fillin_mixfix f ms args =
   662   let
   662   let
   663     fun fillin [] [] =
   663     fun fillin [] [] =
   664          []
   664          []
   665       | fillin (Arg :: ms) (a :: args) =
   665       | fillin (Arg :: ms) (a :: args) =
   666           a :: fillin ms args
   666           f a :: fillin ms args
   667       | fillin (Ignore :: ms) args =
   667       | fillin (Ignore :: ms) args =
   668           fillin ms args
   668           fillin ms args
   669       | fillin (Module :: ms) args =
   669       | fillin (Module :: ms) args =
   670           fillin ms args
   670           fillin ms args
   671       | fillin (Pretty p :: ms) args =
   671       | fillin (Pretty p :: ms) args =
   672           p :: fillin ms args
   672           p :: fillin ms args
   673       | fillin (Quote q :: ms) args =
   673       | fillin (Quote q :: ms) args =
   674           (f q) :: fillin ms args
   674           f q :: fillin ms args
   675   in Pretty.block (fillin ms args) end;
   675   in Pretty.block (fillin ms args) end;
   676 
   676 
   677 
   677 
   678 (**** default code generators ****)
   678 (**** default code generators ****)
   679 
   679