private void CGUnaryExp(FuncInfo funcInfo, UnaryExpNode node, int a) { int b = funcInfo.AllocReg(); CGExp(funcInfo, node.Exp, b, 1); funcInfo.EmitUnaryOp(a, b, node.OpType); funcInfo.FreeReg(); }
public override void Generate(ILProcessor il, SemanticEnvironment environment) { switch (UnaryOperator.Operator.Type) { case OperatorType.MULT: UnaryExpNode.Generate(il, environment); if (UnaryExpNode.GetType(ref environment) is PointerType { PointerToType : StructType structType }) { il.Emit(OpCodes.Ldobj, structType.TypeReference); }
public override string ToString(string indent, bool last) { return (indent + NodePrefix(last) + $"{UnaryOperator.Operator.Type}" + "\r\n" + UnaryExpNode.ToString(indent + ChildrenPrefix(last), true)); }