public ArrayIndexNode(ExpressionNode expressionNode, NodeLocation location) : base(location)
 {
     ExpressionNode            = expressionNode;
     ExpressionNode.ParentNode = this;
 }
 public ParameterArrayDeclarationNode(NodeLocation location, NameNode typeNameNode, NameNode nameNode,
                                      ExpressionNode arraySizeNode) : base(location, typeNameNode, nameNode)
 {
     ArraySizeNode            = arraySizeNode;
     ArraySizeNode.ParentNode = this;
 }
 public WhileStatementNode(NodeLocation location, ExpressionNode conditionNode,
                           List <StatementNode> bodyNodes) : base(location, conditionNode, bodyNodes)
 {
 }
 public VarDeclarationNode(NodeLocation location, NameNode typeNameNode, NameNode nameNode, ExpressionNode rightSideNode) : base(location, typeNameNode,
                                                                                                                                 nameNode)
 {
     if (rightSideNode != null)
     {
         rightSideNode.ParentNode = this;
     }
     RightSideNode = rightSideNode;
 }
 public ConstDefinitionNode(NodeLocation location, NameNode typeNameNode, NameNode nameNode,
                            ExpressionNode rightSideNode) : base(location, typeNameNode, nameNode, rightSideNode)
 {
 }
        public BinaryExpressionNode(NodeLocation location, BinaryOperator @operator, NodeLocation operatorLocation, ExpressionNode leftSideNode,
                                    ExpressionNode rightSideNode) : base(location)
        {
            leftSideNode.ParentNode  = this;
            rightSideNode.ParentNode = this;

            Operator         = @operator;
            LeftSideNode     = leftSideNode;
            RightSideNode    = rightSideNode;
            OperatorLocation = operatorLocation;
        }
        public UnaryExpressionNode(NodeLocation location, UnaryOperator @operator, NodeLocation operatorLocation, ExpressionNode expressionNode) : base(
                location)
        {
            expressionNode.ParentNode = this;

            Operator         = @operator;
            ExpressionNode   = expressionNode;
            OperatorLocation = operatorLocation;

            DoGenerateOperatorInstruction = true;
        }
        public AssignmentNode(NodeLocation location, NodeLocation operatorLocation, ReferenceNode leftSideNode, ExpressionNode rightSideNode) :
            base(location)
        {
            leftSideNode.ParentNode  = this;
            rightSideNode.ParentNode = this;

            OperatorLocation = operatorLocation;
            LeftSideNode     = leftSideNode;
            RightSideNode    = rightSideNode;
        }