final class TerminalSequence

Ordered terminal occurrences; rewriting preserves the original derivation.

Properties§

public list<TerminalOccurrence> $terminals
public list<TerminalOccurrence> $original = []
public list<string> $rewrites = []
public list<ProductionOccurrence> $productions = []
public list<array{rule: string, offset: int, removed: list<TerminalOccurrence>, inserted: list<TerminalOccurrence>}> $operations = []

Methods§

public function __construct(
    public list<TerminalOccurrence> $terminals,
    public list<TerminalOccurrence> $original = [],
    public list<string> $rewrites = [],
    public list<ProductionOccurrence> $productions = [],
    public list<array{rule: string, offset: int, removed: list<TerminalOccurrence>, inserted: list<TerminalOccurrence>}> $operations = [],
)
public static function fromNames(list<string> $names): self

Parameters

$nameslist<string>

Returns

self
Test cases 159
Called from 3
Calls 2
public function nameAt(int $index): ?string

Reads the current terminal name, returning null outside the sequence.

Parameters

$indexint

Returns

?string
Test cases 2
Called from 59
public function names(): list<string>

Returns

list<string>
Test cases 6
Called from 10
Calls 1
public function replace(
    int $offset,
    int $length,
    list<TerminalOccurrence> $replacement,
    string $rule,
): self

Parameters

$offsetint
$lengthint
$replacementlist<TerminalOccurrence>
$rulestring

Returns

self
Test cases 11
Called from 13
Calls 3
public function range(int $production): array{int, int}|null

Locates the current output of a selected production, including nested children.

Parameters

$productionint

Returns

array{int, int}|null Inclusive start and exclusive end, or no emitted terminal
Test cases 4
Called from 126
Calls 1
public function occurrences(string $rule): list<int>

Lists original occurrences from the innermost/rightmost derivations first.

Parameters

$rulestring

Returns

list<int>
Test cases 2
Called from 80
Calls 1
  • function-call array_reverse line 97
public function child(int $parent, string $rule): ?ProductionOccurrence

Finds a direct child production, preserving empty children that have no terminal range.

Parameters

$parentint
$rulestring
Test cases 1
Called from 81
public function inserted(
    string $name,
    TerminalOccurrence $anchor,
    string $rewrite,
    int $offset = 0,
): TerminalOccurrence
public function insertedFor(
    string $name,
    int $production,
    string $rewrite,
    int $offset = 0,
): TerminalOccurrence

Adds output to a specific production, including originally empty productions.

Parameters

$namestring
$productionint
$rewritestring
$offsetint
Test cases 2
Called from 22
Calls 3

Test cases 327§

Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.

Dedicated tests 11
Other tests reaching this symbol 316

Relations§

Instantiated in 1
Static calls 3
Method calls 391
Type declarations 201