以下是如何做到的,但我没有告诉你。(另外,解析模块是关于解析,而不是执行代码)
#require "compiler-libs" (* Assuming you're using utop, if compiling then this is the package you need *)
let eval code =
let as_buf = Lexing.from_string code in
let parsed = !Toploop.parse_toplevel_phrase as_buf in
ignore (Toploop.execute_phrase true Format.std_formatter parsed)
例子:
eval "let () = print_endline \"hello\";;"
-pkg compiler-libs
),但是得到了错误信息“引用未定义的全局变量'Toploop'”。 - lezed1OCaml是一种编译语言(不是解释语言)。因此,没有简单的方法来实现这个功能。当然,它没有像几乎所有解释语言那样支持这个功能的语言特性。你能做到的最好的事情就是将你的程序链接到OCaml toplevel(一个OCaml解释器)。