classGrammarParser
final class GrammarParser
Restricted visibility: declared "@visibility root". Code outside that scope must not name this declaration.
Reads a whole grammar file, following the input rule of parse-gram.y.
Methods§
public function __construct(
private DeclarationParser $declarations = new \BisonParser\Syntax\DeclarationParser(),
private RuleParser $rules = new \BisonParser\Syntax\RuleParser(),
)Parameters
$declarations | DeclarationParser | Reads declarations |
$rules | RuleParser | Reads rules |
Calls 2
public function parse(TokenStream $tokens): GrammarFileReads the file.
Parameters
$tokens | TokenStream | Tokens of the whole file |
Returns
GrammarFile The fileThrows
SyntaxException When the file is not written as declarations, `%%`, rules and an optional epilogueTest cases 8
GrammarParserTest::testParsecallsGrammarParserTest::testParseKeepsLineDirectivesAmongTheRulescallsGrammarParserTest::testParseRejectsADeclarationAmongTheRulesWithoutASemicoloncallsGrammarParserTest::testParseRejectsARuleBeforeTheSectioncallsGrammarParserTest::testParseRejectsARulesSectionHoldingOnlyDeclarationscallsGrammarParserTest::testParseRejectsARulesSectionWithoutRulescallsGrammarParserTest::testParseRejectsAStrayTokenAmongTheRulescallsGrammarParserTest::testParseWithoutAnEpiloguecalls
Called from 1
Calls 18
- method-call TokenStream::is() line 43
- class-const TokenKind::Section() line 43
- method-call TokenStream::accept() line 44
- class-const TokenKind::Semicolon() line 44
- method-call DeclarationParser::starts() line 47
- method-call TokenStream::peek() line 47
- static-call SyntaxException::unexpected() line 48
- method-call DeclarationParser::parse() line 50
- method-call TokenStream::next() line 52
- class-const TokenKind::End() line 54
- class-const TokenKind::IdentifierColon() line 58
- method-call RuleParser::parse() line 59
- class-const TokenKind::Line() line 60
- method-call TokenStream::expect() line 64
- function-call
array_filterline 69 - class-const TokenKind::Epilogue() line 74
- new Epilogue line 75
- new GrammarFile line 79
Private surface 2§
Implementation details, listed for orientation only.
private DeclarationParser $declarations = new \BisonParser\Syntax\DeclarationParser()private RuleParser $rules = new \BisonParser\Syntax\RuleParser()Test cases 11§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 8
GrammarParserTest::testParsecallsGrammarParserTest::testParseKeepsLineDirectivesAmongTheRulescallsGrammarParserTest::testParseRejectsADeclarationAmongTheRulesWithoutASemicoloncallsGrammarParserTest::testParseRejectsARuleBeforeTheSectioncallsGrammarParserTest::testParseRejectsARulesSectionHoldingOnlyDeclarationscallsGrammarParserTest::testParseRejectsARulesSectionWithoutRulescallsGrammarParserTest::testParseRejectsAStrayTokenAmongTheRulescallsGrammarParserTest::testParseWithoutAnEpiloguecalls
Other tests reaching this symbol 3
BisonGrammarCompilerTestcallsBisonGrammarReaderTestcallsParserTestcalls