All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.jknack.handlebars.internal.HbsLexer Maven / Gradle / Ivy

There is a newer version: 4.4.0
Show newest version
// 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