public override IAstNode VisitAexprSum(MicroCParser.AexprSumContext context) { IAExpr left = Visit(context.left) as IAExpr; IAExpr right = Visit(context.right) as IAExpr; ABinOperator op = context.op.Text switch { "+" => ABinOperator.Plus, "-" => ABinOperator.Minus, _ => throw new ArgumentException("Invalid ABinOp Sum Operator") }; return(new ABinOp(left, right, op)); }
public override IAstNode VisitAexprProduct(MicroCParser.AexprProductContext context) { IAExpr left = Visit(context.left) as IAExpr; IAExpr right = Visit(context.right) as IAExpr; ABinOperator op = context.op.Text switch { "*" => ABinOperator.Mult, "/" => ABinOperator.Div, _ => throw new ArgumentException("Invalid ABinOp Product Operator") }; return(new ABinOp(left, right, op)); }
public ABinOp(IAExpr left, IAExpr right, ABinOperator op) { Left = left; Right = right; Op = op; }