
com.github.jknack.handlebars.internal.HbsLexer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of handlebars Show documentation
Show all versions of handlebars Show documentation
Logic-less and semantic templates with Java
// Generated from com/github/jknack/handlebars/internal/HbsLexer.g4 by ANTLR 4.5.1
package com.github.jknack.handlebars.internal;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.misc.*;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class HbsLexer extends Lexer {
static { RuntimeMetaData.checkVersion("4.5.1", RuntimeMetaData.VERSION); }
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
ESC_VAR=1, TEXT=2, COMMENT=3, START_AMP=4, END_RAW_BLOCK=5, START_RAW=6,
START_T=7, UNLESS=8, START_PARTIAL_BLOCK=9, START_BLOCK=10, START_DELIM=11,
START_PARTIAL=12, END_BLOCK=13, START=14, SPACE=15, NL=16, END_DELIM=17,
WS_DELIM=18, DELIM=19, RAW_SPACE=20, RAW_CONTENT=21, END_RAW=22, END_T=23,
END=24, DECORATOR=25, AS=26, PIPE=27, DOUBLE_STRING=28, SINGLE_STRING=29,
EQ=30, INT=31, BOOLEAN=32, ELSE=33, QID=34, PATH=35, LP=36, RP=37, WS=38;
public static final int SET_DELIMS = 1;
public static final int RAW = 2;
public static final int VAR = 3;
public static String[] modeNames = {
"DEFAULT_MODE", "SET_DELIMS", "RAW", "VAR"
};
public static final String[] ruleNames = {
"ESC_VAR", "TEXT", "COMMENT", "START_AMP", "END_RAW_BLOCK", "START_RAW",
"START_T", "UNLESS", "START_PARTIAL_BLOCK", "START_BLOCK", "START_DELIM",
"START_PARTIAL", "END_BLOCK", "START", "SPACE", "NL", "END_DELIM", "WS_DELIM",
"DELIM", "RAW_SPACE", "RAW_CONTENT", "END_RAW", "END_T", "END", "DECORATOR",
"AS", "PIPE", "DOUBLE_STRING", "SINGLE_STRING", "EQ", "INT", "BOOLEAN",
"ELSE", "QID", "PATH", "PATH_SEGMENT", "ID_SEPARATOR", "ID", "ID_START",
"ID_SUFFIX", "ID_ESCAPE", "ID_PART", "LP", "RP", "WS"
};
private static final String[] _LITERAL_NAMES = {
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, "'*'", "'as'", "'|'", null, null, "'='", null, null, null, null,
null, "'('", "')'"
};
private static final String[] _SYMBOLIC_NAMES = {
null, "ESC_VAR", "TEXT", "COMMENT", "START_AMP", "END_RAW_BLOCK", "START_RAW",
"START_T", "UNLESS", "START_PARTIAL_BLOCK", "START_BLOCK", "START_DELIM",
"START_PARTIAL", "END_BLOCK", "START", "SPACE", "NL", "END_DELIM", "WS_DELIM",
"DELIM", "RAW_SPACE", "RAW_CONTENT", "END_RAW", "END_T", "END", "DECORATOR",
"AS", "PIPE", "DOUBLE_STRING", "SINGLE_STRING", "EQ", "INT", "BOOLEAN",
"ELSE", "QID", "PATH", "LP", "RP", "WS"
};
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
/**
* @deprecated Use {@link #VOCABULARY} instead.
*/
@Deprecated
public static final String[] tokenNames;
static {
tokenNames = new String[_SYMBOLIC_NAMES.length];
for (int i = 0; i < tokenNames.length; i++) {
tokenNames[i] = VOCABULARY.getLiteralName(i);
if (tokenNames[i] == null) {
tokenNames[i] = VOCABULARY.getSymbolicName(i);
}
if (tokenNames[i] == null) {
tokenNames[i] = "";
}
}
}
@Override
@Deprecated
public String[] getTokenNames() {
return tokenNames;
}
@Override
public Vocabulary getVocabulary() {
return VOCABULARY;
}
// Some default values
String start = "{{";
String end = "}}";
boolean whiteSpaceControl;
public HbsLexer(CharStream input, String start, String end) {
this(input);
this.start = start;
this.end = end;
}
private boolean isWhite(int ch) {
return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n';
}
private boolean consumeUntil(final String token) {
int offset = 0;
while(!isEOF(offset) && !(ahead("\\" + token, offset) || ahead(token, offset)) &&
!isWhite(_input.LA(offset + 1))) {
offset+=1;
}
if (offset == 0) {
return false;
}
// Since we found the text, increase the CharStream's index.
_input.seek(_input.index() + offset - 1);
getInterpreter().setCharPositionInLine(_tokenStartCharPositionInLine + offset - 1);
return true;
}
private boolean comment(final String start, final String end) {
String commentClose;
if (ahead(start + "!--")) {
commentClose = "--" + end;
} else if (ahead(start + "!")) {
commentClose = end;
} else {
return false;
}
int offset = 0;
while (!isEOF(offset)) {
if (ahead(commentClose, offset)) {
break;
}
offset += 1;
}
offset += commentClose.length();
// Since we found the text, increase the CharStream's index.
_input.seek(_input.index() + offset - 1);
getInterpreter().setCharPositionInLine(_tokenStartCharPositionInLine + offset - 1);
return true;
}
private boolean varEscape(final String start, final String end) {
if (ahead("\\" + start)) {
int offset = start.length();
while (!isEOF(offset)) {
if (ahead(end, offset)) {
break;
}
if (ahead(start, offset)) {
return false;
}
offset += 1;
}
offset += end.length();
// Since we found the text, increase the CharStream's index.
_input.seek(_input.index() + offset - 1);
getInterpreter().setCharPositionInLine(_tokenStartCharPositionInLine + offset - 1);
return true;
}
return false;
}
private boolean startToken(final String delim) {
boolean matches = tryToken(delim + "~");
if (matches) {
whiteSpaceControl = true;
}
return matches || tryToken(delim);
}
private boolean startToken(final String delim, String subtype) {
boolean matches = tryToken(delim + subtype);
if (!matches) {
matches = tryToken(delim + "~" + subtype);
if (matches) {
whiteSpaceControl = true;
}
}
return matches;
}
private boolean endToken(final String delim) {
return endToken(delim, "");
}
private boolean endToken(final String delim, String subtype) {
boolean matches = tryToken(subtype + delim);
if (!matches) {
matches = tryToken(subtype + "~" + delim);
if (matches) {
whiteSpaceControl = true;
}
}
return matches;
}
private boolean tryToken(final String text) {
if (ahead(text)) {
// Since we found the text, increase the CharStream's index.
_input.seek(_input.index() + text.length() - 1);
getInterpreter().setCharPositionInLine(_tokenStartCharPositionInLine + text.length() - 1);
return true;
}
return false;
}
private boolean isEOF(final int offset) {
return _input.LA(offset + 1) == EOF;
}
private boolean ahead(final String text) {
return ahead(text, 0);
}
private boolean ahead(final String text, int offset) {
// See if `text` is ahead in the CharStream.
for (int i = 0; i < text.length(); i++) {
int ch = _input.LA(i + offset + 1);
if (ch != text.charAt(i)) {
// Nope, we didn't find `text`.
return false;
}
}
return true;
}
public HbsLexer(CharStream input) {
super(input);
_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
}
@Override
public String getGrammarFileName() { return "HbsLexer.g4"; }
@Override
public String[] getRuleNames() { return ruleNames; }
@Override
public String getSerializedATN() { return _serializedATN; }
@Override
public String[] getModeNames() { return modeNames; }
@Override
public ATN getATN() { return _ATN; }
@Override
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
case 0:
return ESC_VAR_sempred((RuleContext)_localctx, predIndex);
case 1:
return TEXT_sempred((RuleContext)_localctx, predIndex);
case 2:
return COMMENT_sempred((RuleContext)_localctx, predIndex);
case 3:
return START_AMP_sempred((RuleContext)_localctx, predIndex);
case 4:
return END_RAW_BLOCK_sempred((RuleContext)_localctx, predIndex);
case 5:
return START_RAW_sempred((RuleContext)_localctx, predIndex);
case 6:
return START_T_sempred((RuleContext)_localctx, predIndex);
case 7:
return UNLESS_sempred((RuleContext)_localctx, predIndex);
case 8:
return START_PARTIAL_BLOCK_sempred((RuleContext)_localctx, predIndex);
case 9:
return START_BLOCK_sempred((RuleContext)_localctx, predIndex);
case 10:
return START_DELIM_sempred((RuleContext)_localctx, predIndex);
case 11:
return START_PARTIAL_sempred((RuleContext)_localctx, predIndex);
case 12:
return END_BLOCK_sempred((RuleContext)_localctx, predIndex);
case 13:
return START_sempred((RuleContext)_localctx, predIndex);
case 16:
return END_DELIM_sempred((RuleContext)_localctx, predIndex);
case 20:
return RAW_CONTENT_sempred((RuleContext)_localctx, predIndex);
case 21:
return END_RAW_sempred((RuleContext)_localctx, predIndex);
case 22:
return END_T_sempred((RuleContext)_localctx, predIndex);
case 23:
return END_sempred((RuleContext)_localctx, predIndex);
}
return true;
}
private boolean ESC_VAR_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 0:
return varEscape(start, end);
}
return true;
}
private boolean TEXT_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 1:
return consumeUntil(start);
}
return true;
}
private boolean COMMENT_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 2:
return comment(start, end);
}
return true;
}
private boolean START_AMP_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 3:
return startToken(start, "&");
}
return true;
}
private boolean END_RAW_BLOCK_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 4:
return startToken(start, "{{/");
}
return true;
}
private boolean START_RAW_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 5:
return startToken(start, "{{");
}
return true;
}
private boolean START_T_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 6:
return startToken(start, "{");
}
return true;
}
private boolean UNLESS_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 7:
return startToken(start, "^");
}
return true;
}
private boolean START_PARTIAL_BLOCK_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 8:
return startToken(start, "#>");
}
return true;
}
private boolean START_BLOCK_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 9:
return startToken(start, "#");
}
return true;
}
private boolean START_DELIM_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 10:
return startToken(start, "=");
}
return true;
}
private boolean START_PARTIAL_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 11:
return startToken(start, ">");
}
return true;
}
private boolean END_BLOCK_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 12:
return startToken(start, "/");
}
return true;
}
private boolean START_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 13:
return startToken(start);
}
return true;
}
private boolean END_DELIM_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 14:
return endToken("=" + end);
}
return true;
}
private boolean RAW_CONTENT_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 15:
return consumeUntil(start + "{{/");
}
return true;
}
private boolean END_RAW_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 16:
return endToken(end, "}}");
}
return true;
}
private boolean END_T_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 17:
return endToken(end, "}");
}
return true;
}
private boolean END_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 18:
return endToken(end);
}
return true;
}
public static final String _serializedATN =
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2(\u015e\b\1\b\1\b"+
"\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t"+
"\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21"+
"\t\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30"+
"\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37"+
"\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)"+
"\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\3\2\3\2\3\2\3\3\3\3\3\3\3\4\3\4\3\4\3\5"+
"\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3"+
"\b\3\b\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13"+
"\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\17"+
"\3\17\3\17\3\17\3\17\3\20\6\20\u00a2\n\20\r\20\16\20\u00a3\3\21\5\21\u00a7"+
"\n\21\3\21\3\21\5\21\u00ab\n\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\24"+
"\3\24\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\30"+
"\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\33\3\33\3\33"+
"\3\34\3\34\3\35\3\35\3\35\3\35\7\35\u00d7\n\35\f\35\16\35\u00da\13\35"+
"\3\35\3\35\3\36\3\36\3\36\3\36\7\36\u00e2\n\36\f\36\16\36\u00e5\13\36"+
"\3\36\3\36\3\37\3\37\3 \5 \u00ec\n \3 \6 \u00ef\n \r \16 \u00f0\3!\3!"+
"\3!\3!\3!\3!\3!\3!\3!\5!\u00fc\n!\3\"\5\"\u00ff\n\"\3\"\3\"\3\"\3\"\3"+
"\"\3\"\5\"\u0107\n\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3"+
"#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\5#\u0124\n#\3$\3$\3$\3$\3$\5$\u012b\n"+
"$\3%\6%\u012e\n%\r%\16%\u012f\3&\3&\3\'\3\'\7\'\u0136\n\'\f\'\16\'\u0139"+
"\13\'\3\'\3\'\7\'\u013d\n\'\f\'\16\'\u0140\13\'\5\'\u0142\n\'\3(\3(\3"+
")\3)\3)\3)\3)\5)\u014b\n)\3*\3*\6*\u014f\n*\r*\16*\u0150\3*\3*\3+\3+\3"+
",\3,\3-\3-\3.\3.\3.\3.\5\u00d8\u00e3\u0150\2/\6\3\b\4\n\5\f\6\16\7\20"+
"\b\22\t\24\n\26\13\30\f\32\r\34\16\36\17 \20\"\21$\22&\23(\24*\25,\26"+
".\27\60\30\62\31\64\32\66\338\34:\35<\36>\37@ B!D\"F#H$J%L\2N\2P\2R\2"+
"T\2V\2X\2Z&\\\'^(\6\2\3\4\5\n\4\2\13\13\"\"\5\2\13\f\17\17\"\"\3\2\f\f"+
"\3\2\62;\b\2&&))/\3\2\2"+
"\2\5@\3\2\2\2\5B\3\2\2\2\5D\3\2\2\2\5F\3\2\2\2\5H\3\2\2\2\5J\3\2\2\2\5"+
"Z\3\2\2\2\5\\\3\2\2\2\5^\3\2\2\2\6`\3\2\2\2\bc\3\2\2\2\nf\3\2\2\2\fi\3"+
"\2\2\2\16n\3\2\2\2\20s\3\2\2\2\22x\3\2\2\2\24}\3\2\2\2\26\u0082\3\2\2"+
"\2\30\u0087\3\2\2\2\32\u008c\3\2\2\2\34\u0091\3\2\2\2\36\u0096\3\2\2\2"+
" \u009b\3\2\2\2\"\u00a1\3\2\2\2$\u00aa\3\2\2\2&\u00ac\3\2\2\2(\u00b1\3"+
"\2\2\2*\u00b3\3\2\2\2,\u00b5\3\2\2\2.\u00b7\3\2\2\2\60\u00bc\3\2\2\2\62"+
"\u00c1\3\2\2\2\64\u00c6\3\2\2\2\66\u00cb\3\2\2\28\u00cd\3\2\2\2:\u00d0"+
"\3\2\2\2<\u00d2\3\2\2\2>\u00dd\3\2\2\2@\u00e8\3\2\2\2B\u00eb\3\2\2\2D"+
"\u00fb\3\2\2\2F\u00fe\3\2\2\2H\u0123\3\2\2\2J\u012a\3\2\2\2L\u012d\3\2"+
"\2\2N\u0131\3\2\2\2P\u0141\3\2\2\2R\u0143\3\2\2\2T\u014a\3\2\2\2V\u014c"+
"\3\2\2\2X\u0154\3\2\2\2Z\u0156\3\2\2\2\\\u0158\3\2\2\2^\u015a\3\2\2\2"+
"`a\6\2\2\2ab\13\2\2\2b\7\3\2\2\2cd\6\3\3\2de\13\2\2\2e\t\3\2\2\2fg\6\4"+
"\4\2gh\13\2\2\2h\13\3\2\2\2ij\6\5\5\2jk\13\2\2\2kl\3\2\2\2lm\b\5\2\2m"+
"\r\3\2\2\2no\6\6\6\2op\13\2\2\2pq\3\2\2\2qr\b\6\2\2r\17\3\2\2\2st\6\7"+
"\7\2tu\13\2\2\2uv\3\2\2\2vw\b\7\2\2w\21\3\2\2\2xy\6\b\b\2yz\13\2\2\2z"+
"{\3\2\2\2{|\b\b\2\2|\23\3\2\2\2}~\6\t\t\2~\177\13\2\2\2\177\u0080\3\2"+
"\2\2\u0080\u0081\b\t\2\2\u0081\25\3\2\2\2\u0082\u0083\6\n\n\2\u0083\u0084"+
"\13\2\2\2\u0084\u0085\3\2\2\2\u0085\u0086\b\n\2\2\u0086\27\3\2\2\2\u0087"+
"\u0088\6\13\13\2\u0088\u0089\13\2\2\2\u0089\u008a\3\2\2\2\u008a\u008b"+
"\b\13\2\2\u008b\31\3\2\2\2\u008c\u008d\6\f\f\2\u008d\u008e\13\2\2\2\u008e"+
"\u008f\3\2\2\2\u008f\u0090\b\f\3\2\u0090\33\3\2\2\2\u0091\u0092\6\r\r"+
"\2\u0092\u0093\13\2\2\2\u0093\u0094\3\2\2\2\u0094\u0095\b\r\2\2\u0095"+
"\35\3\2\2\2\u0096\u0097\6\16\16\2\u0097\u0098\13\2\2\2\u0098\u0099\3\2"+
"\2\2\u0099\u009a\b\16\2\2\u009a\37\3\2\2\2\u009b\u009c\6\17\17\2\u009c"+
"\u009d\13\2\2\2\u009d\u009e\3\2\2\2\u009e\u009f\b\17\2\2\u009f!\3\2\2"+
"\2\u00a0\u00a2\t\2\2\2\u00a1\u00a0\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00a1"+
"\3\2\2\2\u00a3\u00a4\3\2\2\2\u00a4#\3\2\2\2\u00a5\u00a7\7\17\2\2\u00a6"+
"\u00a5\3\2\2\2\u00a6\u00a7\3\2\2\2\u00a7\u00a8\3\2\2\2\u00a8\u00ab\7\f"+
"\2\2\u00a9\u00ab\7\17\2\2\u00aa\u00a6\3\2\2\2\u00aa\u00a9\3\2\2\2\u00ab"+
"%\3\2\2\2\u00ac\u00ad\6\22\20\2\u00ad\u00ae\13\2\2\2\u00ae\u00af\3\2\2"+
"\2\u00af\u00b0\b\22\4\2\u00b0\'\3\2\2\2\u00b1\u00b2\t\3\2\2\u00b2)\3\2"+
"\2\2\u00b3\u00b4\13\2\2\2\u00b4+\3\2\2\2\u00b5\u00b6\t\3\2\2\u00b6-\3"+
"\2\2\2\u00b7\u00b8\6\26\21\2\u00b8\u00b9\13\2\2\2\u00b9\u00ba\3\2\2\2"+
"\u00ba\u00bb\b\26\4\2\u00bb/\3\2\2\2\u00bc\u00bd\6\27\22\2\u00bd\u00be"+
"\13\2\2\2\u00be\u00bf\3\2\2\2\u00bf\u00c0\b\27\5\2\u00c0\61\3\2\2\2\u00c1"+
"\u00c2\6\30\23\2\u00c2\u00c3\13\2\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c5"+
"\b\30\4\2\u00c5\63\3\2\2\2\u00c6\u00c7\6\31\24\2\u00c7\u00c8\13\2\2\2"+
"\u00c8\u00c9\3\2\2\2\u00c9\u00ca\b\31\6\2\u00ca\65\3\2\2\2\u00cb\u00cc"+
"\7,\2\2\u00cc\67\3\2\2\2\u00cd\u00ce\7c\2\2\u00ce\u00cf\7u\2\2\u00cf9"+
"\3\2\2\2\u00d0\u00d1\7~\2\2\u00d1;\3\2\2\2\u00d2\u00d8\7$\2\2\u00d3\u00d4"+
"\7^\2\2\u00d4\u00d7\7$\2\2\u00d5\u00d7\n\4\2\2\u00d6\u00d3\3\2\2\2\u00d6"+
"\u00d5\3\2\2\2\u00d7\u00da\3\2\2\2\u00d8\u00d9\3\2\2\2\u00d8\u00d6\3\2"+
"\2\2\u00d9\u00db\3\2\2\2\u00da\u00d8\3\2\2\2\u00db\u00dc\7$\2\2\u00dc"+
"=\3\2\2\2\u00dd\u00e3\7)\2\2\u00de\u00df\7^\2\2\u00df\u00e2\7)\2\2\u00e0"+
"\u00e2\n\4\2\2\u00e1\u00de\3\2\2\2\u00e1\u00e0\3\2\2\2\u00e2\u00e5\3\2"+
"\2\2\u00e3\u00e4\3\2\2\2\u00e3\u00e1\3\2\2\2\u00e4\u00e6\3\2\2\2\u00e5"+
"\u00e3\3\2\2\2\u00e6\u00e7\7)\2\2\u00e7?\3\2\2\2\u00e8\u00e9\7?\2\2\u00e9"+
"A\3\2\2\2\u00ea\u00ec\7/\2\2\u00eb\u00ea\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec"+
"\u00ee\3\2\2\2\u00ed\u00ef\t\5\2\2\u00ee\u00ed\3\2\2\2\u00ef\u00f0\3\2"+
"\2\2\u00f0\u00ee\3\2\2\2\u00f0\u00f1\3\2\2\2\u00f1C\3\2\2\2\u00f2\u00f3"+
"\7v\2\2\u00f3\u00f4\7t\2\2\u00f4\u00f5\7w\2\2\u00f5\u00fc\7g\2\2\u00f6"+
"\u00f7\7h\2\2\u00f7\u00f8\7c\2\2\u00f8\u00f9\7n\2\2\u00f9\u00fa\7u\2\2"+
"\u00fa\u00fc\7g\2\2\u00fb\u00f2\3\2\2\2\u00fb\u00f6\3\2\2\2\u00fcE\3\2"+
"\2\2\u00fd\u00ff\7\u0080\2\2\u00fe\u00fd\3\2\2\2\u00fe\u00ff\3\2\2\2\u00ff"+
"\u0100\3\2\2\2\u0100\u0101\7g\2\2\u0101\u0102\7n\2\2\u0102\u0103\7u\2"+
"\2\u0103\u0104\7g\2\2\u0104\u0106\3\2\2\2\u0105\u0107\7\u0080\2\2\u0106"+
"\u0105\3\2\2\2\u0106\u0107\3\2\2\2\u0107G\3\2\2\2\u0108\u0109\7\60\2\2"+
"\u0109\u010a\7\60\2\2\u010a\u010b\7\61\2\2\u010b\u010c\3\2\2\2\u010c\u0124"+
"\5H#\2\u010d\u010e\7\60\2\2\u010e\u0124\7\60\2\2\u010f\u0110\7\60\2\2"+
"\u0110\u0111\7\61\2\2\u0111\u0112\3\2\2\2\u0112\u0124\5H#\2\u0113\u0124"+
"\7\60\2\2\u0114\u0115\7]\2\2\u0115\u0116\5P\'\2\u0116\u0117\7_\2\2\u0117"+
"\u0118\5N&\2\u0118\u0119\5H#\2\u0119\u0124\3\2\2\2\u011a\u011b\7]\2\2"+
"\u011b\u011c\5P\'\2\u011c\u011d\7_\2\2\u011d\u0124\3\2\2\2\u011e\u011f"+
"\5P\'\2\u011f\u0120\5N&\2\u0120\u0121\5H#\2\u0121\u0124\3\2\2\2\u0122"+
"\u0124\5P\'\2\u0123\u0108\3\2\2\2\u0123\u010d\3\2\2\2\u0123\u010f\3\2"+
"\2\2\u0123\u0113\3\2\2\2\u0123\u0114\3\2\2\2\u0123\u011a\3\2\2\2\u0123"+
"\u011e\3\2\2\2\u0123\u0122\3\2\2\2\u0124I\3\2\2\2\u0125\u0126\7]\2\2\u0126"+
"\u0127\5L%\2\u0127\u0128\7_\2\2\u0128\u012b\3\2\2\2\u0129\u012b\5L%\2"+
"\u012a\u0125\3\2\2\2\u012a\u0129\3\2\2\2\u012bK\3\2\2\2\u012c\u012e\t"+
"\6\2\2\u012d\u012c\3\2\2\2\u012e\u012f\3\2\2\2\u012f\u012d\3\2\2\2\u012f"+
"\u0130\3\2\2\2\u0130M\3\2\2\2\u0131\u0132\4/\61\2\u0132O\3\2\2\2\u0133"+
"\u0137\5R(\2\u0134\u0136\5T)\2\u0135\u0134\3\2\2\2\u0136\u0139\3\2\2\2"+
"\u0137\u0135\3\2\2\2\u0137\u0138\3\2\2\2\u0138\u0142\3\2\2\2\u0139\u0137"+
"\3\2\2\2\u013a\u013e\5V*\2\u013b\u013d\5T)\2\u013c\u013b\3\2\2\2\u013d"+
"\u0140\3\2\2\2\u013e\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0142\3\2"+
"\2\2\u0140\u013e\3\2\2\2\u0141\u0133\3\2\2\2\u0141\u013a\3\2\2\2\u0142"+
"Q\3\2\2\2\u0143\u0144\t\7\2\2\u0144S\3\2\2\2\u0145\u0146\7\60\2\2\u0146"+
"\u014b\5V*\2\u0147\u014b\5R(\2\u0148\u014b\5X+\2\u0149\u014b\7/\2\2\u014a"+
"\u0145\3\2\2\2\u014a\u0147\3\2\2\2\u014a\u0148\3\2\2\2\u014a\u0149\3\2"+
"\2\2\u014bU\3\2\2\2\u014c\u014e\7]\2\2\u014d\u014f\n\b\2\2\u014e\u014d"+
"\3\2\2\2\u014f\u0150\3\2\2\2\u0150\u0151\3\2\2\2\u0150\u014e\3\2\2\2\u0151"+
"\u0152\3\2\2\2\u0152\u0153\7_\2\2\u0153W\3\2\2\2\u0154\u0155\t\t\2\2\u0155"+
"Y\3\2\2\2\u0156\u0157\7*\2\2\u0157[\3\2\2\2\u0158\u0159\7+\2\2\u0159]"+
"\3\2\2\2\u015a\u015b\t\3\2\2\u015b\u015c\3\2\2\2\u015c\u015d\b.\7\2\u015d"+
"_\3\2\2\2\32\2\3\4\5\u00a3\u00a6\u00aa\u00d6\u00d8\u00e1\u00e3\u00eb\u00f0"+
"\u00fb\u00fe\u0106\u0123\u012a\u012f\u0137\u013e\u0141\u014a\u0150\b\7"+
"\5\2\7\3\2\6\2\2\4\4\2\4\2\2\b\2\2";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy