【发布时间】:2021-12-30 19:40:10
【问题描述】:
我正在查看为 C 的极其精简版本编写的编译器。我是 ocaml 的新手,对这种结构特别困惑
let check (globals, functions) =
(* A bunch of stuff abstracted out *)
let check_function ...
.... (*A b bunch of stuff abstracted out*)
in (globals, List.map check_function functions)
其中 globals 是 (var_type, var_name) 的列表,functions 是函数记录。我没有发布整个文件(它很长),我的问题只是关于最外面的 let 语句。
我一直只看到简单的 let 语句,你可能有类似的东西
let name = expr1 in expr2
那么当你有的时候是什么意思
let name(param1, param2) = expr1 in (param1, expr1 param2)
和我这里的有点相似?
【问题讨论】:
-
您误解了代码,因为您已经删除了大部分代码。
in很可能附加到check_function,而不是check。所以它只是一个函数,取一个元组并返回一个元组。你有没有考虑过查看一些你正在尝试阅读的语言的文档?即使只是像this这样的备忘单?
标签: compiler-construction ocaml ocamlbuild ocamlyacc