私はglobalVars
とglobalFns
を持つレコードを返す必要があり、次のパーサを持っていますが、それが表示されません。 ast.ml
のようにプログラムを定義しOcamlyaccは、一見、完全なレコードを返さない
%start program
%type <Ast.program> program
%%
program:
decls EOF { $1 }
decls:
/* nothing */ { { globalVars = []; globalFns = []; } }
| decls varDecl { { $1 with globalVars = $1::$2.globalVars } }
| decls fnDecl { { $1 with globalFns = $1::$2.globalFns } }
:
type program = {
globalVars : bind list;
globalFns : func_decl list;
}
エラー私が受けてるです:
let translate program =
let global_vars =
let global_var m (t, n) =
let init = L.const_int (ltype_of_typ t) 0
in StringMap.add n (L.define_global n init the_module) m in
List.fold_left global_var StringMap.empty program.globalVars in
私は単純に把握することはできません。Error: Unbound record field globalVars
私のような何かをしようとすると、なぜprogram.globalVars
はここに結合していないです。誰かが正しい方向に私を指すことができれば、それは非常に高く評価されると思い。
OMGが、私はあなたを愛して@octachron – Nathan