public override ASTNode VisitAddminus([NotNull] SuperCOOLParser.AddminusContext context) { if (context.ADD() != null) { var resultadd = new ASTAddNode() { }; ASTExpressionNode leftadd = (ASTExpressionNode)context.expression()[0].Accept(this); AssignSymbolTable(leftadd); ASTExpressionNode rightadd = (ASTExpressionNode)context.expression()[1].Accept(this); AssignSymbolTable(rightadd); resultadd.Left = leftadd; resultadd.Right = rightadd; resultadd.AddToken = context.ADD().Symbol; return(resultadd); } var result = new ASTMinusNode() { }; ASTExpressionNode left = (ASTExpressionNode)context.expression()[0].Accept(this); AssignSymbolTable(left); ASTExpressionNode right = (ASTExpressionNode)context.expression()[1].Accept(this); AssignSymbolTable(right); result.Left = left; result.Right = right; result.MinusToken = context.MINUS().Symbol; return(result); }
public override SemanticCheckResult VisitMinus(ASTMinusNode Minus) { SemanticCheckResult result = new SemanticCheckResult(); var left = Minus.Left.Accept(this); var right = Minus.Right.Accept(this); Minus.SemanticCheckResult.Ensure(left, left.Type == CompilationUnit.TypeEnvironment.Int, new Lazy <Error>(() => new Error("Left Expresion must have type Int", ErrorKind.TypeError, Minus.MinusToken.Line, Minus.MinusToken.Column))); Minus.SemanticCheckResult.Ensure(right, right.Type == CompilationUnit.TypeEnvironment.Int, new Lazy <Error>(() => new Error("Right Expresion must have type Int", ErrorKind.TypeError, Minus.MinusToken.Line, Minus.MinusToken.Column))); Minus.SemanticCheckResult.EnsureReturnType(CompilationUnit.TypeEnvironment.Int); return(Minus.SemanticCheckResult); }
public ASTCILNode VisitMinus(ASTMinusNode Minus) { return(new ASTCILMinusTwoVariablesNode((ASTCILExpressionNode)Minus.Left.Accept(this), (ASTCILExpressionNode)Minus.Right.Accept(this))); }
public virtual T VisitMinus(ASTMinusNode Minus) { Minus.Left.Accept(this); Minus.Right.Accept(this); return(default(T)); }