Class STLexer
java.lang.Object
org.stringtemplate.v4.compiler.STLexer
- All Implemented Interfaces:
org.antlr.runtime.TokenSource
This class represents the tokenizer for templates. It operates in two modes:
inside and outside of expressions. It implements the
TokenSource
interface so it can be used with ANTLR parsers. Outside of expressions, we
can return these token types: TEXT, INDENT, LDELIM
(start of expression), RCURLY (end of subtemplate), and
NEWLINE. Inside of an expression, this lexer returns all of the
tokens needed by STParser. From the parser's point of view, it can
treat a template as a simple stream of elements.
This class defines the token types and communicates these values to
STParser.g via STLexer.tokens file (which must remain
consistent).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classWe buildSTTokentokens instead of relying onCommonTokenso we can overrideSTLexer.STToken.toString(). -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final charstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final org.antlr.runtime.Tokenstatic final intstatic final intintTo be able to properly track the inside/outside mode, we need to track how deeply nested we are in some templates.static final intstatic final intstatic final int -
Constructor Summary
ConstructorsConstructorDescriptionSTLexer(org.antlr.runtime.CharStream input) STLexer(ErrorManager errMgr, org.antlr.runtime.CharStream input, org.antlr.runtime.Token templateToken) STLexer(ErrorManager errMgr, org.antlr.runtime.CharStream input, org.antlr.runtime.Token templateToken, char delimiterStartChar, char delimiterStopChar) -
Method Summary
Modifier and TypeMethodDescriptionorg.antlr.runtime.Tokenprotected voidconsume()voidemit(org.antlr.runtime.Token token) protected org.antlr.runtime.Tokeninside()static booleanisIDLetter(char c) static booleanisIDStartLetter(char c) static booleanisUnicodeLetter(char c) static booleanisWS(char c) voidmatch(char x) Consume ifxis next character on the input stream.org.antlr.runtime.TokennewToken(int ttype) org.antlr.runtime.Tokenorg.antlr.runtime.Tokenorg.antlr.runtime.TokennewTokenFromPreviousChar(int ttype) org.antlr.runtime.Tokenprotected org.antlr.runtime.Tokenoutside()static Stringstr(int c)
-
Field Details
-
EOF
public static final char EOF- See Also:
-
EOF_TYPE
public static final int EOF_TYPE- See Also:
-
SKIP
public static final org.antlr.runtime.Token SKIP -
RBRACK
public static final int RBRACK- See Also:
-
LBRACK
public static final int LBRACK- See Also:
-
ELSE
public static final int ELSE- See Also:
-
ELLIPSIS
public static final int ELLIPSIS- See Also:
-
LCURLY
public static final int LCURLY- See Also:
-
BANG
public static final int BANG- See Also:
-
EQUALS
public static final int EQUALS- See Also:
-
TEXT
public static final int TEXT- See Also:
-
ID
public static final int ID- See Also:
-
SEMI
public static final int SEMI- See Also:
-
LPAREN
public static final int LPAREN- See Also:
-
IF
public static final int IF- See Also:
-
ELSEIF
public static final int ELSEIF- See Also:
-
COLON
public static final int COLON- See Also:
-
RPAREN
public static final int RPAREN- See Also:
-
COMMA
public static final int COMMA- See Also:
-
RCURLY
public static final int RCURLY- See Also:
-
ENDIF
public static final int ENDIF- See Also:
-
RDELIM
public static final int RDELIM- See Also:
-
SUPER
public static final int SUPER- See Also:
-
DOT
public static final int DOT- See Also:
-
LDELIM
public static final int LDELIM- See Also:
-
STRING
public static final int STRING- See Also:
-
PIPE
public static final int PIPE- See Also:
-
OR
public static final int OR- See Also:
-
AND
public static final int AND- See Also:
-
INDENT
public static final int INDENT- See Also:
-
NEWLINE
public static final int NEWLINE- See Also:
-
AT
public static final int AT- See Also:
-
REGION_END
public static final int REGION_END- See Also:
-
TRUE
public static final int TRUE- See Also:
-
FALSE
public static final int FALSE- See Also:
-
COMMENT
public static final int COMMENT- See Also:
-
SLASH
public static final int SLASH- See Also:
-
subtemplateDepth
public int subtemplateDepthTo be able to properly track the inside/outside mode, we need to track how deeply nested we are in some templates. Otherwise, we know whether a'}'and the outermost subtemplate to send this back to outside mode.
-
-
Constructor Details
-
STLexer
public STLexer(org.antlr.runtime.CharStream input) -
STLexer
public STLexer(ErrorManager errMgr, org.antlr.runtime.CharStream input, org.antlr.runtime.Token templateToken) -
STLexer
public STLexer(ErrorManager errMgr, org.antlr.runtime.CharStream input, org.antlr.runtime.Token templateToken, char delimiterStartChar, char delimiterStopChar)
-
-
Method Details
-
nextToken
public org.antlr.runtime.Token nextToken()- Specified by:
nextTokenin interfaceorg.antlr.runtime.TokenSource
-
match
public void match(char x) Consume ifxis next character on the input stream. -
consume
protected void consume() -
emit
public void emit(org.antlr.runtime.Token token) -
_nextToken
public org.antlr.runtime.Token _nextToken() -
outside
protected org.antlr.runtime.Token outside() -
inside
protected org.antlr.runtime.Token inside() -
isIDStartLetter
public static boolean isIDStartLetter(char c) -
isIDLetter
public static boolean isIDLetter(char c) -
isWS
public static boolean isWS(char c) -
isUnicodeLetter
public static boolean isUnicodeLetter(char c) -
newToken
public org.antlr.runtime.Token newToken(int ttype) -
newTokenFromPreviousChar
public org.antlr.runtime.Token newTokenFromPreviousChar(int ttype) -
newToken
-
newToken
-
getSourceName
- Specified by:
getSourceNamein interfaceorg.antlr.runtime.TokenSource
-
str
-