Package org.antlr.v4.automata
Class LexerATNFactory
- java.lang.Object
-
- org.antlr.v4.automata.ParserATNFactory
-
- org.antlr.v4.automata.LexerATNFactory
-
- All Implemented Interfaces:
ATNFactory
public class LexerATNFactory extends ParserATNFactory
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
LexerATNFactory.CharSetParseState
-
Nested classes/interfaces inherited from interface org.antlr.v4.automata.ATNFactory
ATNFactory.Handle
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<LexerAction,java.lang.Integer>
actionToIndexMap
Maps from aLexerAction
object to the action index.org.stringtemplate.v4.STGroup
codegenTemplates
static java.util.Map<java.lang.String,java.lang.Integer>
COMMON_CONSTANTS
Provides a map of names of predefined constants which are likely to appear as the argument for lexer commands.protected java.util.Map<java.lang.Integer,LexerAction>
indexToActionMap
Maps from an action index to aLexerAction
object.private java.util.List<java.lang.String>
ruleCommands
-
Fields inherited from class org.antlr.v4.automata.ParserATNFactory
atn, currentOuterAlt, currentRule, g, preventEpsilonClosureBlocks, preventEpsilonOptionalBlocks
-
-
Constructor Summary
Constructors Constructor Description LexerATNFactory(LexerGrammar g)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ATNFactory.Handle
action(java.lang.String action)
ATNFactory.Handle
action(ActionAST action)
Build what amounts to an epsilon transition with an action.protected ATNFactory.Handle
action(GrammarAST node, LexerAction lexerAction)
private void
applyPrevState(GrammarAST charSetAST, IntervalSet set, LexerATNFactory.CharSetParseState state)
private LexerATNFactory.CharSetParseState
applyPrevStateAndMoveToCodePoint(GrammarAST charSetAST, IntervalSet set, LexerATNFactory.CharSetParseState state, int codePoint)
private LexerATNFactory.CharSetParseState
applyPrevStateAndMoveToProperty(GrammarAST charSetAST, IntervalSet set, LexerATNFactory.CharSetParseState state, IntervalSet property)
ATNFactory.Handle
charSetLiteral(GrammarAST charSetAST)
[Aa\t ሴa-z\]\p{Letter}\-] char setsprivate void
checkCommands(java.lang.String command, org.antlr.runtime.Token commandToken)
protected boolean
checkRange(GrammarAST leftNode, GrammarAST rightNode, int leftValue, int rightValue)
protected void
checkSetCollision(GrammarAST ast, IntervalSet set, int el)
protected void
checkSetCollision(GrammarAST ast, IntervalSet set, int a, int b)
ATN
createATN()
private LexerAction
createLexerAction(GrammarAST ID, GrammarAST arg)
private java.lang.Integer
getChannelConstantValue(java.lang.String channelName, org.antlr.runtime.Token token)
static java.util.Set<java.lang.String>
getCommonConstants()
protected int
getLexerActionIndex(LexerAction lexerAction)
private java.lang.Integer
getModeConstantValue(java.lang.String modeName, org.antlr.runtime.Token token)
IntervalSet
getSetFromCharSetLiteral(GrammarAST charSetAST)
private java.lang.Integer
getTokenConstantValue(java.lang.String tokenName, org.antlr.runtime.Token token)
ATNFactory.Handle
lexerAltCommands(ATNFactory.Handle alt, ATNFactory.Handle cmds)
ATNFactory.Handle
lexerCallCommand(GrammarAST ID, GrammarAST arg)
ATNFactory.Handle
lexerCommand(GrammarAST ID)
ATNFactory.Handle
range(GrammarAST a, GrammarAST b)
Not valid for non-lexers.ATNFactory.Handle
rule(GrammarAST ruleAST, java.lang.String name, ATNFactory.Handle blk)
ATNFactory.Handle
set(GrammarAST associatedAST, java.util.List<GrammarAST> alts, boolean invert)
From set build single edge grapho->o-set->o
.ATNFactory.Handle
stringLiteral(TerminalAST stringLiteralAST)
For a lexer, a string is a sequence of char to match.ATNFactory.Handle
tokenRef(TerminalAST node)
From labelA
build grapho-A->o
.-
Methods inherited from class org.antlr.v4.automata.ParserATNFactory
_createATN, _ruleRef, addEOFTransitionToStartRules, addFollowLink, addRuleFollowLinks, alt, block, blockHasWildcardAlt, createRuleStartAndStopATNStates, elemList, epsilon, epsilon, epsilon, expectNonGreedy, getTokenType, label, listLabel, makeBlock, newState, newState, newState, optional, plus, ruleRef, sempred, setCurrentOuterAlt, setCurrentRuleName, star, wildcard
-
-
-
-
Field Detail
-
codegenTemplates
public org.stringtemplate.v4.STGroup codegenTemplates
-
COMMON_CONSTANTS
public static final java.util.Map<java.lang.String,java.lang.Integer> COMMON_CONSTANTS
Provides a map of names of predefined constants which are likely to appear as the argument for lexer commands. These names would be resolved by the Java compiler for lexer commands that are translated to embedded actions, but are required during code generation for creatingLexerAction
instances that are usable by a lexer interpreter.
-
ruleCommands
private java.util.List<java.lang.String> ruleCommands
-
indexToActionMap
protected java.util.Map<java.lang.Integer,LexerAction> indexToActionMap
Maps from an action index to aLexerAction
object.
-
actionToIndexMap
protected java.util.Map<LexerAction,java.lang.Integer> actionToIndexMap
Maps from aLexerAction
object to the action index.
-
-
Constructor Detail
-
LexerATNFactory
public LexerATNFactory(LexerGrammar g)
-
-
Method Detail
-
getCommonConstants
public static java.util.Set<java.lang.String> getCommonConstants()
-
createATN
public ATN createATN()
- Specified by:
createATN
in interfaceATNFactory
- Overrides:
createATN
in classParserATNFactory
-
rule
public ATNFactory.Handle rule(GrammarAST ruleAST, java.lang.String name, ATNFactory.Handle blk)
- Specified by:
rule
in interfaceATNFactory
- Overrides:
rule
in classParserATNFactory
-
action
public ATNFactory.Handle action(ActionAST action)
Description copied from class:ParserATNFactory
Build what amounts to an epsilon transition with an action. The action goes into ATN though it is ignored during prediction ifactionIndex
<0
.- Specified by:
action
in interfaceATNFactory
- Overrides:
action
in classParserATNFactory
-
getLexerActionIndex
protected int getLexerActionIndex(LexerAction lexerAction)
-
action
public ATNFactory.Handle action(java.lang.String action)
- Specified by:
action
in interfaceATNFactory
- Overrides:
action
in classParserATNFactory
-
action
protected ATNFactory.Handle action(GrammarAST node, LexerAction lexerAction)
-
lexerAltCommands
public ATNFactory.Handle lexerAltCommands(ATNFactory.Handle alt, ATNFactory.Handle cmds)
- Specified by:
lexerAltCommands
in interfaceATNFactory
- Overrides:
lexerAltCommands
in classParserATNFactory
-
lexerCallCommand
public ATNFactory.Handle lexerCallCommand(GrammarAST ID, GrammarAST arg)
- Specified by:
lexerCallCommand
in interfaceATNFactory
- Overrides:
lexerCallCommand
in classParserATNFactory
-
lexerCommand
public ATNFactory.Handle lexerCommand(GrammarAST ID)
- Specified by:
lexerCommand
in interfaceATNFactory
- Overrides:
lexerCommand
in classParserATNFactory
-
range
public ATNFactory.Handle range(GrammarAST a, GrammarAST b)
Description copied from class:ParserATNFactory
Not valid for non-lexers.- Specified by:
range
in interfaceATNFactory
- Overrides:
range
in classParserATNFactory
-
set
public ATNFactory.Handle set(GrammarAST associatedAST, java.util.List<GrammarAST> alts, boolean invert)
Description copied from class:ParserATNFactory
From set build single edge grapho->o-set->o
. To conform to what an alt block looks like, must have extra state on left. This also handles~A
, converted to~{A}
set.- Specified by:
set
in interfaceATNFactory
- Overrides:
set
in classParserATNFactory
-
checkRange
protected boolean checkRange(GrammarAST leftNode, GrammarAST rightNode, int leftValue, int rightValue)
-
stringLiteral
public ATNFactory.Handle stringLiteral(TerminalAST stringLiteralAST)
For a lexer, a string is a sequence of char to match. That is, "fog" is treated as 'f' 'o' 'g' not as a single transition in the DFA. Machine== o-'f'->o-'o'->o-'g'->o and has n+1 states for n characters.- Specified by:
stringLiteral
in interfaceATNFactory
- Overrides:
stringLiteral
in classParserATNFactory
-
charSetLiteral
public ATNFactory.Handle charSetLiteral(GrammarAST charSetAST)
[Aa\t ሴa-z\]\p{Letter}\-] char sets- Specified by:
charSetLiteral
in interfaceATNFactory
- Overrides:
charSetLiteral
in classParserATNFactory
-
getSetFromCharSetLiteral
public IntervalSet getSetFromCharSetLiteral(GrammarAST charSetAST)
-
applyPrevStateAndMoveToCodePoint
private LexerATNFactory.CharSetParseState applyPrevStateAndMoveToCodePoint(GrammarAST charSetAST, IntervalSet set, LexerATNFactory.CharSetParseState state, int codePoint)
-
applyPrevStateAndMoveToProperty
private LexerATNFactory.CharSetParseState applyPrevStateAndMoveToProperty(GrammarAST charSetAST, IntervalSet set, LexerATNFactory.CharSetParseState state, IntervalSet property)
-
applyPrevState
private void applyPrevState(GrammarAST charSetAST, IntervalSet set, LexerATNFactory.CharSetParseState state)
-
checkSetCollision
protected void checkSetCollision(GrammarAST ast, IntervalSet set, int el)
-
checkSetCollision
protected void checkSetCollision(GrammarAST ast, IntervalSet set, int a, int b)
-
tokenRef
public ATNFactory.Handle tokenRef(TerminalAST node)
Description copied from class:ParserATNFactory
From labelA
build grapho-A->o
.- Specified by:
tokenRef
in interfaceATNFactory
- Overrides:
tokenRef
in classParserATNFactory
-
createLexerAction
private LexerAction createLexerAction(GrammarAST ID, GrammarAST arg)
-
checkCommands
private void checkCommands(java.lang.String command, org.antlr.runtime.Token commandToken)
-
getModeConstantValue
private java.lang.Integer getModeConstantValue(java.lang.String modeName, org.antlr.runtime.Token token)
-
getTokenConstantValue
private java.lang.Integer getTokenConstantValue(java.lang.String tokenName, org.antlr.runtime.Token token)
-
getChannelConstantValue
private java.lang.Integer getChannelConstantValue(java.lang.String channelName, org.antlr.runtime.Token token)
-
-