我试图在OCaml中创建一个生成DSL的代码,但是我找不到代码生成的代码。我只想看看如何在OCaml中创建代码值。在Ocaml中生成C代码
例如,如果我有一类这样的:
let equation =
Add of int * int
| Sub of int * int
| Mul of int * int
| Div of int * int;;
,我想这样的功能:
let write_code = function
| Add (x, y) -> // INSERT CODE "x + y" here
等...怎么会这样看?
我看过这个例子http://okmij.org/ftp/meta-programming/tutorial/power.ml但是字符。 <>。当我尝试编译时导致语法错误。
生成的代码不需要编译或执行,而是保存到.c文件供以后使用。
我只想看看这个简单例子的基本结构,所以我可以将它应用于一个更复杂的问题。
如果需要的结束的字符串生成C代码并保存,只需生成字符串,并将它们保存到C文件。 '| Add(x,y) - > Printf.sprintf“(%s +%s)”(write_code x)(write_code y)'。 – antron
'。 <' and '>。用于MetaOCaml。你需要使用它来代替香草OCaml。但我想这不是你真正想要的。 – camlspotter