public class LexerActionExecutor extends Object
The executor tracks position information for position-dependent lexer actions
efficiently, ensuring that actions appearing only at the end of the rule do
not cause bloating of the
DFA created for the lexer.
|Constructor and Description|
Constructs an executor for a sequence of
|Modifier and Type||Method and Description|
Execute the actions encapsulated by this executor within the context of a particular
Gets the lexer actions to be executed by this executor.
public static LexerActionExecutor append(LexerActionExecutor lexerActionExecutor, LexerAction lexerAction)
LexerActionExecutorwhich executes the actions for the input
lexerActionExecutorfollowed by a specified
lexerActionExecutor- The executor for actions already traversed by the lexer while matching a token within a particular
LexerATNConfig. If this is
null, the method behaves as though it were an empty executor.
lexerAction- The lexer action to execute after the actions specified in
LexerActionExecutorfor executing the combine actions of
public LexerActionExecutor fixOffsetBeforeMatch(int offset)
LexerActionExecutorwhich encodes the current offset for position-dependent lexer actions.
Normally, when the executor encounters lexer actions where
true, it calls
IntStream.seek(int) on the input
CharStream to set the input
position to the end of the current token. This behavior provides
for efficient DFA representation of lexer actions which appear at the end
of a lexer rule, even when the lexer rule matches a variable number of
Prior to traversing a match transition in the ATN, the current offset from the token start index is assigned to all position-dependent lexer actions which have not already been assigned a fixed offset. By storing the offsets relative to the token start index, the DFA representation of lexer actions which appear in the middle of tokens remains efficient due to sharing among tokens of the same length, regardless of their absolute position in the input stream.
If the current executor already has offsets assigned to all
position-dependent lexer actions, the method returns
offset- The current offset to assign to all position-dependent lexer actions which do not already have offsets assigned.
LexerActionExecutorwhich stores input stream offsets for all position-dependent lexer actions.
public LexerAction getLexerActions()
public void execute(Lexer lexer, CharStream input, int startIndex)
This method calls
IntStream.seek(int) to set the position of the
CharStream prior to calling
LexerAction.execute(org.antlr.v4.runtime.Lexer) on a position-dependent action. Before the
method returns, the input position will be restored to the same position
it was in when the method was invoked.
lexer- The lexer instance.
input- The input stream which is the source for the current token. When this method is called, the current
inputshould be the start of the following token, i.e. 1 character past the end of the current token.
startIndex- The token start index. This value may be passed to
IntStream.seek(int)to set the
inputposition to the beginning of the token.
Copyright © 1992–2021 ANTLR. All rights reserved.