classTerminalOccurrence
final class TerminalOccurrence
A terminal occurrence, including the productions that introduced it.
Properties§
public string $namepublic int $idpublic list<int> $ancestors = []public list<string> $rules = []public ?string $rewrite = nullMethods§
public function __construct(
public string $name,
public int $id,
public list<int> $ancestors = [],
public list<string> $rules = [],
public ?string $rewrite = null,
)Parameters
$name | string | |
$id | int | |
$ancestors | list<int> | Derivation occurrence IDs, outermost first |
$rules | list<string> | Grammar rules, outermost first |
$rewrite | ?string |
public function within(string $rule): boolReports whether a grammar rule encloses this occurrence.
Parameters
$rule | string |
Returns
boolTest cases 1
TerminalOccurrenceTest::testWithinRecognizesOnlyDeclaredAncestorscovers and calls
Calls 1
- function-call
in_arrayline 30
public function ancestor(string $rule): ?intIdentifies the nearest enclosing occurrence of a grammar rule, including recursive scopes.
Parameters
$rule | string |
Returns
?intTest cases 1
Calls 1
- function-call
countline 38
public function replaced(string $name, string $rewrite): selfReturns a renamed occurrence while preserving its original identity and enclosing productions.
Parameters
$name | string | |
$rewrite | string |
Returns
selfTest cases 3
Calls 1
- new
selfline 51
Test cases 203§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 3
Other tests reaching this symbol 200
ChoiceLexemeGeneratorTestcallsFixedLexemeGeneratorTestcallsIntegerLexemeGeneratorTestcallsMatchingLexemeGeneratorTestcallsRegisteredLexemeGeneratorTestcallsSequenceLexemeGeneratorTestcallsValueLexemeGeneratorTestcallsVersionCaseTestcallsVersionedLexemeGeneratorTestcallsBytePlanCompilerTestcallsPlanBuilderTestcallsGrammarCoverageTestcallsLexicalObservationTest::testFeaturesKeepsValueTextOutOfFiniteDefinitionSetscallsLexicalObservationTest::testRewritesRetainsEachIntermediateReplacementAndOriginalIdentitycallsSequenceObservationTest::testLeavesGroupsCompleteIdentitiesUnderEveryAncestorcallsSequenceObservationTest::testPreservedCreditsUnmodifiedSiblingsAndTheirEmptyChildrencallsDerivationTestcallsDerivationTraceTestcallsTokenGeneratorTestcallsLexicalExceptionTestcallsLexemeBoundaryTest::testPreservesDirectionAcrossACompoundBoundarycallsLexemeCandidatesTestcallsLexemeGeneratorTestcallsLexemeInputTestcallsLexemeSequenceTest::testKeyDistinguishesOutputAndBoundarySemanticsButNotDefinitionIdscallsLexemeSequenceTest::testKeyTreatsAnExplicitUnrestrictedBoundaryAsEquivalentToAnOmittedOnecallsLexemeTest::testRetainsCompoundAndOccurrenceProvenancecallsOutputPartTest::testKeepsTheResolvedSeparatorAndItsRuleSourcescallsResolvedOutputTest::testPiecesPreservesChosenJoinsAndSpacesWithoutFormattingcallsSpacingRuleTestcallsBoundaryCompletionTestcallsCandidateResolverTest::testResolvePropagatesConditionsAcrossAnEmptyMarkerWithoutWritingSpacescallsCombinedSpacingRuleTestcallsReverseLexemeGeneratorTestcallsSqlGeneratorTestcallsRewriteRuleTestcallsTerminalMappingRuleTest::testRewriteChangesOnlyDirectChildrenOfTheNamedRulecallsTerminalSequenceTest::testFromNamesPreservesOccurrenceIdentityForRepeatedTerminalNamescallsTerminalSequenceTest::testRangeIncludesAllRetainedTerminalsAndReplacementPreservesEarlierRewritescallsTokenRewriterTest::testRewriteAppliesEachRuleOnceInOrderAndPreservesTheOriginalcallsGenerationContextTestcallsBoundedIntegerLexemeGeneratorTestcallsCharsetLexemeGeneratorTestcallsCharsetValueLexemeGeneratorTestcallsDefinitionFactoryTestcallsFactorLexemeGeneratorTest::testGenerateKeepsFactorPairsDistinctWithinTheirUsercallsKeywordLexemeGeneratorTest::testGenerateSeparatesFunctionUseFromIdentifierUsecallsLexicalDefinitionTestcallsPrecisionLexemeGeneratorTest::testGenerateEnforcesPrecisionAndScaleTogethercallsPrecisionLexemeGeneratorTest::testGenerateUsesOnlyTheScaleInTheSameOccurrencecallsReplicationTablePatternLexemeGeneratorTestcallsSizeNumberLexemeGeneratorTestcallsLexicalGrammarTestcallsOrderByRuleTest::testReorderPreservesAnOrderByThatAlreadyEndsItsOwnStatementcallsOrderByRuleTest::testRewriteCombinesRepeatedOrderByActionsIntoOneColumnListcallsOrderByRuleTest::testRewriteMovesTheCompleteOrderListAfterFollowingActionscallsAlterDatabaseRuleTestcallsAlterEventRuleTest::testRewriteAddsStatusOnlyWhenEveryAlterationWasOmittedcallsAlterEventRuleTest::testRewriteKeepsExistingAlterationsAndUnrelatedStatementscallsAutoIncrementRuleTest::testRewritePreservesAttributesWithoutAnOwningTypecallsAutoIncrementRuleTest::testRewriteRetainsOnlyTypeCompatibleAttributescallsFieldLengthRuleTest::testPrecisionRetainsBothNumericOccurrencesWithDependentDomainscallsFieldLengthRuleTest::testWidthRestrictsOnlyTheWidthOwnedByItsTypecallsConstraintEnforcementRuleTest::testRewriteRemovesOnlyMisplacedColumnEnforcementcallsConcatenationRuleTestcallsExpressionGroupingRuleTest::testRangesIncludesNestedAncestorsAndIgnoresEmptyOccurrencescallsExpressionGroupingRuleTest::testRewriteContinuesAfterAnAlreadyGroupedOperandcallsExpressionGroupingRuleTest::testRewriteRetainsNestedBoundaryProvenanceAndPreviouslyInsertedIdentitiescallsQuantifiedComparisonRuleTestcallsTableValueConstructorRuleTest::providerInsertScopescallsFlushExportRuleTestcallsGeneratedColumnRuleTestcallsInstanceActionRuleTestcallsIntegerContextRuleTestcallsIntoClauseRuleTest::testRewriteKeepsOneDestinationPerSelectStatementcallsIntoClauseRuleTest::testRewritePreservesDestinationsBeforeUnrelatedOperatorUsescallsIntoClauseRuleTest::testRewritePreservesTheFinalDestinationAcrossSetOperationscallsIntoClauseRuleTest::testRewriteRemovesOnlySubqueryDestinationscallsIntoClauseRuleTest::testRewriteRemovesViewDestinationsAndKeepsIndependentSelectOutputcallsLoadSourceCountRuleTestcallsHostNameRuleTestcallsSystemVariableRuleTest::testRewriteRejectsReservedComponentPrefixesOnlyInTheVariableNamecallsUniqueOptionRuleTest::testRewriteRetainsFirstValuesAndDoesNotShareStateBetweenScopescallsDefinitionRuleTest::providerKindscallsDefinitionRuleTest::testDeclaredKindUsesTheEnclosingTypecallsDefinitionRuleTest::testInferCountRemovesOnlyTheExplicitCountcallsDefinitionRuleTest::testRewritePreservesAStandaloneDefinitionWithoutAListcallsFieldListRuleTestcallsListValueRuleTest::testRewriteDisambiguatesListExpressionsAndPreservesRangeBoundscallsValueArityRuleTest::providerDeclarationscallsValueArityRuleTest::testDeclaredWidthReadsTheColumnsOfTheOwningClausecallsValueArityRuleTest::testRewriteCoordinatesAllValuesInTheSamePartitionListcallsValueArityRuleTest::testRewriteLeavesEmptyAndUnscopedFragmentsAlonecallsValueShapeTest::testJoinUsesNewPunctuationAndRetainsValueIdentitycallsValueShapeTest::testResizePreservesExpressionsWhileMatchingTheRequiredWidthcallsJoinGroupingRuleTest::testRewriteGroupsAnOuterJoinEvenWhenItsLeftChildIsAlreadyGroupedcallsJoinGroupingRuleTest::testRewriteKeepsNestedJoinConditionsWithTheirOwnOperandscallsQueryContextRuleTest::testRewriteRestrictsOnlyNestedSelectOptionscallsQueryContextRuleTest::testRewriteSeparatesCreateTableQuerySourcescallsWindowFrameRuleTestcallsStartRuleTestcallsTablePatternRuleTest::testRewriteMapsEveryWrappedFilterWithoutChangingUnrelatedStringscallsRequiredAliasRuleTestcallsRewriteDefinitionsTestcallsRoleGrantRuleTestcallsLanguageRuleTest::testRewriteSelectsTheLanguageFromTheRetainedBodycallsReturnRuleTest::testRewriteKeepsReturnsInFunctionsAndEvaluatesExpressionsInOtherRoutinescallsSetNamesRuleTestcallsSubqueryContextRuleTest::testRewriteChangesOnlyTheForbiddenSubqueryOperandcallsTransactionCompletionRuleTestcallsCloneAddressSpacingRuleTest::testApplyConstrainsOnlyItsSourceDefinedBoundarycallsFunctionSpacingRuleTest::testApplyConstrainsOnlyItsSourceDefinedBoundarycallsKeywordPhraseSpacingRuleTestcallsQualifiedNameSpacingRuleTest::testApplyConstrainsOnlyItsSourceDefinedBoundarycallsVariableSpacingRuleTest::testApplyConstrainsOnlyItsSourceDefinedBoundarycallsMySqlProviderTestcallsGenerationContextTestcallsDefinitionFactoryTestcallsHashBoundLexemeGeneratorTest::testGenerateMakesBothOrdersReachableAndRejectsRepeatedNamescallsKeywordLexemeGeneratorTestcallsLexicalDefinitionTestcallsLexicalGrammarTestcallsConstraintCapabilitiesRuleTest::testRewriteAttributesRespectTheirOwningConstraintcallsForeignKeyActionRuleTest::testRewriteOnlyUpdateColumnListsAreRemovedcallsIdentityOptionRuleTestcallsNumericContextRuleTest::testRewritePreservesNestedIntegersAndRestrictsDirectContextValuescallsConstraintAttributesRuleTest::providerAttributescallsConstraintAttributesRuleTest::testRewriteKeepsIndependentConstraintScopesSeparatecallsCopySourceRuleTestcallsExpressionGroupingRuleTest::testRangesIncludesNestedAncestorsAndIgnoresEmptyOccurrencescallsExpressionGroupingRuleTest::testRewriteContinuesAfterAnAlreadyGroupedOperandcallsExpressionGroupingRuleTest::testRewriteRetainsNestedBoundaryProvenanceAndPreviouslyInsertedIdentitiescallsFetchWithTiesRuleTest::testOrderedPreservesAnExistingSortClausecallsGeneratedColumnRuleTestcallsHashPartitionBoundRuleTestcallsLimitOffsetRuleTestcallsLookaheadRuleTest::testRewriteKeepsWithBeforeOptionNamesAsTheGrammarRequirescallsAliasRuleTestcallsAnyRelationNameRuleTest::providerNamescallsColumnNameRuleTest::providerChainscallsFunctionNameRuleTest::testRewriteKeepsFunctionQualificationAndColumnIndirectioncallsFunctionNameRuleTest::testRewriteLimitsFunctionNamesToCatalogSchemaAndFunctioncallsFunctionNameRuleTest::testRewriteReplacesAStarBetweenUnaffectedExpressionsAndKeepsTrailingOutputcallsIndirectionStarRuleTest::testRewriteKeepsNamedComponentsAndEmptyOccurrencescallsIndirectionStarRuleTest::testRewriteRemovesOnlyNonFinalStarsWithinTheirOwnChaincallsParserNameRuleTest::testRewriteAllowsSpecialRoleReferencesOutsideLiteralRoleIdcallsParserNameRuleTest::testRewriteRestrictsOnlyTheDirectParserNameChildcallsRelationNameRuleTest::testRewriteLimitsRelationNamesToCatalogSchemaAndTablecallsRelationNameRuleTest::testRewriteRemovesRelationStarsButPreservesExpressionIndirectioncallsOperatorArgumentsRuleTestcallsUniqueOptionRuleTest::testRewriteRetainsFirstValuesAndDoesNotShareStateBetweenScopescallsOverlapsArgumentsRuleTest::providerRowscallsOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentitiescallsOverlapsArgumentsRuleTest::testRewriteIgnoresOverlapsWithoutAnExpressionScopecallsPublicationObjectRuleTestcallsIntoClauseRuleTest::testRewritePreservesOnlyTopLevelSelectDestinationscallsIntoClauseRuleTest::testRewriteRetainsOnlyTheLeftmostSetOperandDestinationcallsParserOptionsRuleTest::testRewriteRemovesOnlyOptionsForbiddenByTheirDirectOwnercallsSchemaElementsRuleTest::testRewriteConditionalSchemasKeepElementsOrAnEmptyConditionalcallsSelectOptionsRuleTest::testRewriteScopesOptionsToTheSameSelectNodecallsRewriteDefinitionsTest::testCreateKeepsOneCollationPerSourceColumnQualifierListcallsRewriteDefinitionsTest::testUniqueOptionsKeepsOneDefaultNamespacePerXmlTablecallsAggregateArgumentRuleTest::testRewriteKeepsOrdinaryFunctionModesAndNormalizesAggregateInputModescallsJsonOptionsRuleTest::testBehaviorsPreservesEmptyAndUnrelatedChildProductionscallsJsonOptionsRuleTest::testReturningFormatRemovesOnlyJsonValueOutputFormatAndRetainsNestedJsonInputFormatcallsJsonOptionsRuleTest::testRewritePreservesAllowedBehaviorsAndRepairsForbiddenAlternativescallsJsonOptionsRuleTest::testRewriteScopesQuotesToTheDirectWrappercallsJsonTablePathRuleTest::testRewriteOnlyTheDirectPathIsReplacedcallsRangeFunctionOrdinalityRuleTest::testRewriteOnlyRemovesOrdinalityBesideItsOwnTypedColumnListcallsSubstringRuleTest::providerArgumentscallsSubstringRuleTest::testRewriteKeepsSubstringSeparatorsOutsideCompoundArgumentscallsTableFunctionRuleTestcallsTypeModifierRuleTestcallsWithinGroupRuleTest::testRewriteRetainsWithinGroupAndNestedFunctionscallsTimeZoneIntervalRuleTestcallsWindowFrameRuleTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsGenerationContextTestcallsDefinitionFactoryTestcallsJoinLexemeGeneratorTest::testGenerateKeepsOnlyModifiersCompatibleWithTheSelectedSuffixcallsJoinLexemeGeneratorTest::testHasConditionReadsOnlyTheSameSourceListcallsLexicalDefinitionTestcallsWindowNameLexemeGeneratorTestcallsLexicalGrammarTestcallsCompoundSelectRuleTestcallsExpressionGroupingRuleTest::testRangesIncludesNestedAncestorsAndIgnoresEmptyOccurrencescallsExpressionGroupingRuleTest::testRewriteContinuesAfterAnAlreadyGroupedOperandcallsExpressionGroupingRuleTest::testRewriteRetainsNestedBoundaryProvenanceAndPreviouslyInsertedIdentitiescallsFunctionArgumentRuleTestcallsGeneratedColumnRuleTestcallsIdentifierListRuleTestcallsJoinRuleTestcallsRewriteDefinitionsTest::testCreateMapsOnlyTheGeneratedColumnStorageNamecallsStrictTableRuleTestcallsTableOptionRuleTest::testRewriteLeavesUnrelatedAndEmptyScopesUntouchedcallsUpsertSourceRuleTestcallsWindowFrameRuleTestcallsWithoutRowidRuleTestcallsSqliteProviderTestcalls
Relations§
Instantiated in 14
- new SqlFaker\Generation\Derivation\DerivationTrace::__construct() packages/sql-faker/src/Generation/Derivation/DerivationTrace.php:34
- new SqlFaker\Generation\Derivation\DerivationTrace::expand() packages/sql-faker/src/Generation/Derivation/DerivationTrace.php:47
- new SqlFaker\Generation\Token\TerminalSequence::fromNames() packages/sql-faker/src/Generation/Token/TerminalSequence.php:35
- new SqlFaker\Generation\Token\TerminalSequence::inserted() packages/sql-faker/src/Generation/Token/TerminalSequence.php:122
- new SqlFaker\Generation\Token\TerminalSequence::insertedFor() packages/sql-faker/src/Generation/Token/TerminalSequence.php:142
- new SqlFaker\MySql\Generation\Rewrite\Alter\OrderByRule::reorder() packages/sql-faker/src/MySql/Generation/Rewrite/Alter/OrderByRule.php:74
- new SqlFaker\MySql\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/Expression/ExpressionGroupingRule.php:50
- new SqlFaker\MySql\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/Expression/ExpressionGroupingRule.php:51
- new SqlFaker\MySql\Generation\Rewrite\Partition\ValueShape::token() packages/sql-faker/src/MySql/Generation/Rewrite/Partition/ValueShape.php:109
- new SqlFaker\MySql\Generation\Rewrite\Query\JoinGroupingRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/Query/JoinGroupingRule.php:32
- new SqlFaker\PostgreSql\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/Expression/ExpressionGroupingRule.php:50
- new SqlFaker\PostgreSql\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/Expression/ExpressionGroupingRule.php:51
- new SqlFaker\Sqlite\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/Sqlite/Generation/Rewrite/Expression/ExpressionGroupingRule.php:50
- new SqlFaker\Sqlite\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/Sqlite/Generation/Rewrite/Expression/ExpressionGroupingRule.php:51
Type declarations 11
- type SqlFaker\Generation\Coverage\LexicalObservation::rewrites() packages/sql-faker/src/Generation/Coverage/LexicalObservation.php:83
- type SqlFaker\Generation\Lexeme\Lexeme packages/sql-faker/src/Generation/Lexeme/Lexeme.php:20
- type SqlFaker\Generation\Lexeme\LexemeInput packages/sql-faker/src/Generation/Lexeme/LexemeInput.php:31
- type SqlFaker\Generation\Token\TerminalSequence::names() packages/sql-faker/src/Generation/Token/TerminalSequence.php:53
- type SqlFaker\Generation\Token\TerminalSequence packages/sql-faker/src/Generation/Token/TerminalSequence.php:116
- type SqlFaker\Generation\Token\TerminalSequence packages/sql-faker/src/Generation/Token/TerminalSequence.php:128
- type SqlFaker\MySql\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/Expression/ExpressionGroupingRule.php:33
- type SqlFaker\MySql\Generation\Rewrite\Expression\TableValueConstructorRule packages/sql-faker/src/MySql/Generation/Rewrite/Expression/TableValueConstructorRule.php:56
- type SqlFaker\MySql\Generation\Rewrite\Partition\ValueShape packages/sql-faker/src/MySql/Generation/Rewrite/Partition/ValueShape.php:107
- type SqlFaker\PostgreSql\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/Expression/ExpressionGroupingRule.php:33
- type SqlFaker\Sqlite\Generation\Rewrite\Expression\ExpressionGroupingRule::rewrite() packages/sql-faker/src/Sqlite/Generation/Rewrite/Expression/ExpressionGroupingRule.php:33