public override object VisitUnaryExprNode(UnaryExprNode n) { Visit(n.expr); switch (n.op) { case "-": { n.Type = n.expr.Type.Equals(TypeSymbol.FLOAT_SYMBOL) ? TypeSymbol.FLOAT_SYMBOL : TypeSymbol.INT_SYMBOL; } break; case "!": { n.Type = TypeSymbol.BOOL_SYMBOL; } break; case "~": { n.Type = TypeSymbol.INT_SYMBOL; } break; } return(null); }
public override object VisitUnaryExprNode(UnaryExprNode n) { switch (n.op) { case "-": { semanticChecker.CheckAndReport(n.expr.Type.Match(TypeSymbol.INT_SYMBOL) || n.expr.Type.Match(TypeSymbol.FLOAT_SYMBOL), n.sourceLoc, "Type mismatch"); semanticChecker.CheckAndReport(n.Type.Match(TypeSymbol.INT_SYMBOL) || n.Type.Match(TypeSymbol.FLOAT_SYMBOL), n.sourceLoc, "Type mismatch"); semanticChecker.CheckAndReport(n.Type.Match(n.expr.Type), n.sourceLoc, "Type mismatch"); } break; case "~": { semanticChecker.CheckAndReport(n.expr.Type.Match(TypeSymbol.INT_SYMBOL), n.sourceLoc, "Type mismatch"); semanticChecker.CheckAndReport(n.Type.Match(TypeSymbol.INT_SYMBOL), n.sourceLoc, "Type mismatch"); } break; case "!": { semanticChecker.CheckAndReport(n.expr.Type.Match(TypeSymbol.BOOL_SYMBOL), n.sourceLoc, "Type mismatch"); semanticChecker.CheckAndReport(n.Type.Match(TypeSymbol.BOOL_SYMBOL), n.sourceLoc, "Type mismatch"); } break; } return(null); }
public override LData VisitUnaryExprNode(UnaryExprNode n) { LData val = LDataMaker.GetDataFor(n.Type); switch (n.op) { case "-": { val.SetValue(-Visit(n.expr).GetValue()); } break; case "!": { val.SetValue(!Visit(n.expr).GetValue()); } break; case "~": { val.SetValue(~Visit(n.expr).GetValue()); } break; } return(val); }
public object VisitUnaryExprNode(UnaryExprNode n) { WriteLine(n.kind + " - " + n.op + ":" + n.Type); Indent(); Visit(n.expr); Dedent(); return(null); }
public override MIPSRegister VisitUnaryExprNode(UnaryExprNode n) { var reg = Gen(n.expr); switch (n.op) { case "-": { emit.Emit("sub", reg, rm.ZERO, reg); } break; case "~": case "!": { emit.Emit("nor", reg, reg, reg); } break; } return(reg); }
public override LLVMRegister VisitUnaryExprNode(UnaryExprNode n) { throw new NotImplementedException(); }
public virtual T VisitUnaryExprNode(UnaryExprNode n) { T a = n.expr.Accept(this); return(default(T)); }