classBisonPreambleReader
final class BisonPreambleReader
Restricted visibility: declared "@visibility root". Code outside that scope must not name this declaration.
Reads the declarations section of a Bison grammar.
The section ends at the %% that opens the rules, and that separator is consumed here so the rules reader starts on a rule. A declaration whose arguments do not match its directive is skipped to its declaration boundary. Reading then continues with the next declaration in the same source section.
Methods§
public function __construct(BisonDirectiveReaderChain|null $directives = null)Parameters
$directives | BisonDirectiveReaderChain|null | Routes each directive to the reader that knows it |
Test cases 8
BisonPreambleReaderTest::testReadConsumesTheSectionSeparatorSoTheRulesFollowcoversBisonPreambleReaderTest::testReadDropsADeclarationWhoseArgumentsDoNotFitItsDirectivecoversBisonPreambleReaderTest::testReadKeepsADirectiveItHasNoModelForcoversBisonPreambleReaderTest::testReadKeepsTheLastPrologueWhenAFileHasSeveralcoversBisonPreambleReaderTest::testReadReportsNoPrologueWhenTheFileHasNonecoversBisonPreambleReaderTest::testReadStopsAtTheEndOfAFileWithoutASeparatorcoversBisonPreambleReaderTest::testReadTakesThePrologueAndTheDeclarationscoversBisonPreambleReaderTest::testReadUsesTheDirectiveChainItWasGivencovers
Calls 1
- static-call BisonDirectiveReaderChain::forBisonGrammar() line 32
public function read(BisonTokenStream $stream): BisonPreambleReads the prologue and declarations up to the rules section.
Parameters
$stream | BisonTokenStream | Stream positioned at the start of the file |
Returns
BisonPreamble What the file stated before its rulesTest cases 8
BisonPreambleReaderTest::testReadConsumesTheSectionSeparatorSoTheRulesFollowcovers and callsBisonPreambleReaderTest::testReadDropsADeclarationWhoseArgumentsDoNotFitItsDirectivecovers and callsBisonPreambleReaderTest::testReadKeepsADirectiveItHasNoModelForcovers and callsBisonPreambleReaderTest::testReadKeepsTheLastPrologueWhenAFileHasSeveralcovers and callsBisonPreambleReaderTest::testReadReportsNoPrologueWhenTheFileHasNonecovers and callsBisonPreambleReaderTest::testReadStopsAtTheEndOfAFileWithoutASeparatorcovers and callsBisonPreambleReaderTest::testReadTakesThePrologueAndTheDeclarationscovers and callsBisonPreambleReaderTest::testReadUsesTheDirectiveChainItWasGivencovers and calls
Called from 1
Calls 9
- method-call BisonTokenStream::peek() line 48
- class-const BisonLexeme::Eof() line 48
- class-const BisonLexeme::PercentPercent() line 51
- method-call BisonTokenStream::next() line 52
- class-const BisonLexeme::Prologue() line 56
- method-call BisonTokenStream::nextString() line 57
- class-const BisonLexeme::Directive() line 61
- method-call BisonDirectiveReaderChain::read() line 66
- new BisonPreamble line 72
Private surface 1§
Implementation details, listed for orientation only.
private BisonDirectiveReaderChain $directivesTest cases 9§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 8
BisonPreambleReaderTest::testReadConsumesTheSectionSeparatorSoTheRulesFollowcovers and callsBisonPreambleReaderTest::testReadDropsADeclarationWhoseArgumentsDoNotFitItsDirectivecovers and callsBisonPreambleReaderTest::testReadKeepsADirectiveItHasNoModelForcovers and callsBisonPreambleReaderTest::testReadKeepsTheLastPrologueWhenAFileHasSeveralcovers and callsBisonPreambleReaderTest::testReadReportsNoPrologueWhenTheFileHasNonecovers and callsBisonPreambleReaderTest::testReadStopsAtTheEndOfAFileWithoutASeparatorcovers and callsBisonPreambleReaderTest::testReadTakesThePrologueAndTheDeclarationscovers and callsBisonPreambleReaderTest::testReadUsesTheDirectiveChainItWasGivencovers and calls
Other tests reaching this symbol 1
BisonParserTestcalls