classSyntaxException
final class SyntaxException
extends RuntimeException
Public API: explicitly declared with
@visibility public.The grammar file is not written the way Bison would accept it.
$exception = \BisonParser\SyntaxException::unexpected("a rule or ';'", "'|'", new \BisonParser\Ast\Location(3, 1));
$exception->getMessage() // => "Expected a rule or ';' but found '|' at 3:1"
(string) $exception->location // => "3:1"Properties§
public Location $locationMethods§
public function __construct(string $message, public Location $location)public static function unexpected(string $expected, string $found, Location $location): selfDescribes something other than what the grammar language allows at a position.
Parameters
$expected | string | What was expected |
$found | string | What was met instead |
$location | Location | Where it was met |
Returns
self The exceptionTest cases 1
Called from 14
- static-call BisonParser\Scanner\Scanner::bracketed() packages/bison-parser/src/Scanner/Scanner.php:219
- static-call BisonParser\Syntax\DeclarationParser::parse() packages/bison-parser/src/Syntax/DeclarationParser.php:78
- static-call BisonParser\Syntax\DeclarationParser::directive() packages/bison-parser/src/Syntax/DeclarationParser.php:134
- static-call BisonParser\Syntax\GrammarParser::parse() packages/bison-parser/src/Syntax/GrammarParser.php:48
- static-call BisonParser\Syntax\GrammarParser::parse() packages/bison-parser/src/Syntax/GrammarParser.php:66
- static-call BisonParser\Syntax\GrammarParser::parse() packages/bison-parser/src/Syntax/GrammarParser.php:70
- static-call BisonParser\Syntax\RuleParser::symbolToken() packages/bison-parser/src/Syntax/RuleParser.php:215
- static-call BisonParser\Syntax\SymbolListParser::entries() packages/bison-parser/src/Syntax/SymbolListParser.php:107
- static-call BisonParser\Syntax\SymbolListParser::entries() packages/bison-parser/src/Syntax/SymbolListParser.php:115
- static-call BisonParser\Syntax\SymbolListParser::entries() packages/bison-parser/src/Syntax/SymbolListParser.php:120
- static-call BisonParser\Syntax\SymbolListParser::symbols() packages/bison-parser/src/Syntax/SymbolListParser.php:171
- static-call BisonParser\Syntax\SymbolListParser::targets() packages/bison-parser/src/Syntax/SymbolListParser.php:203
- static-call BisonParser\Syntax\SymbolListParser::symbol() packages/bison-parser/src/Syntax/SymbolListParser.php:253
- static-call BisonParser\Syntax\TokenStream::expect() packages/bison-parser/src/Syntax/TokenStream.php:104
Calls 1
- new
selfline 42
public static function unterminated(string $construct, string $closer, Location $location): selfDescribes a construct that never closes.
Parameters
$construct | string | What was opened |
$closer | string | What should have closed it |
$location | Location | Where it was opened |
Returns
self The exceptionTest cases 1
Called from 8
- static-call BisonParser\Scanner\CodeReader::braced() packages/bison-parser/src/Scanner/CodeReader.php:54
- static-call BisonParser\Scanner\CodeReader::prologue() packages/bison-parser/src/Scanner/CodeReader.php:79
- static-call BisonParser\Scanner\CodeReader::unit() packages/bison-parser/src/Scanner/CodeReader.php:98
- static-call BisonParser\Scanner\CodeReader::unit() packages/bison-parser/src/Scanner/CodeReader.php:112
- static-call BisonParser\Scanner\Scanner::skipTrivia() packages/bison-parser/src/Scanner/Scanner.php:88
- static-call BisonParser\Scanner\Scanner::literal() packages/bison-parser/src/Scanner/Scanner.php:268
- static-call BisonParser\Scanner\Scanner::literal() packages/bison-parser/src/Scanner/Scanner.php:284
- static-call BisonParser\Scanner\Scanner::tag() packages/bison-parser/src/Scanner/Scanner.php:335
Calls 1
- new
selfline 56
public static function invalid(string $what, Location $location): selfDescribes text that is not part of the grammar language.
Parameters
$what | string | The problem, as Bison would word it |
$location | Location | Where it is |
Returns
self The exceptionTest cases 1
Called from 10
- static-call BisonParser\Scanner\Escapes::escape() packages/bison-parser/src/Scanner/Escapes.php:78
- static-call BisonParser\Scanner\Escapes::byte() packages/bison-parser/src/Scanner/Escapes.php:95
- static-call BisonParser\Scanner\Scanner::next() packages/bison-parser/src/Scanner/Scanner.php:130
- static-call BisonParser\Scanner\Scanner::percent() packages/bison-parser/src/Scanner/Scanner.php:162
- static-call BisonParser\Scanner\Scanner::bracketed() packages/bison-parser/src/Scanner/Scanner.php:215
- static-call BisonParser\Scanner\Scanner::integer() packages/bison-parser/src/Scanner/Scanner.php:240
- static-call BisonParser\Scanner\Scanner::integer() packages/bison-parser/src/Scanner/Scanner.php:245
- static-call BisonParser\Scanner\Scanner::literal() packages/bison-parser/src/Scanner/Scanner.php:272
- static-call BisonParser\Scanner\Scanner::literal() packages/bison-parser/src/Scanner/Scanner.php:275
- static-call BisonParser\Syntax\RuleParser::checkEmpty() packages/bison-parser/src/Syntax/RuleParser.php:110
Test cases 71§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 4
Other tests reaching this symbol 67
GrammarContextcallsBisonGrammarCompilerTest::testCompileRejectsAFileWithoutRulescallsBisonGrammarReaderTest::testReadRejectsWhatBisonRejectscallsParserTest::testParseRejectsAGrammarBisonRejectscallsCodeReaderTest::testBracedNeverClosesOnADigraphcallsCodeReaderTest::testBracedRejectsAnUnterminatedBlockcallsCodeReaderTest::testPrologueRejectsAnUnterminatedBlockcallsCodeReaderTest::testUnitRejectsAnUnterminatedCharacterLiteralcallsCodeReaderTest::testUnitRejectsAnUnterminatedCommentcallsCodeReaderTest::testUnitRejectsAnUnterminatedStringcallsEscapesTest::testBytecallsEscapesTest::testByteRejectsZerocallsEscapesTest::testDecodeRejectsAnUnknownEscapecallsEscapesTest::testDecodeRejectsATrailingBackslashcallsEscapesTest::testEscapeRejectsANullHexadecimalEscapecallsEscapesTest::testEscapeRejectsANullOctalEscapecallsEscapesTest::testEscapeRejectsANullUniversalCharactercallsEscapesTest::testEscapeRejectsANullWideUniversalCharactercallsEscapesTest::testEscapeRejectsANumberAboveOneBytecallsEscapesTest::testEscapeRejectsAWideUniversalCharactercallsScannerTest::testBracketedRejectsAMissingClosercallsScannerTest::testBracketedRejectsAMissingNamecallsScannerTest::testBracketedRejectsTheEndOfTheFilecallsScannerTest::testIntegerRejectsADecimalOutOfRangecallsScannerTest::testIntegerRejectsADecimalTooLongToReadcallsScannerTest::testIntegerRejectsAHexadecimalOutOfRangecallsScannerTest::testIntegerRejectsAHexadecimalTooLongToReadcallsScannerTest::testIntegerRejectsAnIdentifierStartingWithADigitcallsScannerTest::testLiteralRejectsAnEmptyCharactercallsScannerTest::testLiteralRejectsAnUnterminatedCharactercallsScannerTest::testLiteralRejectsAnUnterminatedStringcallsScannerTest::testLiteralRejectsAWideCharactercallsScannerTest::testNextRejectsAnInvalidCharactercallsScannerTest::testPercentRejectsABarePercentSigncallsScannerTest::testPercentRejectsAnUnknownDirectivecallsScannerTest::testSkipTriviaRejectsAnUnterminatedCommentcallsScannerTest::testTagRejectsAnUnterminatedTagcallsDeclarationParserTest::testCodesRejectsAMissingBlockcallsDeclarationParserTest::testDefineRejectsAMissingVariablecallsDeclarationParserTest::testDirectiveRejectsAnOptionWithoutItsStringcallsDeclarationParserTest::testDirectiveRejectsANtermThatIsNotAnIdentifiercallsDeclarationParserTest::testDirectiveRejectsARuleModifiercallsDeclarationParserTest::testParseRejectsANonDeclarationcallsGrammarParserTest::testParseRejectsADeclarationAmongTheRulesWithoutASemicoloncallsGrammarParserTest::testParseRejectsARuleBeforeTheSectioncallsGrammarParserTest::testParseRejectsARulesSectionHoldingOnlyDeclarationscallsGrammarParserTest::testParseRejectsARulesSectionWithoutRulescallsGrammarParserTest::testParseRejectsAStrayTokenAmongTheRulescallsRuleParserTest::testActionRejectsATagWithoutCodecallsRuleParserTest::testCheckEmptycallsRuleParserTest::testCheckEmptyRejectsAMidrulePredicatecallsRuleParserTest::testCheckEmptyRejectsASymbolcallsRuleParserTest::testModifierRejectsADprecWithoutANumbercallsRuleParserTest::testModifierRejectsAMergeWithoutATagcallsRuleParserTest::testParseRejectsAMissingColoncallsRuleParserTest::testParseRejectsANonRulecallsRuleParserTest::testSymbolTokenRejectsANonSymbolcallsSymbolListParserTest::testEntriesRejectASymbolOfAnotherKindcallsSymbolListParserTest::testEntriesRejectsAnEmptyListcallsSymbolListParserTest::testEntriesRejectsATagWithoutASymbolcallsSymbolListParserTest::testNtermDeclarationsRejectACharacterLiteralcallsSymbolListParserTest::testNtermDeclarationsRejectAStringAliascallsSymbolListParserTest::testSymbolRejectsAnotherTokencallsSymbolListParserTest::testSymbolsRejectsAnEmptyListcallsSymbolListParserTest::testTargetsRejectsAnEmptyListcallsSymbolListParserTest::testTokenDeclarationsRejectAStringStartingAnEntrycallsTokenStreamTest::testExpectRejectsAnotherTokencalls
Relations§
Static calls 32
- static-call BisonParser\Scanner\CodeReader::braced() packages/bison-parser/src/Scanner/CodeReader.php:54
- static-call BisonParser\Scanner\CodeReader::prologue() packages/bison-parser/src/Scanner/CodeReader.php:79
- static-call BisonParser\Scanner\CodeReader::unit() packages/bison-parser/src/Scanner/CodeReader.php:98
- static-call BisonParser\Scanner\CodeReader::unit() packages/bison-parser/src/Scanner/CodeReader.php:112
- static-call BisonParser\Scanner\Escapes::escape() packages/bison-parser/src/Scanner/Escapes.php:78
- static-call BisonParser\Scanner\Escapes::byte() packages/bison-parser/src/Scanner/Escapes.php:95
- static-call BisonParser\Scanner\Scanner::skipTrivia() packages/bison-parser/src/Scanner/Scanner.php:88
- static-call BisonParser\Scanner\Scanner::next() packages/bison-parser/src/Scanner/Scanner.php:130
- static-call BisonParser\Scanner\Scanner::percent() packages/bison-parser/src/Scanner/Scanner.php:162
- static-call BisonParser\Scanner\Scanner::bracketed() packages/bison-parser/src/Scanner/Scanner.php:215
- static-call BisonParser\Scanner\Scanner::bracketed() packages/bison-parser/src/Scanner/Scanner.php:219
- static-call BisonParser\Scanner\Scanner::integer() packages/bison-parser/src/Scanner/Scanner.php:240
- static-call BisonParser\Scanner\Scanner::integer() packages/bison-parser/src/Scanner/Scanner.php:245
- static-call BisonParser\Scanner\Scanner::literal() packages/bison-parser/src/Scanner/Scanner.php:268
- static-call BisonParser\Scanner\Scanner::literal() packages/bison-parser/src/Scanner/Scanner.php:272
- static-call BisonParser\Scanner\Scanner::literal() packages/bison-parser/src/Scanner/Scanner.php:275
- static-call BisonParser\Scanner\Scanner::literal() packages/bison-parser/src/Scanner/Scanner.php:284
- static-call BisonParser\Scanner\Scanner::tag() packages/bison-parser/src/Scanner/Scanner.php:335
- static-call BisonParser\Syntax\DeclarationParser::parse() packages/bison-parser/src/Syntax/DeclarationParser.php:78
- static-call BisonParser\Syntax\DeclarationParser::directive() packages/bison-parser/src/Syntax/DeclarationParser.php:134
- static-call BisonParser\Syntax\GrammarParser::parse() packages/bison-parser/src/Syntax/GrammarParser.php:48
- static-call BisonParser\Syntax\GrammarParser::parse() packages/bison-parser/src/Syntax/GrammarParser.php:66
- static-call BisonParser\Syntax\GrammarParser::parse() packages/bison-parser/src/Syntax/GrammarParser.php:70
- static-call BisonParser\Syntax\RuleParser::checkEmpty() packages/bison-parser/src/Syntax/RuleParser.php:110
- static-call BisonParser\Syntax\RuleParser::symbolToken() packages/bison-parser/src/Syntax/RuleParser.php:215
- static-call BisonParser\Syntax\SymbolListParser::entries() packages/bison-parser/src/Syntax/SymbolListParser.php:107
- static-call BisonParser\Syntax\SymbolListParser::entries() packages/bison-parser/src/Syntax/SymbolListParser.php:115
- static-call BisonParser\Syntax\SymbolListParser::entries() packages/bison-parser/src/Syntax/SymbolListParser.php:120
- static-call BisonParser\Syntax\SymbolListParser::symbols() packages/bison-parser/src/Syntax/SymbolListParser.php:171
- static-call BisonParser\Syntax\SymbolListParser::targets() packages/bison-parser/src/Syntax/SymbolListParser.php:203
- static-call BisonParser\Syntax\SymbolListParser::symbol() packages/bison-parser/src/Syntax/SymbolListParser.php:253
- static-call BisonParser\Syntax\TokenStream::expect() packages/bison-parser/src/Syntax/TokenStream.php:104