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