public override string GenCode() { Child?.GenCode(); string text = ""; switch (OperatorType) { case OpType.Minus: text = "neg"; break; case OpType.BitNot: text = "not"; break; case OpType.LogNot: // Create fake node with const 1 // Add it to stack and call bit xor with old stack top var helperNode = new ConstantNode(-1, ValType.Bool, true); helperNode.GenCode(); text = "xor"; break; case OpType.IntCast: text = "conv.i4"; break; case OpType.DoubleCast: text = "conv.r8"; break; default: Compiler.AddError(new UndefinedRuntimeError(LineNo)); break; } Compiler.EmitCode(text); if (GenPop) { Compiler.EmitCode("pop", true); } return(text); }