32 lines
1.6 KiB
OCaml
32 lines
1.6 KiB
OCaml
(**************************************************************************)
|
|
(* *)
|
|
(* OCaml *)
|
|
(* *)
|
|
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
(* *)
|
|
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
(* en Automatique. *)
|
|
(* *)
|
|
(* All rights reserved. This file is distributed under the terms of *)
|
|
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
(* special exception on linking described in the file LICENSE. *)
|
|
(* *)
|
|
(**************************************************************************)
|
|
|
|
(* Translation of string matching from closed lambda to C-- *)
|
|
|
|
module type I = sig
|
|
val string_block_length : Cmm.expression -> Cmm.expression
|
|
val transl_switch :
|
|
Cmm.expression -> int -> int ->
|
|
(int * Cmm.expression) list -> Cmm.expression ->
|
|
Cmm.expression
|
|
end
|
|
|
|
module Make(I:I) : sig
|
|
(* Compile stringswitch (arg,cases,d)
|
|
Note: cases should not contain string duplicates *)
|
|
val compile : Cmm.expression (* arg *) -> Cmm.expression option (* d *) ->
|
|
(string * Cmm.expression) list (* cases *)-> Cmm.expression
|
|
end
|