public AssignmentExpressionContext(ILSLExprNode exprLvalue, IToken operationToken,
                                    LSLParser.ExpressionContext exprRvalue, LSLParser.ExpressionContext originalContext)
 {
     LeftExpr        = exprLvalue;
     OperationToken  = operationToken;
     RightContext    = exprRvalue;
     OriginalContext = originalContext;
 }
 public BinaryExpressionContext(LSLParser.ExpressionContext exprLvalue, IToken operationToken,
                                LSLParser.ExpressionContext exprRvalue, LSLParser.ExpressionContext originalContext)
 {
     LeftContext     = exprLvalue;
     OperationToken  = operationToken;
     RightContext    = exprRvalue;
     OriginalContext = originalContext;
 }
        /// <exception cref="ArgumentNullException">
        ///     <paramref name="context" /> or
        ///     <paramref name="leftExpression" /> or
        ///     <paramref name="rightExpression" /> is <c>null</c>.
        /// </exception>
        internal LSLBinaryExpressionNode(
            LSLParser.ExpressionContext context,
            IToken operationToken,
            ILSLExprNode leftExpression,
            ILSLExprNode rightExpression,
            LSLType returns,
            string operationString)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (leftExpression == null)
            {
                throw new ArgumentNullException("leftExpression");
            }

            if (rightExpression == null)
            {
                throw new ArgumentNullException("rightExpression");
            }


            Type            = returns;
            LeftExpression  = leftExpression;
            RightExpression = rightExpression;

            leftExpression.Parent  = this;
            rightExpression.Parent = this;

            ParseAndSetOperation(operationString);

            SourceRange = new LSLSourceCodeRange(context);

            SourceRangeOperation = new LSLSourceCodeRange(operationToken);

            SourceRangesAvailable = true;
        }