public static NeuOperation Execute(
        this NeuInterpreter interpreter,
        NeuBinaryOperator op,
        NeuOperation lhsResult,
        NeuOperation rhsResult)
    {
        switch (op.OperatorType)
        {
        case NeuBinaryOperatorType.Multiply:
            return(interpreter.Multiply(lhsResult, rhsResult));

        ///

        case NeuBinaryOperatorType.Divide:
            return(interpreter.Divide(lhsResult, rhsResult));

        ///

        case NeuBinaryOperatorType.Add:
            return(interpreter.Add(lhsResult, rhsResult));

        ///

        case NeuBinaryOperatorType.Subtract:
            return(interpreter.Subtract(lhsResult, rhsResult));

        ///

        default:
            throw new Exception();
        }
    }
示例#2
0
 public static NeuBinaryExpression ParseBinaryExpression(
     this NeuParser parser,
     ISourceLocation start,
     Node lhs,
     NeuBinaryOperator op,
     Node rhs)
 {
     return(new NeuBinaryExpression(
                children: new Node[] { lhs, op, rhs },
                start: start,
                end: parser.Tokenizer.GetLocation()));
 }
    public static int GetPrecedence(
        this NeuBinaryOperator binaryOp)
    {
        switch (binaryOp.OperatorType)
        {
        case NeuBinaryOperatorType.Multiply:
        case NeuBinaryOperatorType.Divide:
            return(15);

        case NeuBinaryOperatorType.Add:
        case NeuBinaryOperatorType.Subtract:
            return(14);

        default:
            return(0);
        }
    }