mini\Parsing\SQL\SqlLexer class

Documentation

SQL Lexer - Tokenizes SQL strings

Uses a single combined regex with named groups for fast tokenization. Patterns are ordered long-to-short to ensure correct matching.

Constants (97)

Name Value
T_SELECT 'SELECT'
T_INSERT 'INSERT'
T_REPLACE 'REPLACE'
T_UPDATE 'UPDATE'
T_DELETE 'DELETE'
T_FROM 'FROM'
T_INTO 'INTO'
T_VALUES 'VALUES'
T_SET 'SET'
T_WHERE 'WHERE'
T_AND 'AND'
T_OR 'OR'
T_IN 'IN'
T_ORDER 'ORDER'
T_BY 'BY'
T_LIMIT 'LIMIT'
T_OFFSET 'OFFSET'
T_AS 'AS'
T_ASC 'ASC'
T_DESC 'DESC'
T_NOT 'NOT'
T_IS 'IS'
T_NULL 'NULL'
T_TRUE 'TRUE'
T_FALSE 'FALSE'
T_LIKE 'LIKE'
T_JOIN 'JOIN'
T_LEFT 'LEFT'
T_RIGHT 'RIGHT'
T_INNER 'INNER'
T_OUTER 'OUTER'
T_FULL 'FULL'
T_CROSS 'CROSS'
T_ON 'ON'
T_DISTINCT 'DISTINCT'
T_GROUP 'GROUP'
T_HAVING 'HAVING'
T_BETWEEN 'BETWEEN'
T_EXISTS 'EXISTS'
T_UNION 'UNION'
T_INTERSECT 'INTERSECT'
T_EXCEPT 'EXCEPT'
T_ALL 'ALL'
T_ANY 'ANY'
T_SOME 'SOME'
T_CASE 'CASE'
T_WHEN 'WHEN'
T_THEN 'THEN'
T_ELSE 'ELSE'
T_END 'END'
T_OVER 'OVER'
T_PARTITION 'PARTITION'
T_WITH 'WITH'
T_RECURSIVE 'RECURSIVE'
T_CURRENT_DATE 'CURRENT_DATE'
T_CURRENT_TIME 'CURRENT_TIME'
T_CURRENT_TIMESTAMP 'CURRENT_TIMESTAMP'
T_FETCH 'FETCH'
T_FIRST 'FIRST'
T_NEXT 'NEXT'
T_ROWS 'ROWS'
T_ROW 'ROW'
T_ONLY 'ONLY'
T_CREATE 'CREATE'
T_DROP 'DROP'
T_ALTER 'ALTER'
T_TABLE 'TABLE'
T_INDEX 'INDEX'
T_VIEW 'VIEW'
T_IF 'IF'
T_PRIMARY 'PRIMARY'
T_KEY 'KEY'
T_UNIQUE 'UNIQUE'
T_FOREIGN 'FOREIGN'
T_REFERENCES 'REFERENCES'
T_CONSTRAINT 'CONSTRAINT'
T_DEFAULT 'DEFAULT'
T_AUTOINCREMENT 'AUTOINCREMENT'
T_CHECK 'CHECK'
T_CASCADE 'CASCADE'
T_RESTRICT 'RESTRICT'
T_ACTION 'ACTION'
T_NO 'NO'
T_TEMPORARY 'TEMPORARY'
T_TEMP 'TEMP'
T_IDENTIFIER 'IDENTIFIER'
T_STRING 'STRING'
T_NUMBER 'NUMBER'
T_PLACEHOLDER 'PLACEHOLDER'
T_COMMA 'COMMA'
T_DOT 'DOT'
T_STAR 'STAR'
T_LPAREN 'LPAREN'
T_RPAREN 'RPAREN'
T_OP 'OPERATOR'
T_EOF 'EOF'
KEYWORDS array ( 'SELECT' => 'SELECT', 'INSERT' => 'INSERT', 'REPLACE' => 'REPLACE', 'UPDATE' => 'UPDATE', 'DELETE' => 'DELETE', 'FROM' => 'FROM', 'INTO' => 'INTO', 'VALUES' => 'VALUES', 'SET' => 'SET', 'WHERE' => 'WHERE', 'AND' => 'AND', 'OR' => 'OR', 'IN' => 'IN', 'ORDER' => 'ORDER', 'BY' => 'BY', 'LIMIT' => 'LIMIT', 'OFFSET' => 'OFFSET', 'AS' => 'AS', 'ASC' => 'ASC', 'DESC' => 'DESC', 'NOT' => 'NOT', 'IS' => 'IS', 'NULL' => 'NULL', 'TRUE' => 'TRUE', 'FALSE' => 'FALSE', 'LIKE' => 'LIKE', 'JOIN' => 'JOIN', 'LEFT' => 'LEFT', 'RIGHT' => 'RIGHT', 'INNER' => 'INNER', 'OUTER' => 'OUTER', 'FULL' => 'FULL', 'CROSS' => 'CROSS', 'ON' => 'ON', 'DISTINCT' => 'DISTINCT', 'GROUP' => 'GROUP', 'HAVING' => 'HAVING', 'BETWEEN' => 'BETWEEN', 'EXISTS' => 'EXISTS', 'UNION' => 'UNION', 'INTERSECT' => 'INTERSECT', 'EXCEPT' => 'EXCEPT', 'ALL' => 'ALL', 'ANY' => 'ANY', 'SOME' => 'SOME', 'CASE' => 'CASE', 'WHEN' => 'WHEN', 'THEN' => 'THEN', 'ELSE' => 'ELSE', 'END' => 'END', 'OVER' => 'OVER', 'PARTITION' => 'PARTITION', 'WITH' => 'WITH', 'RECURSIVE' => 'RECURSIVE', 'CURRENT_DATE' => 'CURRENT_DATE', 'CURRENT_TIME' => 'CURRENT_TIME', 'CURRENT_TIMESTAMP' => 'CURRENT_TIMESTAMP', 'FETCH' => 'FETCH', 'FIRST' => 'FIRST', 'NEXT' => 'NEXT', 'ROWS' => 'ROWS', 'ROW' => 'ROW', 'ONLY' => 'ONLY', 'CREATE' => 'CREATE', 'DROP' => 'DROP', 'ALTER' => 'ALTER', 'TABLE' => 'TABLE', 'INDEX' => 'INDEX', 'VIEW' => 'VIEW', 'IF' => 'IF', 'PRIMARY' => 'PRIMARY', 'KEY' => 'KEY', 'UNIQUE' => 'UNIQUE', 'FOREIGN' => 'FOREIGN', 'REFERENCES' => 'REFERENCES', 'CONSTRAINT' => 'CONSTRAINT', 'DEFAULT' => 'DEFAULT', 'AUTOINCREMENT' => 'AUTOINCREMENT', 'CHECK' => 'CHECK', 'CASCADE' => 'CASCADE', 'RESTRICT' => 'RESTRICT', 'ACTION' => 'ACTION', 'NO' => 'NO', 'TEMPORARY' => 'TEMPORARY', 'TEMP' => 'TEMP', )

Properties (2)

private static string $pattern

Combined regex pattern built once at class load time.

private string $sql

Methods (3)

Documentation missing

Documentation missing

Tokenize SQL string into array of tokens

Source

src/Parsing/SQL/SqlLexer.php:11-314