在以下代码部分中,我收到错误,尽管我使用了所有资源来研究它们,但我不确定为什么会得到它们。这是 SMLNJ 编码。
compComm (DeallocComm(var, exp), env, ip, codes, contIP)=
let val loc = lookupEnv var env;
val codes1 = emitByte(LDC, ip, codes);
val codes2 = emitByte(Arg loc, ip + 1, codes1);
val (ip', codes3) = compExp(exp, env, ip+2, codes2);
val codes4 = emitByte(ADEALLOC, ip', codes3);
in(ip'+1, codes4, nil, contIP)
end;
给
hw4.sml:339.5-433.6 错误:非构造函数应用于模式中的参数:DeallocComm hw4.sml:427.26-427.29 错误:未绑定的变量或构造函数:var
hw4.sml:430.31-430.34 错误:未绑定的变量或构造函数:exp
和
ADEALLOC => let val (n, stack') = popStack stack
val (loc, stack'') = popStack stack';
fun loop'(n, loc, store) =
val store' = updateTable (loc, defaultIntValue, store);
in loop'(n-1, loc+1, store) =
val store'' = loop'(n, loc, store) end;
in loop(ip+1, store'', stack'') end;
给
hw4.sml:612.14 错误:语法错误:插入 EQUALOP
hw4.sml:615.8-615.11 错误:语法错误:将 VAL 替换为 END
任何有关这些的帮助将不胜感激。