classScan
final class Scan
Restricted visibility: declared "@visibility root". Code outside that scope must not name this declaration.
The state one MySQL tokenization carries from token to token.
Properties§
public LexerState $next = LexerState::StartState the next token is read in.
public bool $inVersionComment = falseWhether the text is inside a /*! comment whose body is read as SQL.
public Cursor $cursorpublic KeywordTable $keywordspublic SqlMode $modepublic MySqlVersion $versionMethods§
public function __construct(
public Cursor $cursor,
public KeywordTable $keywords,
public SqlMode $mode,
public MySqlVersion $version,
)Parameters
$cursor | Cursor | Reads the SQL text |
$keywords | KeywordTable | Keywords of the release |
$mode | SqlMode | Mode the text is read under |
$version | MySqlVersion | Release the text is read for |
public function lexeme(string $name, int $start): LexemeMakes the lexeme spanning from an offset to the cursor.
Parameters
$name | string | Terminal name |
$start | int | Byte offset the lexeme began at |
Returns
Lexeme The lexemeTest cases 1
ScanTest::testLexemecalls
Called from 20
- method-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:40
- method-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:50
- method-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:56
- method-call SqlParser\MySql\Lexer\NumberScanner::fraction() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:74
- method-call SqlParser\MySql\Lexer\NumberScanner::fraction() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:77
- method-call SqlParser\MySql\Lexer\OperatorScanner::scan() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:47
- method-call SqlParser\MySql\Lexer\OperatorScanner::scan() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:54
- method-call SqlParser\MySql\Lexer\OperatorScanner::scan() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:65
- method-call SqlParser\MySql\Lexer\OperatorScanner::separator() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:108
- method-call SqlParser\MySql\Lexer\QuotedScanner::scan() packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:57
- method-call SqlParser\MySql\Lexer\QuotedScanner::string() packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:83
- method-call SqlParser\MySql\Lexer\QuotedScanner::quotedIdentifier() packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:104
- method-call SqlParser\MySql\Lexer\VariableScanner::at() packages/sql-parser/src/MySql/Lexer/VariableScanner.php:40
- method-call SqlParser\MySql\Lexer\VariableScanner::hostname() packages/sql-parser/src/MySql/Lexer/VariableScanner.php:57
- method-call SqlParser\MySql\Lexer\VariableScanner::systemVariable() packages/sql-parser/src/MySql/Lexer/VariableScanner.php:74
- method-call SqlParser\MySql\Lexer\VariableScanner::identifierOrKeyword() packages/sql-parser/src/MySql/Lexer/VariableScanner.php:98
- method-call SqlParser\MySql\Lexer\WordScanner::word() packages/sql-parser/src/MySql/Lexer/WordScanner.php:73
- method-call SqlParser\MySql\Lexer\WordScanner::word() packages/sql-parser/src/MySql/Lexer/WordScanner.php:76
- method-call SqlParser\MySql\Lexer\WordScanner::identifierLexeme() packages/sql-parser/src/MySql/Lexer/WordScanner.php:129
- method-call SqlParser\MySql\Lexer\WordScanner::dollarQuoted() packages/sql-parser/src/MySql/Lexer/WordScanner.php:155
Calls 3
- new Lexeme line 53
- function-call
substrline 53 - method-call Cursor::offset() line 53
public static function isIdentifierByte(string $byte): boolReports whether a byte can be part of an unquoted identifier.
Parameters
$byte | string | The byte, or an empty string at the end |
Returns
bool True for letters, digits, underscore, dollar and every byte of a multi-byte characterTest cases 1
Called from 8
- static-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:39
- static-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:47
- static-call SqlParser\MySql\Lexer\OperatorScanner::scan() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:43
- static-call SqlParser\MySql\Lexer\OperatorScanner::separator() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:106
- static-call SqlParser\MySql\Lexer\WordScanner::scan() packages/sql-parser/src/MySql/Lexer/WordScanner.php:41
- static-call SqlParser\MySql\Lexer\WordScanner::word() packages/sql-parser/src/MySql/Lexer/WordScanner.php:60
- static-call SqlParser\MySql\Lexer\WordScanner::identifier() packages/sql-parser/src/MySql/Lexer/WordScanner.php:94
- static-call SqlParser\MySql\Lexer\WordScanner::consume() packages/sql-parser/src/MySql/Lexer/WordScanner.php:111
Test cases 36§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 2
Other tests reaching this symbol 34
MySqlLexerTest::testNextcallsNumberScannerTest::testFractioncallsNumberScannerTest::testScancallsNumberScannerTest::testScanNotesAQualifiedIdentifierThatStartsWithADigitcallsOperatorScannerTest::testMultiCharactercallsOperatorScannerTest::testScancallsOperatorScannerTest::testScanRejectsAForeignCharactercallsOperatorScannerTest::testScanRejectsAParameterMarkerGluedToANamecallsOperatorScannerTest::testSeparatorcallsQuotedScannerTest::testQuotedIdentifiercallsQuotedScannerTest::testQuotedIdentifierRejectsAnUnterminatedIdentifiercallsQuotedScannerTest::testScanReadsPrefixedLiteralscallsQuotedScannerTest::testScanReadsStringsAndIdentifierscallsQuotedScannerTest::testScanRejectsAnOddHexadecimalLiteralcallsQuotedScannerTest::testStringcallsQuotedScannerTest::testStringRejectsAnUnterminatedStringcallsTriviaScannerTest::testBlockCommentcallsTriviaScannerTest::testBlockCommentRejectsAnUnterminatedCommentcallsTriviaScannerTest::testSkipDropsAVersionCommentForANewerReleasecallsTriviaScannerTest::testSkipPassesWhitespaceAndCommentscallsTriviaScannerTest::testSkipReadsAVersionCommentBodyAsSqlcallsVariableScannerTest::testAtcallsVariableScannerTest::testHostnamecallsVariableScannerTest::testIdentifierOrKeywordcallsVariableScannerTest::testIdentifierOrKeywordRejectsAMissingNamecallsVariableScannerTest::testSystemVariablecallsWordScannerTest::testDollarQuotedcallsWordScannerTest::testDollarQuotedRejectsAnUnterminatedStringcallsWordScannerTest::testIdentifiercallsWordScannerTest::testIdentifierLexemecallsWordScannerTest::testScancallsWordScannerTest::testWordKeepsAKeywordBeforeADotAsAnIdentifiercallsWordScannerTest::testWordLooksUpFunctionsAcrossSpacesUnderIgnoreSpacecallsMySqlParserTestcalls
Relations§
Instantiated in 1
Static calls 8
- static-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:39
- static-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:47
- static-call SqlParser\MySql\Lexer\OperatorScanner::scan() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:43
- static-call SqlParser\MySql\Lexer\OperatorScanner::separator() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:106
- static-call SqlParser\MySql\Lexer\WordScanner::scan() packages/sql-parser/src/MySql/Lexer/WordScanner.php:41
- static-call SqlParser\MySql\Lexer\WordScanner::word() packages/sql-parser/src/MySql/Lexer/WordScanner.php:60
- static-call SqlParser\MySql\Lexer\WordScanner::identifier() packages/sql-parser/src/MySql/Lexer/WordScanner.php:94
- static-call SqlParser\MySql\Lexer\WordScanner::consume() packages/sql-parser/src/MySql/Lexer/WordScanner.php:111
Method calls 20
- method-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:40
- method-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:50
- method-call SqlParser\MySql\Lexer\NumberScanner::scan() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:56
- method-call SqlParser\MySql\Lexer\NumberScanner::fraction() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:74
- method-call SqlParser\MySql\Lexer\NumberScanner::fraction() packages/sql-parser/src/MySql/Lexer/NumberScanner.php:77
- method-call SqlParser\MySql\Lexer\OperatorScanner::scan() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:47
- method-call SqlParser\MySql\Lexer\OperatorScanner::scan() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:54
- method-call SqlParser\MySql\Lexer\OperatorScanner::scan() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:65
- method-call SqlParser\MySql\Lexer\OperatorScanner::separator() packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:108
- method-call SqlParser\MySql\Lexer\QuotedScanner::scan() packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:57
- method-call SqlParser\MySql\Lexer\QuotedScanner::string() packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:83
- method-call SqlParser\MySql\Lexer\QuotedScanner::quotedIdentifier() packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:104
- method-call SqlParser\MySql\Lexer\VariableScanner::at() packages/sql-parser/src/MySql/Lexer/VariableScanner.php:40
- method-call SqlParser\MySql\Lexer\VariableScanner::hostname() packages/sql-parser/src/MySql/Lexer/VariableScanner.php:57
- method-call SqlParser\MySql\Lexer\VariableScanner::systemVariable() packages/sql-parser/src/MySql/Lexer/VariableScanner.php:74
- method-call SqlParser\MySql\Lexer\VariableScanner::identifierOrKeyword() packages/sql-parser/src/MySql/Lexer/VariableScanner.php:98
- method-call SqlParser\MySql\Lexer\WordScanner::word() packages/sql-parser/src/MySql/Lexer/WordScanner.php:73
- method-call SqlParser\MySql\Lexer\WordScanner::word() packages/sql-parser/src/MySql/Lexer/WordScanner.php:76
- method-call SqlParser\MySql\Lexer\WordScanner::identifierLexeme() packages/sql-parser/src/MySql/Lexer/WordScanner.php:129
- method-call SqlParser\MySql\Lexer\WordScanner::dollarQuoted() packages/sql-parser/src/MySql/Lexer/WordScanner.php:155
Type declarations 20
- type SqlParser\MySql\Lexer\MySqlLexer packages/sql-parser/src/MySql/Lexer/MySqlLexer.php:84
- type SqlParser\MySql\Lexer\NumberScanner packages/sql-parser/src/MySql/Lexer/NumberScanner.php:28
- type SqlParser\MySql\Lexer\NumberScanner packages/sql-parser/src/MySql/Lexer/NumberScanner.php:67
- type SqlParser\MySql\Lexer\OperatorScanner packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:36
- type SqlParser\MySql\Lexer\OperatorScanner packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:76
- type SqlParser\MySql\Lexer\OperatorScanner packages/sql-parser/src/MySql/Lexer/OperatorScanner.php:101
- type SqlParser\MySql\Lexer\QuotedScanner packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:31
- type SqlParser\MySql\Lexer\QuotedScanner packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:75
- type SqlParser\MySql\Lexer\QuotedScanner packages/sql-parser/src/MySql/Lexer/QuotedScanner.php:96
- type SqlParser\MySql\Lexer\TriviaScanner packages/sql-parser/src/MySql/Lexer/TriviaScanner.php:29
- type SqlParser\MySql\Lexer\TriviaScanner packages/sql-parser/src/MySql/Lexer/TriviaScanner.php:59
- type SqlParser\MySql\Lexer\VariableScanner packages/sql-parser/src/MySql/Lexer/VariableScanner.php:28
- type SqlParser\MySql\Lexer\VariableScanner packages/sql-parser/src/MySql/Lexer/VariableScanner.php:50
- type SqlParser\MySql\Lexer\VariableScanner packages/sql-parser/src/MySql/Lexer/VariableScanner.php:67
- type SqlParser\MySql\Lexer\VariableScanner packages/sql-parser/src/MySql/Lexer/VariableScanner.php:87
- type SqlParser\MySql\Lexer\WordScanner packages/sql-parser/src/MySql/Lexer/WordScanner.php:31
- type SqlParser\MySql\Lexer\WordScanner packages/sql-parser/src/MySql/Lexer/WordScanner.php:56
- type SqlParser\MySql\Lexer\WordScanner packages/sql-parser/src/MySql/Lexer/WordScanner.php:90
- type SqlParser\MySql\Lexer\WordScanner packages/sql-parser/src/MySql/Lexer/WordScanner.php:127
- type SqlParser\MySql\Lexer\WordScanner packages/sql-parser/src/MySql/Lexer/WordScanner.php:141