packages/sql-faker/src/Generation/Lexeme/LexemeInput.php

1<?php
2
3declare(strict_types=1);
4
5namespace SqlFaker\Generation\Lexeme;
6
7use SqlFaker\Generation\Token\TerminalOccurrence;
8use SqlFaker\Generation\Token\TerminalSequence;
9use SqlFaker\Generation\Value\ValueChoices;
10
11/**
12 * Per-generation input; dialect, version and registration tables belong to the generators.
13 */
14final class LexemeInput
15{
16    /**
17     * Binds the current occurrence, selected suffix and optional planned spelling.
18     */
19    public function __construct(
20        public readonly TerminalSequence $terminals,
21        public readonly int $index,
22        public readonly ResolvedOutput $right,
23        public readonly ?string $requested = null,
24        public readonly ?ValueChoices $values = null,
25    ) {
26    }
27
28    /**
29     * Returns the terminal occurrence for which candidates are being evaluated.
30     */
31    public function terminal(): TerminalOccurrence
32    {
33        return $this->terminals->terminals[$this->index];
34    }
35}
36