AbstractLexer
in package
Base class for writing simple lexers, i.e. for creating small DSLs.
Tags
Table of Contents
Properties
- $lookahead : Token<T, V>|null
- The next token in the input.
- $token : Token<T, V>|null
- The last matched/seen token.
- $input : string
- Lexer original input string.
- $peek : int
- Current peek of current lexer position.
- $position : int
- Current lexer position in input string.
- $regex : non-empty-string|null
- Composed regex for input parsing.
- $tokens : array<int, Token<T, V>>
- Array of scanned tokens.
Methods
- getInputUntilPosition() : string
- Retrieve the original lexer's input until a given position.
- getLiteral() : int|string
- Gets the literal for a given token.
- glimpse() : Token<T, V>|null
- Peeks at the next token, returns it and immediately resets the peek.
- isA() : bool
- Checks if given value is identical to the given token.
- isNextToken() : bool
- Checks whether a given token matches the current lookahead.
- isNextTokenAny() : bool
- Checks whether any of the given tokens matches the current lookahead.
- moveNext() : bool
- Moves to the next token in the input string.
- peek() : Token<T, V>|null
- Moves the lookahead token forward.
- reset() : void
- Resets the lexer.
- resetPeek() : void
- Resets the peek pointer to 0.
- resetPosition() : void
- Resets the lexer position on the input to the given position.
- setInput() : void
- Sets the input data to be tokenized.
- skipUntil() : void
- Tells the lexer to skip input tokens until it sees a token with the given value.
- getCatchablePatterns() : array<string|int, string>
- Lexical catchable patterns.
- getModifiers() : string
- Regex modifiers
- getNonCatchablePatterns() : array<string|int, string>
- Lexical non-catchable patterns.
- getType() : T|null
- Retrieve token type. Also processes the token value if necessary.
- scan() : void
- Scans the input string for tokens.
Properties
$lookahead
The next token in the input.
public
Token<T, V>|null
$lookahead
$token
The last matched/seen token.
public
Token<T, V>|null
$token
$input
Lexer original input string.
private
string
$input
$peek
Current peek of current lexer position.
private
int
$peek
= 0
$position
Current lexer position in input string.
private
int
$position
= 0
$regex
Composed regex for input parsing.
private
non-empty-string|null
$regex
$tokens
Array of scanned tokens.
private
array<int, Token<T, V>>
$tokens
= []
Methods
getInputUntilPosition()
Retrieve the original lexer's input until a given position.
public
getInputUntilPosition(int $position) : string
Parameters
- $position : int
Return values
stringgetLiteral()
Gets the literal for a given token.
public
getLiteral(T $token) : int|string
Parameters
- $token : T
Return values
int|stringglimpse()
Peeks at the next token, returns it and immediately resets the peek.
public
glimpse() : Token<T, V>|null
Return values
Token<T, V>|null —The next token or NULL if there are no more tokens ahead.
isA()
Checks if given value is identical to the given token.
public
isA(string $value, int|string $token) : bool
Parameters
- $value : string
- $token : int|string
Return values
boolisNextToken()
Checks whether a given token matches the current lookahead.
public
isNextToken(T $type) : bool
Parameters
- $type : T
Tags
Return values
boolisNextTokenAny()
Checks whether any of the given tokens matches the current lookahead.
public
isNextTokenAny(array<int, T> $types) : bool
Parameters
- $types : array<int, T>
Tags
Return values
boolmoveNext()
Moves to the next token in the input string.
public
moveNext() : bool
Tags
Return values
boolpeek()
Moves the lookahead token forward.
public
peek() : Token<T, V>|null
Return values
Token<T, V>|null —The next token or NULL if there are no more tokens ahead.
reset()
Resets the lexer.
public
reset() : void
resetPeek()
Resets the peek pointer to 0.
public
resetPeek() : void
resetPosition()
Resets the lexer position on the input to the given position.
public
resetPosition([int $position = 0 ]) : void
Parameters
- $position : int = 0
-
Position to place the lexical scanner.
setInput()
Sets the input data to be tokenized.
public
setInput(string $input) : void
The Lexer is immediately reset and the new input tokenized. Any unprocessed tokens from any previous input are lost.
Parameters
- $input : string
-
The input to be tokenized.
skipUntil()
Tells the lexer to skip input tokens until it sees a token with the given value.
public
skipUntil(T $type) : void
Parameters
- $type : T
-
The token type to skip until.
getCatchablePatterns()
Lexical catchable patterns.
protected
abstract getCatchablePatterns() : array<string|int, string>
Return values
array<string|int, string>getModifiers()
Regex modifiers
protected
getModifiers() : string
Return values
stringgetNonCatchablePatterns()
Lexical non-catchable patterns.
protected
abstract getNonCatchablePatterns() : array<string|int, string>
Return values
array<string|int, string>getType()
Retrieve token type. Also processes the token value if necessary.
protected
abstract getType(string &$value) : T|null
Parameters
- $value : string
Tags
Return values
T|nullscan()
Scans the input string for tokens.
protected
scan(string $input) : void
Parameters
- $input : string
-
A query string.