function push( ParseNode $Node, $recursion = true ){
		if( $Node->pidx ){
			trigger_error("Node $Node->idx already has parent $Node->pidx", E_USER_WARNING );
		}
		// Resolve recursion on the fly if required
		if( $this->t === $Node->t && $Node->length ){
			// allow node's own setting to override parameter
			if( isset($Node->recursion) ){
				$recursion = $Node->recursion;
			}
			if( ! $recursion ){
				$this->push_thru( $Node );
				$Node->destroy();
				return $this->length;
			}
		}
		// else set node as child of self
		$Node->pidx = $this->idx;
		$Node->depth = $this->depth + 1;
		$this->p = 0;
		return $this->length = array_push( $this->children, $Node );	
	}
function push( ParseNode $Node, $recursion = true ){
		if( $Node->pidx ){
			trigger_error("Node $Node->idx already has parent $Node->pidx", E_USER_WARNING );
		}
		// Resolve recursion on the fly if required
		if( $this->t === $Node->t && $Node->length ){
			// allow node's own setting to override parameter
			if( isset($Node->recursion) ){
				$recursion = $Node->recursion;
			}
			if( ! $recursion ){
				$this->push_thru( $Node );
				$Node->destroy();
				return $this->length;
			}
		}
		// else set node as child of self
		$Node->pidx = $this->idx;
		$Node->depth = $this->depth + 1;
		$this->p = 0;
		return $this->length = array_push( $this->children, $Node );	
	}
function push ( ParseNode $ Node , $ recursion = true ) { if ( $ Node -> pidx ) { trigger_error ( "Node $Node->idx already has parent $Node->pidx" , E_USER_WARNING ) ; } // Resolve recursion on the fly if required if ( $ this -> t === $ Node -> t && $ Node -> length ) { // allow node's own setting to override parameter if ( isset ( $ Node -> recursion ) ) { $ recursion = $ Node -> recursion ; } if ( ! $ recursion ) { $ this -> push_thru ( $ Node ) ; $ Node -> destroy ( ) ; return $ this -> length ; } } // else set node as child of self $ Node -> pidx = $ this -> idx ; $ Node -> depth = $ this -> depth + 1 ; $ this -> p = 0 ; return $ this -> length = array_push ( $ this -> children , $ Node ) ; }
Append a child node immediately onto self
@param ParseNode
@param bool whether to keep recursive nesting, or remove on the fly, defaults to true
@return int new length of this node
Append a child node immediately onto self