0

コードの次のセクションで、すべてのリソースを使用して調査しているにもかかわらず、エラーが発生する理由がわからないというエラーが表示されます。これが 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 に置き換えています

これらについての助けをいただければ幸いです。

4

2 に答える 2

0

したがって、最初のものについては、コンストラクターが見つからないと思いますDeallocComm。(それはどこから宣言されていますか?)

2番目の場合、意味がありません。私はあなたが何をしているのか分かりません。store'andは関数store''内ですか、loop'それとも関数外ですか? 前者の場合、なぜ内部にないのletですか? 後者の場合、本体はどこにありますかloop'; store''そして、関数の外にある最後の式でどのように使用できますか? また、 という値もありませんloopfunlet、およびその他のものがたくさん欠けているようです。

于 2010-11-19T19:48:59.887 に答える