/*additive-expression-p: | additive-operators multiplicative-expression additive-expression-p | EPSILON */ private ExpressionNode additive_expression_p(ExpressionNode leftExpression) { printIfDebug("additive_expression_p"); if (pass(additiveOperatorOptions)) { Token additiveOperatior = token; consumeToken(); var multExpression = multiplicative_expression(); ExpressionNode resultExpression = null; if (additiveOperatior.type == TokenType.OP_SUM) { resultExpression = new SumExpressionNode(leftExpression, multExpression, additiveOperatior); } else { resultExpression = new SubExpressionNode(leftExpression, multExpression, additiveOperatior); } return(additive_expression_p(resultExpression)); } else { return(leftExpression); } }
public static UnaryPostOperatorNode Create(UnaryPostOperatorType type, SubExpressionNode operand, Token token, int tokenIndex) { switch (type) { case UnaryPostOperatorType.DoublePlus: return new DoublePlusUnaryPostOperatorNode(operand, token, tokenIndex); case UnaryPostOperatorType.DoubleMinus: return new DoubleMinusUnaryPostOperatorNode(operand, token, tokenIndex); default: throw new InternalCompilerException("Unknown UnaryPostOperatorType."); } }
public static BinaryOperatorNode Create(BinaryOperatorType type, SubExpressionNode left, SubExpressionNode right, Token token, int tokenIndex) { switch (type) { case BinaryOperatorType.Ampersand: return new AmpersandBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.AmpersandEqual: return new AmpersandEqualBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.Caret: return new CaretBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.CaretEqual: return new CaretEqualBinaryOperaratorNode(left, right, token, tokenIndex); case BinaryOperatorType.Divide: return new DivideBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.DivideEqual: return new DivideEqualBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.Minus: return new MinusBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.MinusEqual: return new MinusEqualBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.Mod: return new ModBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.ModEqual: return new ModEqualBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.Pipe: return new PipeBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.PipeEqual: return new PipeEqualBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.Plus: return new PlusBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.PlusEqual: return new PlusEqualBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.ShiftLeft: return new ShiftLeftBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.ShiftLeftEqual: return new ShiftLeftEqualBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.ShiftRight: return new ShiftRightBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.ShiftRightEqual: return new ShiftRightEqualBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.Star: return new StarBinaryOperatorNode(left, right, token, tokenIndex); case BinaryOperatorType.StarEqual: return new StarEqualBinaryOperatorNode(left, right, token, tokenIndex); default: throw new InternalCompilerException("Unknown BinaryOperatorType."); } }
public static UnaryPreOperatorNode Create(UnaryPreOperatorType type, SubExpressionNode operand, Token token, int tokenIndex) { switch (type) { case UnaryPreOperatorType.Ampersand: return new AmpersandUnaryPreOperatorNode(operand, token, tokenIndex); case UnaryPreOperatorType.DoubleMinus: return new DoubleMinusUnaryPreOperatorNode(operand, token, tokenIndex); case UnaryPreOperatorType.DoublePlus: return new DoublePlusUnaryPreOperatorNode(operand, token, tokenIndex); case UnaryPreOperatorType.Exclamation: return new ExclamationUnaryPreOperatorNode(operand, token, tokenIndex); case UnaryPreOperatorType.Minus: return new MinusUnaryPreOperatorNode(operand, token, tokenIndex); case UnaryPreOperatorType.Star: return new StarUnaryPreOperatorNode(operand, token, tokenIndex); case UnaryPreOperatorType.Tilde: return new TildeUnaryPreOperatorNode(operand, token, tokenIndex); default: throw new InternalCompilerException("Unknown UnaryPreOperatorType."); } }
protected BitwiseBinaryOperatorNode(SubExpressionNode left, SubExpressionNode right, Token token, int tokenIndex) : base(left, right, token, tokenIndex) { }
public PipeBinaryOperatorNode(SubExpressionNode left, SubExpressionNode right, Token token, int tokenIndex) : base(left, right, token, tokenIndex) { }
public DoubleMinusUnaryPostOperatorNode(SubExpressionNode operand, Token token, int tokenIndex) : base(UnaryPostOperatorType.DoubleMinus, operand, token, tokenIndex) { }
protected UnaryPostOperatorNode(UnaryPostOperatorType operatorType, SubExpressionNode operand, Token token, int tokenIndex) : base(token, tokenIndex) { OperatorType = operatorType; Operand = operand; }
public PointerSupportedArithmeticBinaryOperatorNode(SubExpressionNode left, SubExpressionNode right, Token token, int tokenIndex) : base(left, right, token, tokenIndex) { }
protected BinaryOperatorNode(SubExpressionNode left, SubExpressionNode right, Token token, int tokenIndex) : base(token, tokenIndex) { Left = left; Right = right; }
public AmpersandUnaryPreOperatorNode(SubExpressionNode operand, Token token, int tokenIndex) : base(UnaryPreOperatorType.Ampersand, operand, token, tokenIndex) { }
public TildeUnaryPreOperatorNode(SubExpressionNode operand, Token token, int tokenIndex) : base(UnaryPreOperatorType.Tilde, operand, token, tokenIndex) { }
public MinusUnaryPreOperatorNode(SubExpressionNode operand, Token token, int tokenIndex) : base(UnaryPreOperatorType.Minus, operand, token, tokenIndex) { }
public ExclamationUnaryPreOperatorNode(SubExpressionNode operand, Token token, int tokenIndex) : base(UnaryPreOperatorType.Exclamation, operand, token, tokenIndex) { }
public StarUnaryPreOperatorNode(SubExpressionNode operand, Token token, int tokenIndex) : base(UnaryPreOperatorType.Star, operand, token, tokenIndex) { }