CodeNodeInterface.php 768 Bytes
<?php

namespace Language\Intermediate;

/**
* Interface CodeNodeInterface
*
* @package Language\Intermediate
*/
interface CodeNodeInterface
{
    public function getType(): string;

    public function setParent(CodeNodeInterface $node);
    
    public function getParent(): CodeNodeInterface;
    
    public function setRoot();
    
    public function isRoot(): bool;
    
    public function addChild(CodeNodeInterface $node = null);
    
    public function addChildren(array $nodes);
    
    public function getChildren(): array;

    public function setAttribute(string $key, $value);
    
    public function getAttribute(string $key);
    
    public function getAttributes();
    
    public function copy();
    
    public function getText(): string;
}