initial commit

This commit is contained in:
CaiHQ
2021-09-24 13:08:25 +08:00
parent 016d019bc7
commit ef46d1ac4c
338 changed files with 72735 additions and 1 deletions

View File

@@ -0,0 +1,118 @@
package org.bdware.sc.parser;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.Token;
import java.util.Stack;
public abstract class JavaScriptBaseLexer extends Lexer {
/**
* Stores values of nested modes. By default mode is strict or
* defined externally (useStrictDefault)
*/
private final Stack<Boolean> scopeStrictModes = new Stack<>();
private Token lastToken = null;
/**
* Default value of strict mode
* Can be defined externally by setUseStrictDefault
*/
private boolean useStrictDefault = false;
/**
* Current value of strict mode
* Can be defined during parsing, see StringFunctions.js and StringGlobal.js samples
*/
private boolean useStrictCurrent = false;
public JavaScriptBaseLexer(CharStream input) {
super(input);
}
public boolean getStrictDefault() {
return useStrictDefault;
}
public void setUseStrictDefault(boolean value) {
useStrictDefault = value;
useStrictCurrent = value;
}
public boolean IsStrictMode() {
return useStrictCurrent;
}
/**
* Return the next token from the character stream and records this last
* token in case it resides on the default channel. This recorded token
* is used to determine when the lexer could possibly match a regex
* literal. Also changes scopeStrictModes stack if tokenize special
* string 'use strict';
*
* @return the next token from the character stream.
*/
@Override
public Token nextToken() {
Token next = super.nextToken();
if (next.getChannel() == Token.DEFAULT_CHANNEL) {
// Keep track of the last token on the default channel.
this.lastToken = next;
}
return next;
}
protected void ProcessOpenBrace() {
useStrictCurrent = scopeStrictModes.size() > 0 && scopeStrictModes.peek() || useStrictDefault;
scopeStrictModes.push(useStrictCurrent);
}
protected void ProcessCloseBrace() {
useStrictCurrent = scopeStrictModes.size() > 0 ? scopeStrictModes.pop() : useStrictDefault;
}
protected void ProcessStringLiteral() {
if (lastToken == null || lastToken.getType() == JavaScriptLexer.OpenBrace) {
String text = getText();
if (text.equals("\"use strict\"") || text.equals("'use strict'")) {
if (scopeStrictModes.size() > 0)
scopeStrictModes.pop();
useStrictCurrent = true;
scopeStrictModes.push(useStrictCurrent);
}
}
}
/**
* Returns {@code true} if the lexer can match a regex literal.
*/
protected boolean IsRegexPossible() {
if (this.lastToken == null) {
// No token has been produced yet: at the start of the input,
// no division is possible, so a regex literal _is_ possible.
return true;
}
switch (this.lastToken.getType()) {
case JavaScriptLexer.Identifier:
case JavaScriptLexer.NullLiteral:
case JavaScriptLexer.BooleanLiteral:
case JavaScriptLexer.This:
case JavaScriptLexer.CloseBracket:
case JavaScriptLexer.CloseParen:
case JavaScriptLexer.OctalIntegerLiteral:
case JavaScriptLexer.DecimalLiteral:
case JavaScriptLexer.HexIntegerLiteral:
case JavaScriptLexer.StringLiteral:
case JavaScriptLexer.PlusPlus:
case JavaScriptLexer.MinusMinus:
// After any of the tokens above, no regex literal can follow.
return false;
default:
// In all other cases, a regex literal _is_ possible.
return true;
}
}
}

View File

@@ -0,0 +1,117 @@
package org.bdware.sc.parser;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenStream;
/**
* All parser methods that used in grammar (p, prev, notLineTerminator, etc.)
* should start with lower case char similar to parser rules.
*/
public abstract class JavaScriptBaseParser extends Parser {
public JavaScriptBaseParser(TokenStream input) {
super(input);
}
/**
* Short form for prev(String str)
*/
protected boolean p(String str) {
return prev(str);
}
/**
* Whether the previous token value equals to @param str
*/
protected boolean prev(String str) {
return _input.LT(-1).getText().equals(str);
}
/**
* Short form for next(String str)
*/
protected boolean n(String str) {
return next(str);
}
/**
* Whether the next token value equals to @param str
*/
protected boolean next(String str) {
return _input.LT(1).getText().equals(str);
}
protected boolean notLineTerminator() {
return !here(YJSParser.LineTerminator);
}
protected boolean notOpenBraceAndNotFunction() {
int nextTokenType = _input.LT(1).getType();
return nextTokenType != YJSParser.OpenBrace && nextTokenType != YJSParser.Function;
}
protected boolean closeBrace() {
return _input.LT(1).getType() == YJSParser.CloseBrace;
}
/**
* Returns {@code true} iff on the current index of the parser's token stream a
* token of the given {@code type} exists on the {@code HIDDEN} channel.
*
* @param type the type of the token on the {@code HIDDEN} channel to check.
* @return {@code true} iff on the current index of the parser's token stream a
* token of the given {@code type} exists on the {@code HIDDEN} channel.
*/
private boolean here(final int type) {
// Get the token ahead of the current index.
int possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 1;
Token ahead = _input.get(possibleIndexEosToken);
// Check if the token resides on the HIDDEN channel and if it's of the
// provided type.
return (ahead.getChannel() == Lexer.HIDDEN) && (ahead.getType() == type);
}
/**
* Returns {@code true} iff on the current index of the parser's token stream a
* token exists on the {@code HIDDEN} channel which either is a line terminator,
* or is a multi line comment that contains a line terminator.
*
* @return {@code true} iff on the current index of the parser's token stream a
* token exists on the {@code HIDDEN} channel which either is a line
* terminator, or is a multi line comment that contains a line
* terminator.
*/
protected boolean lineTerminatorAhead() {
// Get the token ahead of the current index.
int possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 1;
Token ahead = _input.get(possibleIndexEosToken);
if (ahead.getChannel() != Lexer.HIDDEN) {
// We're only interested in tokens on the HIDDEN channel.
return false;
}
if (ahead.getType() == YJSParser.LineTerminator) {
// There is definitely a line terminator ahead.
return true;
}
if (ahead.getType() == YJSParser.WhiteSpaces) {
// Get the token ahead of the current whitespaces.
possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 2;
ahead = _input.get(possibleIndexEosToken);
}
// Get the token's text and type.
String text = ahead.getText();
int type = ahead.getType();
// Check if the token is, or contains a line terminator.
return (type == YJSParser.MultiLineComment && (text.contains("\r") || text.contains("\n")))
|| (type == YJSParser.LineTerminator);
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,813 @@
package org.bdware.sc.parser;// Generated from /Users/frankrwu/Workspace/JetBrains/Idea/BDContract/genparser/input/JavaScriptLexer.g4 by ANTLR 4.9.1
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.atn.ATN;
import org.antlr.v4.runtime.atn.ATNDeserializer;
import org.antlr.v4.runtime.atn.LexerATNSimulator;
import org.antlr.v4.runtime.atn.PredictionContextCache;
import org.antlr.v4.runtime.dfa.DFA;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class JavaScriptLexer extends JavaScriptBaseLexer {
public static final int
MultiLineComment = 1, SingleLineComment = 2, RegularExpressionLiteral = 3, OpenBracket = 4,
CloseBracket = 5, OpenParen = 6, CloseParen = 7, OpenBrace = 8, CloseBrace = 9,
SemiColon = 10, Comma = 11, Assign = 12, QuestionMark = 13, Colon = 14, Ellipsis = 15,
Dot = 16, PlusPlus = 17, MinusMinus = 18, Plus = 19, Minus = 20, BitNot = 21, Not = 22,
Multiply = 23, Divide = 24, Modulus = 25, RightShiftArithmetic = 26, LeftShiftArithmetic = 27,
RightShiftLogical = 28, LessThan = 29, MoreThan = 30, LessThanEquals = 31, GreaterThanEquals = 32,
Equals_ = 33, NotEquals = 34, IdentityEquals = 35, IdentityNotEquals = 36, BitAnd = 37,
BitXOr = 38, BitOr = 39, And = 40, Or = 41, MultiplyAssign = 42, DivideAssign = 43,
ModulusAssign = 44, PlusAssign = 45, MinusAssign = 46, LeftShiftArithmeticAssign = 47,
RightShiftArithmeticAssign = 48, RightShiftLogicalAssign = 49, BitAndAssign = 50,
BitXorAssign = 51, BitOrAssign = 52, ARROW = 53, NullLiteral = 54, BooleanLiteral = 55,
DecimalLiteral = 56, HexIntegerLiteral = 57, OctalIntegerLiteral = 58, OctalIntegerLiteral2 = 59,
BinaryIntegerLiteral = 60, Break = 61, Do = 62, Instanceof = 63, Typeof = 64, Case = 65,
Else = 66, New = 67, Var = 68, Catch = 69, Finally = 70, Return = 71, Void = 72, Continue = 73,
For = 74, Switch = 75, While = 76, Debugger = 77, Function = 78, This = 79, With = 80,
Default = 81, If = 82, Throw = 83, Delete = 84, In = 85, Try = 86, Event = 87, AtToken = 88,
AtLeastOnce = 89, AtMostOnce = 90, OnlyOnce = 91, Class = 92, Enum = 93, Extends = 94,
Super = 95, Const = 96, Export = 97, Import = 98, Contract = 99, Module = 100, Oracle = 101,
Implements = 102, Let = 103, Private = 104, Public = 105, Interface = 106, Package = 107,
Protected = 108, Static = 109, Yield = 110, Identifier = 111, StringLiteral = 112,
TemplateStringLiteral = 113, WhiteSpaces = 114, LineTerminator = 115, HtmlComment = 116,
CDataComment = 117, UnexpectedCharacter = 118;
public static final int
ERROR = 2;
public static final String[] ruleNames = makeRuleNames();
/**
* @deprecated Use {@link #VOCABULARY} instead.
*/
@Deprecated
public static final String[] tokenNames;
public static final String _serializedATN =
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2x\u044b\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.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t" +
"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=" +
"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I" +
"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT" +
"\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4" +
"`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t" +
"k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4" +
"w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080" +
"\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085" +
"\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089" +
"\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e" +
"\t\u008e\3\2\3\2\3\2\3\2\7\2\u0122\n\2\f\2\16\2\u0125\13\2\3\2\3\2\3\2" +
"\3\2\3\2\3\3\3\3\3\3\3\3\7\3\u0130\n\3\f\3\16\3\u0133\13\3\3\3\3\3\3\4" +
"\3\4\6\4\u0139\n\4\r\4\16\4\u013a\3\4\3\4\3\4\7\4\u0140\n\4\f\4\16\4\u0143" +
"\13\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\13\3\13" +
"\3\f\3\f\3\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\20\3\20\3\21\3\21\3\22" +
"\3\22\3\22\3\23\3\23\3\23\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\30" +
"\3\30\3\31\3\31\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35\3\35" +
"\3\35\3\36\3\36\3\37\3\37\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)\3)\3)\3*\3*\3*\3+\3+\3+\3," +
"\3,\3,\3-\3-\3-\3.\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3" +
"\61\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\64\3\64\3\64\3\65\3\65\3" +
"\65\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\38\38\38\38\38\38\38\38\3" +
"8\58\u01db\n8\39\39\39\79\u01e0\n9\f9\169\u01e3\139\39\59\u01e6\n9\39" +
"\39\69\u01ea\n9\r9\169\u01eb\39\59\u01ef\n9\39\39\59\u01f3\n9\59\u01f5" +
"\n9\3:\3:\3:\6:\u01fa\n:\r:\16:\u01fb\3;\3;\6;\u0200\n;\r;\16;\u0201\3" +
";\3;\3<\3<\3<\6<\u0209\n<\r<\16<\u020a\3=\3=\3=\6=\u0210\n=\r=\16=\u0211" +
"\3>\3>\3>\3>\3>\3>\3?\3?\3?\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3A\3A\3A" +
"\3A\3A\3A\3A\3B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3D\3D\3D\3D\3E\3E\3E\3E\3F" +
"\3F\3F\3F\3F\3F\3G\3G\3G\3G\3G\3G\3G\3G\3H\3H\3H\3H\3H\3H\3H\3I\3I\3I" +
"\3I\3I\3J\3J\3J\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3L\3L\3L\3L\3L\3L\3L\3M" +
"\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3N\3N\3N\3N\3O\3O\3O\3O\3O\3O\3O\3O\3O" +
"\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3T\3T" +
"\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3V\3V\3V\3W\3W\3W\3W\3X\3X\3X\3X\3X" +
"\3X\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\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]\3]\3]\3^\3^\3^\3^\3^\3_\3_\3_\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3`\3" +
"a\3a\3a\3a\3a\3a\3b\3b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3d\3d\3d\3" +
"d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3f\3f\3g\3g\3g\3" +
"g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3i\3i\3" +
"i\3i\3i\3j\3j\3j\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3k\3k\3k\3k\3k\3k\3" +
"k\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3" +
"n\3n\3n\3n\3n\3n\3n\3n\3n\3o\3o\3o\3o\3o\3o\3o\3o\3p\3p\7p\u037c\np\f" +
"p\16p\u037f\13p\3q\3q\7q\u0383\nq\fq\16q\u0386\13q\3q\3q\3q\7q\u038b\n" +
"q\fq\16q\u038e\13q\3q\5q\u0391\nq\3q\3q\3r\3r\3r\3r\7r\u0399\nr\fr\16" +
"r\u039c\13r\3r\3r\3s\6s\u03a1\ns\rs\16s\u03a2\3s\3s\3t\3t\3t\3t\3u\3u" +
"\3u\3u\3u\3u\7u\u03b1\nu\fu\16u\u03b4\13u\3u\3u\3u\3u\3u\3u\3v\3v\3v\3" +
"v\3v\3v\3v\3v\3v\3v\3v\7v\u03c7\nv\fv\16v\u03ca\13v\3v\3v\3v\3v\3v\3v" +
"\3w\3w\3w\3w\3x\3x\3x\3x\5x\u03da\nx\3y\3y\3y\3y\5y\u03e0\ny\3z\3z\3z" +
"\3z\3z\5z\u03e7\nz\3{\3{\5{\u03eb\n{\3|\3|\3|\3|\3}\3}\3}\3}\3}\3}\3~" +
"\3~\3~\6~\u03fa\n~\r~\16~\u03fb\3~\3~\3\177\3\177\3\u0080\3\u0080\3\u0081" +
"\3\u0081\5\u0081\u0406\n\u0081\3\u0082\3\u0082\3\u0082\3\u0083\3\u0083" +
"\3\u0084\3\u0084\3\u0084\7\u0084\u0410\n\u0084\f\u0084\16\u0084\u0413" +
"\13\u0084\5\u0084\u0415\n\u0084\3\u0085\3\u0085\5\u0085\u0419\n\u0085" +
"\3\u0085\6\u0085\u041c\n\u0085\r\u0085\16\u0085\u041d\3\u0086\3\u0086" +
"\3\u0086\3\u0086\3\u0086\5\u0086\u0425\n\u0086\3\u0087\3\u0087\3\u0087" +
"\3\u0087\5\u0087\u042b\n\u0087\3\u0088\5\u0088\u042e\n\u0088\3\u0089\5" +
"\u0089\u0431\n\u0089\3\u008a\5\u008a\u0434\n\u008a\3\u008b\5\u008b\u0437" +
"\n\u008b\3\u008c\3\u008c\3\u008c\3\u008c\7\u008c\u043d\n\u008c\f\u008c" +
"\16\u008c\u0440\13\u008c\3\u008c\5\u008c\u0443\n\u008c\3\u008d\3\u008d" +
"\5\u008d\u0447\n\u008d\3\u008e\3\u008e\3\u008e\5\u0123\u03b2\u03c8\2\u008f" +
"\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20" +
"\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37" +
"= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o" +
"9q:s;u<w=y>{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH" +
"\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1" +
"R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1Z\u00b3[\u00b5" +
"\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1b\u00c3c\u00c5d\u00c7e\u00c9" +
"f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00dd" +
"p\u00dfq\u00e1r\u00e3s\u00e5t\u00e7u\u00e9v\u00ebw\u00edx\u00ef\2\u00f1" +
"\2\u00f3\2\u00f5\2\u00f7\2\u00f9\2\u00fb\2\u00fd\2\u00ff\2\u0101\2\u0103" +
"\2\u0105\2\u0107\2\u0109\2\u010b\2\u010d\2\u010f\2\u0111\2\u0113\2\u0115" +
"\2\u0117\2\u0119\2\u011b\2\3\2\33\5\2\f\f\17\17\u202a\u202b\3\2\62;\4" +
"\2ZZzz\3\2\629\4\2QQqq\4\2DDdd\3\2\62\63\3\2bb\6\2\13\13\r\16\"\"\u00a2" +
"\u00a2\6\2\f\f\17\17$$^^\6\2\f\f\17\17))^^\13\2$$))^^ddhhppttvvxx\16\2" +
"\f\f\17\17$$))\62;^^ddhhppttvxzz\5\2\62;wwzz\5\2\62;CHch\3\2\63;\4\2G" +
"Ggg\4\2--//\4\2&&aa\u0104\2C\\c|\u00ac\u00ac\u00b7\u00b7\u00bc\u00bc\u00c2" +
"\u00d8\u00da\u00f8\u00fa\u0221\u0224\u0235\u0252\u02af\u02b2\u02ba\u02bd" +
"\u02c3\u02d2\u02d3\u02e2\u02e6\u02f0\u02f0\u037c\u037c\u0388\u0388\u038a" +
"\u038c\u038e\u038e\u0390\u03a3\u03a5\u03d0\u03d2\u03d9\u03dc\u03f5\u0402" +
"\u0483\u048e\u04c6\u04c9\u04ca\u04cd\u04ce\u04d2\u04f7\u04fa\u04fb\u0533" +
"\u0558\u055b\u055b\u0563\u0589\u05d2\u05ec\u05f2\u05f4\u0623\u063c\u0642" +
"\u064c\u0673\u06d5\u06d7\u06d7\u06e7\u06e8\u06fc\u06fe\u0712\u0712\u0714" +
"\u072e\u0782\u07a7\u0907\u093b\u093f\u093f\u0952\u0952\u095a\u0963\u0987" +
"\u098e\u0991\u0992\u0995\u09aa\u09ac\u09b2\u09b4\u09b4\u09b8\u09bb\u09de" +
"\u09df\u09e1\u09e3\u09f2\u09f3\u0a07\u0a0c\u0a11\u0a12\u0a15\u0a2a\u0a2c" +
"\u0a32\u0a34\u0a35\u0a37\u0a38\u0a3a\u0a3b\u0a5b\u0a5e\u0a60\u0a60\u0a74" +
"\u0a76\u0a87\u0a8d\u0a8f\u0a8f\u0a91\u0a93\u0a95\u0aaa\u0aac\u0ab2\u0ab4" +
"\u0ab5\u0ab7\u0abb\u0abf\u0abf\u0ad2\u0ad2\u0ae2\u0ae2\u0b07\u0b0e\u0b11" +
"\u0b12\u0b15\u0b2a\u0b2c\u0b32\u0b34\u0b35\u0b38\u0b3b\u0b3f\u0b3f\u0b5e" +
"\u0b5f\u0b61\u0b63\u0b87\u0b8c\u0b90\u0b92\u0b94\u0b97\u0b9b\u0b9c\u0b9e" +
"\u0b9e\u0ba0\u0ba1\u0ba5\u0ba6\u0baa\u0bac\u0bb0\u0bb7\u0bb9\u0bbb\u0c07" +
"\u0c0e\u0c10\u0c12\u0c14\u0c2a\u0c2c\u0c35\u0c37\u0c3b\u0c62\u0c63\u0c87" +
"\u0c8e\u0c90\u0c92\u0c94\u0caa\u0cac\u0cb5\u0cb7\u0cbb\u0ce0\u0ce0\u0ce2" +
"\u0ce3\u0d07\u0d0e\u0d10\u0d12\u0d14\u0d2a\u0d2c\u0d3b\u0d62\u0d63\u0d87" +
"\u0d98\u0d9c\u0db3\u0db5\u0dbd\u0dbf\u0dbf\u0dc2\u0dc8\u0e03\u0e32\u0e34" +
"\u0e35\u0e42\u0e48\u0e83\u0e84\u0e86\u0e86\u0e89\u0e8a\u0e8c\u0e8c\u0e8f" +
"\u0e8f\u0e96\u0e99\u0e9b\u0ea1\u0ea3\u0ea5\u0ea7\u0ea7\u0ea9\u0ea9\u0eac" +
"\u0ead\u0eaf\u0eb2\u0eb4\u0eb5\u0ebf\u0ec6\u0ec8\u0ec8\u0ede\u0edf\u0f02" +
"\u0f02\u0f42\u0f6c\u0f8a\u0f8d\u1002\u1023\u1025\u1029\u102b\u102c\u1052" +
"\u1057\u10a2\u10c7\u10d2\u10f8\u1102\u115b\u1161\u11a4\u11aa\u11fb\u1202" +
"\u1208\u120a\u1248\u124a\u124a\u124c\u124f\u1252\u1258\u125a\u125a\u125c" +
"\u125f\u1262\u1288\u128a\u128a\u128c\u128f\u1292\u12b0\u12b2\u12b2\u12b4" +
"\u12b7\u12ba\u12c0\u12c2\u12c2\u12c4\u12c7\u12ca\u12d0\u12d2\u12d8\u12da" +
"\u12f0\u12f2\u1310\u1312\u1312\u1314\u1317\u131a\u1320\u1322\u1348\u134a" +
"\u135c\u13a2\u13f6\u1403\u1678\u1683\u169c\u16a2\u16ec\u1782\u17b5\u1822" +
"\u1879\u1882\u18aa\u1e02\u1e9d\u1ea2\u1efb\u1f02\u1f17\u1f1a\u1f1f\u1f22" +
"\u1f47\u1f4a\u1f4f\u1f52\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f5f\u1f61" +
"\u1f7f\u1f82\u1fb6\u1fb8\u1fbe\u1fc0\u1fc0\u1fc4\u1fc6\u1fc8\u1fce\u1fd2" +
"\u1fd5\u1fd8\u1fdd\u1fe2\u1fee\u1ff4\u1ff6\u1ff8\u1ffe\u2081\u2081\u2104" +
"\u2104\u2109\u2109\u210c\u2115\u2117\u2117\u211b\u211f\u2126\u2126\u2128" +
"\u2128\u212a\u212a\u212c\u212f\u2131\u2133\u2135\u213b\u2162\u2185\u3007" +
"\u3009\u3023\u302b\u3033\u3037\u303a\u303c\u3043\u3096\u309f\u30a0\u30a3" +
"\u30fc\u30fe\u3100\u3107\u312e\u3133\u3190\u31a2\u31b9\u3402\u3402\u4db7" +
"\u4db7\u4e02\u4e02\u9fa7\u9fa7\ua002\ua48e\uac02\uac02\ud7a5\ud7a5\uf902" +
"\ufa2f\ufb02\ufb08\ufb15\ufb19\ufb1f\ufb1f\ufb21\ufb2a\ufb2c\ufb38\ufb3a" +
"\ufb3e\ufb40\ufb40\ufb42\ufb43\ufb45\ufb46\ufb48\ufbb3\ufbd5\ufd3f\ufd52" +
"\ufd91\ufd94\ufdc9\ufdf2\ufdfd\ufe72\ufe74\ufe76\ufe76\ufe78\ufefe\uff23" +
"\uff3c\uff43\uff5c\uff68\uffc0\uffc4\uffc9\uffcc\uffd1\uffd4\uffd9\uffdc" +
"\uffdef\2\u0302\u0350\u0362\u0364\u0485\u0488\u0593\u05a3\u05a5\u05bb" +
"\u05bd\u05bf\u05c1\u05c1\u05c3\u05c4\u05c6\u05c6\u064d\u0657\u0672\u0672" +
"\u06d8\u06de\u06e1\u06e6\u06e9\u06ea\u06ec\u06ef\u0713\u0713\u0732\u074c" +
"\u07a8\u07b2\u0903\u0905\u093e\u093e\u0940\u094f\u0953\u0956\u0964\u0965" +
"\u0983\u0985\u09be\u09c6\u09c9\u09ca\u09cd\u09cf\u09d9\u09d9\u09e4\u09e5" +
"\u0a04\u0a04\u0a3e\u0a3e\u0a40\u0a44\u0a49\u0a4a\u0a4d\u0a4f\u0a72\u0a73" +
"\u0a83\u0a85\u0abe\u0abe\u0ac0\u0ac7\u0ac9\u0acb\u0acd\u0acf\u0b03\u0b05" +
"\u0b3e\u0b3e\u0b40\u0b45\u0b49\u0b4a\u0b4d\u0b4f\u0b58\u0b59\u0b84\u0b85" +
"\u0bc0\u0bc4\u0bc8\u0bca\u0bcc\u0bcf\u0bd9\u0bd9\u0c03\u0c05\u0c40\u0c46" +
"\u0c48\u0c4a\u0c4c\u0c4f\u0c57\u0c58\u0c84\u0c85\u0cc0\u0cc6\u0cc8\u0cca" +
"\u0ccc\u0ccf\u0cd7\u0cd8\u0d04\u0d05\u0d40\u0d45\u0d48\u0d4a\u0d4c\u0d4f" +
"\u0d59\u0d59\u0d84\u0d85\u0dcc\u0dcc\u0dd1\u0dd6\u0dd8\u0dd8\u0dda\u0de1" +
"\u0df4\u0df5\u0e33\u0e33\u0e36\u0e3c\u0e49\u0e50\u0eb3\u0eb3\u0eb6\u0ebb" +
"\u0ebd\u0ebe\u0eca\u0ecf\u0f1a\u0f1b\u0f37\u0f37\u0f39\u0f39\u0f3b\u0f3b" +
"\u0f40\u0f41\u0f73\u0f86\u0f88\u0f89\u0f92\u0f99\u0f9b\u0fbe\u0fc8\u0fc8" +
"\u102e\u1034\u1038\u103b\u1058\u105b\u17b6\u17d5\u18ab\u18ab\u20d2\u20de" +
"\u20e3\u20e3\u302c\u3031\u309b\u309c\ufb20\ufb20\ufe22\ufe25\26\2\62;" +
"\u0662\u066b\u06f2\u06fb\u0968\u0971\u09e8\u09f1\u0a68\u0a71\u0ae8\u0af1" +
"\u0b68\u0b71\u0be9\u0bf1\u0c68\u0c71\u0ce8\u0cf1\u0d68\u0d71\u0e52\u0e5b" +
"\u0ed2\u0edb\u0f22\u0f2b\u1042\u104b\u136b\u1373\u17e2\u17eb\u1812\u181b" +
"\uff12\uff1b\t\2aa\u2041\u2042\u30fd\u30fd\ufe35\ufe36\ufe4f\ufe51\uff41" +
"\uff41\uff67\uff67\7\2\f\f\17\17\61\61]^\u202a\u202b\6\2\f\f\17\17^_\u202a" +
"\u202b\2\u0465\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3" +
"\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2" +
"\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3" +
"\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2" +
"\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\2" +
"9\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3" +
"\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2" +
"\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2" +
"_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3" +
"\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2" +
"\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083" +
"\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2" +
"\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095" +
"\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2" +
"\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7" +
"\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2" +
"\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9" +
"\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2" +
"\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb" +
"\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2" +
"\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2\2\2\u00dd" +
"\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2" +
"\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\3\u011d" +
"\3\2\2\2\5\u012b\3\2\2\2\7\u0136\3\2\2\2\t\u0144\3\2\2\2\13\u0146\3\2" +
"\2\2\r\u0148\3\2\2\2\17\u014a\3\2\2\2\21\u014c\3\2\2\2\23\u014f\3\2\2" +
"\2\25\u0152\3\2\2\2\27\u0154\3\2\2\2\31\u0156\3\2\2\2\33\u0158\3\2\2\2" +
"\35\u015a\3\2\2\2\37\u015c\3\2\2\2!\u0160\3\2\2\2#\u0162\3\2\2\2%\u0165" +
"\3\2\2\2\'\u0168\3\2\2\2)\u016a\3\2\2\2+\u016c\3\2\2\2-\u016e\3\2\2\2" +
"/\u0170\3\2\2\2\61\u0172\3\2\2\2\63\u0174\3\2\2\2\65\u0176\3\2\2\2\67" +
"\u0179\3\2\2\29\u017c\3\2\2\2;\u0180\3\2\2\2=\u0182\3\2\2\2?\u0184\3\2" +
"\2\2A\u0187\3\2\2\2C\u018a\3\2\2\2E\u018d\3\2\2\2G\u0190\3\2\2\2I\u0194" +
"\3\2\2\2K\u0198\3\2\2\2M\u019a\3\2\2\2O\u019c\3\2\2\2Q\u019e\3\2\2\2S" +
"\u01a1\3\2\2\2U\u01a4\3\2\2\2W\u01a7\3\2\2\2Y\u01aa\3\2\2\2[\u01ad\3\2" +
"\2\2]\u01b0\3\2\2\2_\u01b3\3\2\2\2a\u01b7\3\2\2\2c\u01bb\3\2\2\2e\u01c0" +
"\3\2\2\2g\u01c3\3\2\2\2i\u01c6\3\2\2\2k\u01c9\3\2\2\2m\u01cc\3\2\2\2o" +
"\u01da\3\2\2\2q\u01f4\3\2\2\2s\u01f6\3\2\2\2u\u01fd\3\2\2\2w\u0205\3\2" +
"\2\2y\u020c\3\2\2\2{\u0213\3\2\2\2}\u0219\3\2\2\2\177\u021c\3\2\2\2\u0081" +
"\u0227\3\2\2\2\u0083\u022e\3\2\2\2\u0085\u0233\3\2\2\2\u0087\u0238\3\2" +
"\2\2\u0089\u023c\3\2\2\2\u008b\u0240\3\2\2\2\u008d\u0246\3\2\2\2\u008f" +
"\u024e\3\2\2\2\u0091\u0255\3\2\2\2\u0093\u025a\3\2\2\2\u0095\u0263\3\2" +
"\2\2\u0097\u0267\3\2\2\2\u0099\u026e\3\2\2\2\u009b\u0274\3\2\2\2\u009d" +
"\u027d\3\2\2\2\u009f\u0286\3\2\2\2\u00a1\u028b\3\2\2\2\u00a3\u0290\3\2" +
"\2\2\u00a5\u0298\3\2\2\2\u00a7\u029b\3\2\2\2\u00a9\u02a1\3\2\2\2\u00ab" +
"\u02a8\3\2\2\2\u00ad\u02ab\3\2\2\2\u00af\u02af\3\2\2\2\u00b1\u02b5\3\2" +
"\2\2\u00b3\u02b7\3\2\2\2\u00b5\u02c5\3\2\2\2\u00b7\u02d2\3\2\2\2\u00b9" +
"\u02dc\3\2\2\2\u00bb\u02e2\3\2\2\2\u00bd\u02e7\3\2\2\2\u00bf\u02ef\3\2" +
"\2\2\u00c1\u02f5\3\2\2\2\u00c3\u02fb\3\2\2\2\u00c5\u0302\3\2\2\2\u00c7" +
"\u0309\3\2\2\2\u00c9\u0312\3\2\2\2\u00cb\u0319\3\2\2\2\u00cd\u0320\3\2" +
"\2\2\u00cf\u032d\3\2\2\2\u00d1\u0333\3\2\2\2\u00d3\u033d\3\2\2\2\u00d5" +
"\u0346\3\2\2\2\u00d7\u0352\3\2\2\2\u00d9\u035c\3\2\2\2\u00db\u0368\3\2" +
"\2\2\u00dd\u0371\3\2\2\2\u00df\u0379\3\2\2\2\u00e1\u0390\3\2\2\2\u00e3" +
"\u0394\3\2\2\2\u00e5\u03a0\3\2\2\2\u00e7\u03a6\3\2\2\2\u00e9\u03aa\3\2" +
"\2\2\u00eb\u03bb\3\2\2\2\u00ed\u03d1\3\2\2\2\u00ef\u03d9\3\2\2\2\u00f1" +
"\u03df\3\2\2\2\u00f3\u03e6\3\2\2\2\u00f5\u03ea\3\2\2\2\u00f7\u03ec\3\2" +
"\2\2\u00f9\u03f0\3\2\2\2\u00fb\u03f6\3\2\2\2\u00fd\u03ff\3\2\2\2\u00ff" +
"\u0401\3\2\2\2\u0101\u0405\3\2\2\2\u0103\u0407\3\2\2\2\u0105\u040a\3\2" +
"\2\2\u0107\u0414\3\2\2\2\u0109\u0416\3\2\2\2\u010b\u0424\3\2\2\2\u010d" +
"\u042a\3\2\2\2\u010f\u042d\3\2\2\2\u0111\u0430\3\2\2\2\u0113\u0433\3\2" +
"\2\2\u0115\u0436\3\2\2\2\u0117\u0442\3\2\2\2\u0119\u0446\3\2\2\2\u011b" +
"\u0448\3\2\2\2\u011d\u011e\7\61\2\2\u011e\u011f\7,\2\2\u011f\u0123\3\2" +
"\2\2\u0120\u0122\13\2\2\2\u0121\u0120\3\2\2\2\u0122\u0125\3\2\2\2\u0123" +
"\u0124\3\2\2\2\u0123\u0121\3\2\2\2\u0124\u0126\3\2\2\2\u0125\u0123\3\2" +
"\2\2\u0126\u0127\7,\2\2\u0127\u0128\7\61\2\2\u0128\u0129\3\2\2\2\u0129" +
"\u012a\b\2\2\2\u012a\4\3\2\2\2\u012b\u012c\7\61\2\2\u012c\u012d\7\61\2" +
"\2\u012d\u0131\3\2\2\2\u012e\u0130\n\2\2\2\u012f\u012e\3\2\2\2\u0130\u0133" +
"\3\2\2\2\u0131\u012f\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0134\3\2\2\2\u0133" +
"\u0131\3\2\2\2\u0134\u0135\b\3\2\2\u0135\6\3\2\2\2\u0136\u0138\7\61\2" +
"\2\u0137\u0139\5\u0117\u008c\2\u0138\u0137\3\2\2\2\u0139\u013a\3\2\2\2" +
"\u013a\u0138\3\2\2\2\u013a\u013b\3\2\2\2\u013b\u013c\3\2\2\2\u013c\u013d" +
"\6\4\2\2\u013d\u0141\7\61\2\2\u013e\u0140\5\u010b\u0086\2\u013f\u013e" +
"\3\2\2\2\u0140\u0143\3\2\2\2\u0141\u013f\3\2\2\2\u0141\u0142\3\2\2\2\u0142" +
"\b\3\2\2\2\u0143\u0141\3\2\2\2\u0144\u0145\7]\2\2\u0145\n\3\2\2\2\u0146" +
"\u0147\7_\2\2\u0147\f\3\2\2\2\u0148\u0149\7*\2\2\u0149\16\3\2\2\2\u014a" +
"\u014b\7+\2\2\u014b\20\3\2\2\2\u014c\u014d\7}\2\2\u014d\u014e\b\t\3\2" +
"\u014e\22\3\2\2\2\u014f\u0150\7\177\2\2\u0150\u0151\b\n\4\2\u0151\24\3" +
"\2\2\2\u0152\u0153\7=\2\2\u0153\26\3\2\2\2\u0154\u0155\7.\2\2\u0155\30" +
"\3\2\2\2\u0156\u0157\7?\2\2\u0157\32\3\2\2\2\u0158\u0159\7A\2\2\u0159" +
"\34\3\2\2\2\u015a\u015b\7<\2\2\u015b\36\3\2\2\2\u015c\u015d\7\60\2\2\u015d" +
"\u015e\7\60\2\2\u015e\u015f\7\60\2\2\u015f \3\2\2\2\u0160\u0161\7\60\2" +
"\2\u0161\"\3\2\2\2\u0162\u0163\7-\2\2\u0163\u0164\7-\2\2\u0164$\3\2\2" +
"\2\u0165\u0166\7/\2\2\u0166\u0167\7/\2\2\u0167&\3\2\2\2\u0168\u0169\7" +
"-\2\2\u0169(\3\2\2\2\u016a\u016b\7/\2\2\u016b*\3\2\2\2\u016c\u016d\7\u0080" +
"\2\2\u016d,\3\2\2\2\u016e\u016f\7#\2\2\u016f.\3\2\2\2\u0170\u0171\7,\2" +
"\2\u0171\60\3\2\2\2\u0172\u0173\7\61\2\2\u0173\62\3\2\2\2\u0174\u0175" +
"\7\'\2\2\u0175\64\3\2\2\2\u0176\u0177\7@\2\2\u0177\u0178\7@\2\2\u0178" +
"\66\3\2\2\2\u0179\u017a\7>\2\2\u017a\u017b\7>\2\2\u017b8\3\2\2\2\u017c" +
"\u017d\7@\2\2\u017d\u017e\7@\2\2\u017e\u017f\7@\2\2\u017f:\3\2\2\2\u0180" +
"\u0181\7>\2\2\u0181<\3\2\2\2\u0182\u0183\7@\2\2\u0183>\3\2\2\2\u0184\u0185" +
"\7>\2\2\u0185\u0186\7?\2\2\u0186@\3\2\2\2\u0187\u0188\7@\2\2\u0188\u0189" +
"\7?\2\2\u0189B\3\2\2\2\u018a\u018b\7?\2\2\u018b\u018c\7?\2\2\u018cD\3" +
"\2\2\2\u018d\u018e\7#\2\2\u018e\u018f\7?\2\2\u018fF\3\2\2\2\u0190\u0191" +
"\7?\2\2\u0191\u0192\7?\2\2\u0192\u0193\7?\2\2\u0193H\3\2\2\2\u0194\u0195" +
"\7#\2\2\u0195\u0196\7?\2\2\u0196\u0197\7?\2\2\u0197J\3\2\2\2\u0198\u0199" +
"\7(\2\2\u0199L\3\2\2\2\u019a\u019b\7`\2\2\u019bN\3\2\2\2\u019c\u019d\7" +
"~\2\2\u019dP\3\2\2\2\u019e\u019f\7(\2\2\u019f\u01a0\7(\2\2\u01a0R\3\2" +
"\2\2\u01a1\u01a2\7~\2\2\u01a2\u01a3\7~\2\2\u01a3T\3\2\2\2\u01a4\u01a5" +
"\7,\2\2\u01a5\u01a6\7?\2\2\u01a6V\3\2\2\2\u01a7\u01a8\7\61\2\2\u01a8\u01a9" +
"\7?\2\2\u01a9X\3\2\2\2\u01aa\u01ab\7\'\2\2\u01ab\u01ac\7?\2\2\u01acZ\3" +
"\2\2\2\u01ad\u01ae\7-\2\2\u01ae\u01af\7?\2\2\u01af\\\3\2\2\2\u01b0\u01b1" +
"\7/\2\2\u01b1\u01b2\7?\2\2\u01b2^\3\2\2\2\u01b3\u01b4\7>\2\2\u01b4\u01b5" +
"\7>\2\2\u01b5\u01b6\7?\2\2\u01b6`\3\2\2\2\u01b7\u01b8\7@\2\2\u01b8\u01b9" +
"\7@\2\2\u01b9\u01ba\7?\2\2\u01bab\3\2\2\2\u01bb\u01bc\7@\2\2\u01bc\u01bd" +
"\7@\2\2\u01bd\u01be\7@\2\2\u01be\u01bf\7?\2\2\u01bfd\3\2\2\2\u01c0\u01c1" +
"\7(\2\2\u01c1\u01c2\7?\2\2\u01c2f\3\2\2\2\u01c3\u01c4\7`\2\2\u01c4\u01c5" +
"\7?\2\2\u01c5h\3\2\2\2\u01c6\u01c7\7~\2\2\u01c7\u01c8\7?\2\2\u01c8j\3" +
"\2\2\2\u01c9\u01ca\7?\2\2\u01ca\u01cb\7@\2\2\u01cbl\3\2\2\2\u01cc\u01cd" +
"\7p\2\2\u01cd\u01ce\7w\2\2\u01ce\u01cf\7n\2\2\u01cf\u01d0\7n\2\2\u01d0" +
"n\3\2\2\2\u01d1\u01d2\7v\2\2\u01d2\u01d3\7t\2\2\u01d3\u01d4\7w\2\2\u01d4" +
"\u01db\7g\2\2\u01d5\u01d6\7h\2\2\u01d6\u01d7\7c\2\2\u01d7\u01d8\7n\2\2" +
"\u01d8\u01d9\7u\2\2\u01d9\u01db\7g\2\2\u01da\u01d1\3\2\2\2\u01da\u01d5" +
"\3\2\2\2\u01dbp\3\2\2\2\u01dc\u01dd\5\u0107\u0084\2\u01dd\u01e1\7\60\2" +
"\2\u01de\u01e0\t\3\2\2\u01df\u01de\3\2\2\2\u01e0\u01e3\3\2\2\2\u01e1\u01df" +
"\3\2\2\2\u01e1\u01e2\3\2\2\2\u01e2\u01e5\3\2\2\2\u01e3\u01e1\3\2\2\2\u01e4" +
"\u01e6\5\u0109\u0085\2\u01e5\u01e4\3\2\2\2\u01e5\u01e6\3\2\2\2\u01e6\u01f5" +
"\3\2\2\2\u01e7\u01e9\7\60\2\2\u01e8\u01ea\t\3\2\2\u01e9\u01e8\3\2\2\2" +
"\u01ea\u01eb\3\2\2\2\u01eb\u01e9\3\2\2\2\u01eb\u01ec\3\2\2\2\u01ec\u01ee" +
"\3\2\2\2\u01ed\u01ef\5\u0109\u0085\2\u01ee\u01ed\3\2\2\2\u01ee\u01ef\3" +
"\2\2\2\u01ef\u01f5\3\2\2\2\u01f0\u01f2\5\u0107\u0084\2\u01f1\u01f3\5\u0109" +
"\u0085\2\u01f2\u01f1\3\2\2\2\u01f2\u01f3\3\2\2\2\u01f3\u01f5\3\2\2\2\u01f4" +
"\u01dc\3\2\2\2\u01f4\u01e7\3\2\2\2\u01f4\u01f0\3\2\2\2\u01f5r\3\2\2\2" +
"\u01f6\u01f7\7\62\2\2\u01f7\u01f9\t\4\2\2\u01f8\u01fa\5\u0105\u0083\2" +
"\u01f9\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb\u01f9\3\2\2\2\u01fb\u01fc" +
"\3\2\2\2\u01fct\3\2\2\2\u01fd\u01ff\7\62\2\2\u01fe\u0200\t\5\2\2\u01ff" +
"\u01fe\3\2\2\2\u0200\u0201\3\2\2\2\u0201\u01ff\3\2\2\2\u0201\u0202\3\2" +
"\2\2\u0202\u0203\3\2\2\2\u0203\u0204\6;\3\2\u0204v\3\2\2\2\u0205\u0206" +
"\7\62\2\2\u0206\u0208\t\6\2\2\u0207\u0209\t\5\2\2\u0208\u0207\3\2\2\2" +
"\u0209\u020a\3\2\2\2\u020a\u0208\3\2\2\2\u020a\u020b\3\2\2\2\u020bx\3" +
"\2\2\2\u020c\u020d\7\62\2\2\u020d\u020f\t\7\2\2\u020e\u0210\t\b\2\2\u020f" +
"\u020e\3\2\2\2\u0210\u0211\3\2\2\2\u0211\u020f\3\2\2\2\u0211\u0212\3\2" +
"\2\2\u0212z\3\2\2\2\u0213\u0214\7d\2\2\u0214\u0215\7t\2\2\u0215\u0216" +
"\7g\2\2\u0216\u0217\7c\2\2\u0217\u0218\7m\2\2\u0218|\3\2\2\2\u0219\u021a" +
"\7f\2\2\u021a\u021b\7q\2\2\u021b~\3\2\2\2\u021c\u021d\7k\2\2\u021d\u021e" +
"\7p\2\2\u021e\u021f\7u\2\2\u021f\u0220\7v\2\2\u0220\u0221\7c\2\2\u0221" +
"\u0222\7p\2\2\u0222\u0223\7e\2\2\u0223\u0224\7g\2\2\u0224\u0225\7q\2\2" +
"\u0225\u0226\7h\2\2\u0226\u0080\3\2\2\2\u0227\u0228\7v\2\2\u0228\u0229" +
"\7{\2\2\u0229\u022a\7r\2\2\u022a\u022b\7g\2\2\u022b\u022c\7q\2\2\u022c" +
"\u022d\7h\2\2\u022d\u0082\3\2\2\2\u022e\u022f\7e\2\2\u022f\u0230\7c\2" +
"\2\u0230\u0231\7u\2\2\u0231\u0232\7g\2\2\u0232\u0084\3\2\2\2\u0233\u0234" +
"\7g\2\2\u0234\u0235\7n\2\2\u0235\u0236\7u\2\2\u0236\u0237\7g\2\2\u0237" +
"\u0086\3\2\2\2\u0238\u0239\7p\2\2\u0239\u023a\7g\2\2\u023a\u023b\7y\2" +
"\2\u023b\u0088\3\2\2\2\u023c\u023d\7x\2\2\u023d\u023e\7c\2\2\u023e\u023f" +
"\7t\2\2\u023f\u008a\3\2\2\2\u0240\u0241\7e\2\2\u0241\u0242\7c\2\2\u0242" +
"\u0243\7v\2\2\u0243\u0244\7e\2\2\u0244\u0245\7j\2\2\u0245\u008c\3\2\2" +
"\2\u0246\u0247\7h\2\2\u0247\u0248\7k\2\2\u0248\u0249\7p\2\2\u0249\u024a" +
"\7c\2\2\u024a\u024b\7n\2\2\u024b\u024c\7n\2\2\u024c\u024d\7{\2\2\u024d" +
"\u008e\3\2\2\2\u024e\u024f\7t\2\2\u024f\u0250\7g\2\2\u0250\u0251\7v\2" +
"\2\u0251\u0252\7w\2\2\u0252\u0253\7t\2\2\u0253\u0254\7p\2\2\u0254\u0090" +
"\3\2\2\2\u0255\u0256\7x\2\2\u0256\u0257\7q\2\2\u0257\u0258\7k\2\2\u0258" +
"\u0259\7f\2\2\u0259\u0092\3\2\2\2\u025a\u025b\7e\2\2\u025b\u025c\7q\2" +
"\2\u025c\u025d\7p\2\2\u025d\u025e\7v\2\2\u025e\u025f\7k\2\2\u025f\u0260" +
"\7p\2\2\u0260\u0261\7w\2\2\u0261\u0262\7g\2\2\u0262\u0094\3\2\2\2\u0263" +
"\u0264\7h\2\2\u0264\u0265\7q\2\2\u0265\u0266\7t\2\2\u0266\u0096\3\2\2" +
"\2\u0267\u0268\7u\2\2\u0268\u0269\7y\2\2\u0269\u026a\7k\2\2\u026a\u026b" +
"\7v\2\2\u026b\u026c\7e\2\2\u026c\u026d\7j\2\2\u026d\u0098\3\2\2\2\u026e" +
"\u026f\7y\2\2\u026f\u0270\7j\2\2\u0270\u0271\7k\2\2\u0271\u0272\7n\2\2" +
"\u0272\u0273\7g\2\2\u0273\u009a\3\2\2\2\u0274\u0275\7f\2\2\u0275\u0276" +
"\7g\2\2\u0276\u0277\7d\2\2\u0277\u0278\7w\2\2\u0278\u0279\7i\2\2\u0279" +
"\u027a\7i\2\2\u027a\u027b\7g\2\2\u027b\u027c\7t\2\2\u027c\u009c\3\2\2" +
"\2\u027d\u027e\7h\2\2\u027e\u027f\7w\2\2\u027f\u0280\7p\2\2\u0280\u0281" +
"\7e\2\2\u0281\u0282\7v\2\2\u0282\u0283\7k\2\2\u0283\u0284\7q\2\2\u0284" +
"\u0285\7p\2\2\u0285\u009e\3\2\2\2\u0286\u0287\7v\2\2\u0287\u0288\7j\2" +
"\2\u0288\u0289\7k\2\2\u0289\u028a\7u\2\2\u028a\u00a0\3\2\2\2\u028b\u028c" +
"\7y\2\2\u028c\u028d\7k\2\2\u028d\u028e\7v\2\2\u028e\u028f\7j\2\2\u028f" +
"\u00a2\3\2\2\2\u0290\u0291\7f\2\2\u0291\u0292\7g\2\2\u0292\u0293\7h\2" +
"\2\u0293\u0294\7c\2\2\u0294\u0295\7w\2\2\u0295\u0296\7n\2\2\u0296\u0297" +
"\7v\2\2\u0297\u00a4\3\2\2\2\u0298\u0299\7k\2\2\u0299\u029a\7h\2\2\u029a" +
"\u00a6\3\2\2\2\u029b\u029c\7v\2\2\u029c\u029d\7j\2\2\u029d\u029e\7t\2" +
"\2\u029e\u029f\7q\2\2\u029f\u02a0\7y\2\2\u02a0\u00a8\3\2\2\2\u02a1\u02a2" +
"\7f\2\2\u02a2\u02a3\7g\2\2\u02a3\u02a4\7n\2\2\u02a4\u02a5\7g\2\2\u02a5" +
"\u02a6\7v\2\2\u02a6\u02a7\7g\2\2\u02a7\u00aa\3\2\2\2\u02a8\u02a9\7k\2" +
"\2\u02a9\u02aa\7p\2\2\u02aa\u00ac\3\2\2\2\u02ab\u02ac\7v\2\2\u02ac\u02ad" +
"\7t\2\2\u02ad\u02ae\7{\2\2\u02ae\u00ae\3\2\2\2\u02af\u02b0\7g\2\2\u02b0" +
"\u02b1\7x\2\2\u02b1\u02b2\7g\2\2\u02b2\u02b3\7p\2\2\u02b3\u02b4\7v\2\2" +
"\u02b4\u00b0\3\2\2\2\u02b5\u02b6\7B\2\2\u02b6\u00b2\3\2\2\2\u02b7\u02b8" +
"\7C\2\2\u02b8\u02b9\7V\2\2\u02b9\u02ba\7a\2\2\u02ba\u02bb\7N\2\2\u02bb" +
"\u02bc\7G\2\2\u02bc\u02bd\7C\2\2\u02bd\u02be\7U\2\2\u02be\u02bf\7V\2\2" +
"\u02bf\u02c0\7a\2\2\u02c0\u02c1\7Q\2\2\u02c1\u02c2\7P\2\2\u02c2\u02c3" +
"\7E\2\2\u02c3\u02c4\7G\2\2\u02c4\u00b4\3\2\2\2\u02c5\u02c6\7C\2\2\u02c6" +
"\u02c7\7V\2\2\u02c7\u02c8\7a\2\2\u02c8\u02c9\7O\2\2\u02c9\u02ca\7Q\2\2" +
"\u02ca\u02cb\7U\2\2\u02cb\u02cc\7V\2\2\u02cc\u02cd\7a\2\2\u02cd\u02ce" +
"\7Q\2\2\u02ce\u02cf\7P\2\2\u02cf\u02d0\7E\2\2\u02d0\u02d1\7G\2\2\u02d1" +
"\u00b6\3\2\2\2\u02d2\u02d3\7Q\2\2\u02d3\u02d4\7P\2\2\u02d4\u02d5\7N\2" +
"\2\u02d5\u02d6\7[\2\2\u02d6\u02d7\7a\2\2\u02d7\u02d8\7Q\2\2\u02d8\u02d9" +
"\7P\2\2\u02d9\u02da\7E\2\2\u02da\u02db\7G\2\2\u02db\u00b8\3\2\2\2\u02dc" +
"\u02dd\7e\2\2\u02dd\u02de\7n\2\2\u02de\u02df\7c\2\2\u02df\u02e0\7u\2\2" +
"\u02e0\u02e1\7u\2\2\u02e1\u00ba\3\2\2\2\u02e2\u02e3\7g\2\2\u02e3\u02e4" +
"\7p\2\2\u02e4\u02e5\7w\2\2\u02e5\u02e6\7o\2\2\u02e6\u00bc\3\2\2\2\u02e7" +
"\u02e8\7g\2\2\u02e8\u02e9\7z\2\2\u02e9\u02ea\7v\2\2\u02ea\u02eb\7g\2\2" +
"\u02eb\u02ec\7p\2\2\u02ec\u02ed\7f\2\2\u02ed\u02ee\7u\2\2\u02ee\u00be" +
"\3\2\2\2\u02ef\u02f0\7u\2\2\u02f0\u02f1\7w\2\2\u02f1\u02f2\7r\2\2\u02f2" +
"\u02f3\7g\2\2\u02f3\u02f4\7t\2\2\u02f4\u00c0\3\2\2\2\u02f5\u02f6\7e\2" +
"\2\u02f6\u02f7\7q\2\2\u02f7\u02f8\7p\2\2\u02f8\u02f9\7u\2\2\u02f9\u02fa" +
"\7v\2\2\u02fa\u00c2\3\2\2\2\u02fb\u02fc\7g\2\2\u02fc\u02fd\7z\2\2\u02fd" +
"\u02fe\7r\2\2\u02fe\u02ff\7q\2\2\u02ff\u0300\7t\2\2\u0300\u0301\7v\2\2" +
"\u0301\u00c4\3\2\2\2\u0302\u0303\7k\2\2\u0303\u0304\7o\2\2\u0304\u0305" +
"\7r\2\2\u0305\u0306\7q\2\2\u0306\u0307\7t\2\2\u0307\u0308\7v\2\2\u0308" +
"\u00c6\3\2\2\2\u0309\u030a\7e\2\2\u030a\u030b\7q\2\2\u030b\u030c\7p\2" +
"\2\u030c\u030d\7v\2\2\u030d\u030e\7t\2\2\u030e\u030f\7c\2\2\u030f\u0310" +
"\7e\2\2\u0310\u0311\7v\2\2\u0311\u00c8\3\2\2\2\u0312\u0313\7o\2\2\u0313" +
"\u0314\7q\2\2\u0314\u0315\7f\2\2\u0315\u0316\7w\2\2\u0316\u0317\7n\2\2" +
"\u0317\u0318\7g\2\2\u0318\u00ca\3\2\2\2\u0319\u031a\7q\2\2\u031a\u031b" +
"\7t\2\2\u031b\u031c\7c\2\2\u031c\u031d\7e\2\2\u031d\u031e\7n\2\2\u031e" +
"\u031f\7g\2\2\u031f\u00cc\3\2\2\2\u0320\u0321\7k\2\2\u0321\u0322\7o\2" +
"\2\u0322\u0323\7r\2\2\u0323\u0324\7n\2\2\u0324\u0325\7g\2\2\u0325\u0326" +
"\7o\2\2\u0326\u0327\7g\2\2\u0327\u0328\7p\2\2\u0328\u0329\7v\2\2\u0329" +
"\u032a\7u\2\2\u032a\u032b\3\2\2\2\u032b\u032c\6g\4\2\u032c\u00ce\3\2\2" +
"\2\u032d\u032e\7n\2\2\u032e\u032f\7g\2\2\u032f\u0330\7v\2\2\u0330\u0331" +
"\3\2\2\2\u0331\u0332\6h\5\2\u0332\u00d0\3\2\2\2\u0333\u0334\7r\2\2\u0334" +
"\u0335\7t\2\2\u0335\u0336\7k\2\2\u0336\u0337\7x\2\2\u0337\u0338\7c\2\2" +
"\u0338\u0339\7v\2\2\u0339\u033a\7g\2\2\u033a\u033b\3\2\2\2\u033b\u033c" +
"\6i\6\2\u033c\u00d2\3\2\2\2\u033d\u033e\7r\2\2\u033e\u033f\7w\2\2\u033f" +
"\u0340\7d\2\2\u0340\u0341\7n\2\2\u0341\u0342\7k\2\2\u0342\u0343\7e\2\2" +
"\u0343\u0344\3\2\2\2\u0344\u0345\6j\7\2\u0345\u00d4\3\2\2\2\u0346\u0347" +
"\7k\2\2\u0347\u0348\7p\2\2\u0348\u0349\7v\2\2\u0349\u034a\7g\2\2\u034a" +
"\u034b\7t\2\2\u034b\u034c\7h\2\2\u034c\u034d\7c\2\2\u034d\u034e\7e\2\2" +
"\u034e\u034f\7g\2\2\u034f\u0350\3\2\2\2\u0350\u0351\6k\b\2\u0351\u00d6" +
"\3\2\2\2\u0352\u0353\7r\2\2\u0353\u0354\7c\2\2\u0354\u0355\7e\2\2\u0355" +
"\u0356\7m\2\2\u0356\u0357\7c\2\2\u0357\u0358\7i\2\2\u0358\u0359\7g\2\2" +
"\u0359\u035a\3\2\2\2\u035a\u035b\6l\t\2\u035b\u00d8\3\2\2\2\u035c\u035d" +
"\7r\2\2\u035d\u035e\7t\2\2\u035e\u035f\7q\2\2\u035f\u0360\7v\2\2\u0360" +
"\u0361\7g\2\2\u0361\u0362\7e\2\2\u0362\u0363\7v\2\2\u0363\u0364\7g\2\2" +
"\u0364\u0365\7f\2\2\u0365\u0366\3\2\2\2\u0366\u0367\6m\n\2\u0367\u00da" +
"\3\2\2\2\u0368\u0369\7u\2\2\u0369\u036a\7v\2\2\u036a\u036b\7c\2\2\u036b" +
"\u036c\7v\2\2\u036c\u036d\7k\2\2\u036d\u036e\7e\2\2\u036e\u036f\3\2\2" +
"\2\u036f\u0370\6n\13\2\u0370\u00dc\3\2\2\2\u0371\u0372\7{\2\2\u0372\u0373" +
"\7k\2\2\u0373\u0374\7g\2\2\u0374\u0375\7n\2\2\u0375\u0376\7f\2\2\u0376" +
"\u0377\3\2\2\2\u0377\u0378\6o\f\2\u0378\u00de\3\2\2\2\u0379\u037d\5\u010d" +
"\u0087\2\u037a\u037c\5\u010b\u0086\2\u037b\u037a\3\2\2\2\u037c\u037f\3" +
"\2\2\2\u037d\u037b\3\2\2\2\u037d\u037e\3\2\2\2\u037e\u00e0\3\2\2\2\u037f" +
"\u037d\3\2\2\2\u0380\u0384\7$\2\2\u0381\u0383\5\u00efx\2\u0382\u0381\3" +
"\2\2\2\u0383\u0386\3\2\2\2\u0384\u0382\3\2\2\2\u0384\u0385\3\2\2\2\u0385" +
"\u0387\3\2\2\2\u0386\u0384\3\2\2\2\u0387\u0391\7$\2\2\u0388\u038c\7)\2" +
"\2\u0389\u038b\5\u00f1y\2\u038a\u0389\3\2\2\2\u038b\u038e\3\2\2\2\u038c" +
"\u038a\3\2\2\2\u038c\u038d\3\2\2\2\u038d\u038f\3\2\2\2\u038e\u038c\3\2" +
"\2\2\u038f\u0391\7)\2\2\u0390\u0380\3\2\2\2\u0390\u0388\3\2\2\2\u0391" +
"\u0392\3\2\2\2\u0392\u0393\bq\5\2\u0393\u00e2\3\2\2\2\u0394\u039a\7b\2" +
"\2\u0395\u0396\7^\2\2\u0396\u0399\7b\2\2\u0397\u0399\n\t\2\2\u0398\u0395" +
"\3\2\2\2\u0398\u0397\3\2\2\2\u0399\u039c\3\2\2\2\u039a\u0398\3\2\2\2\u039a" +
"\u039b\3\2\2\2\u039b\u039d\3\2\2\2\u039c\u039a\3\2\2\2\u039d\u039e\7b" +
"\2\2\u039e\u00e4\3\2\2\2\u039f\u03a1\t\n\2\2\u03a0\u039f\3\2\2\2\u03a1" +
"\u03a2\3\2\2\2\u03a2\u03a0\3\2\2\2\u03a2\u03a3\3\2\2\2\u03a3\u03a4\3\2" +
"\2\2\u03a4\u03a5\bs\2\2\u03a5\u00e6\3\2\2\2\u03a6\u03a7\t\2\2\2\u03a7" +
"\u03a8\3\2\2\2\u03a8\u03a9\bt\2\2\u03a9\u00e8\3\2\2\2\u03aa\u03ab\7>\2" +
"\2\u03ab\u03ac\7#\2\2\u03ac\u03ad\7/\2\2\u03ad\u03ae\7/\2\2\u03ae\u03b2" +
"\3\2\2\2\u03af\u03b1\13\2\2\2\u03b0\u03af\3\2\2\2\u03b1\u03b4\3\2\2\2" +
"\u03b2\u03b3\3\2\2\2\u03b2\u03b0\3\2\2\2\u03b3\u03b5\3\2\2\2\u03b4\u03b2" +
"\3\2\2\2\u03b5\u03b6\7/\2\2\u03b6\u03b7\7/\2\2\u03b7\u03b8\7@\2\2\u03b8" +
"\u03b9\3\2\2\2\u03b9\u03ba\bu\2\2\u03ba\u00ea\3\2\2\2\u03bb\u03bc\7>\2" +
"\2\u03bc\u03bd\7#\2\2\u03bd\u03be\7]\2\2\u03be\u03bf\7E\2\2\u03bf\u03c0" +
"\7F\2\2\u03c0\u03c1\7C\2\2\u03c1\u03c2\7V\2\2\u03c2\u03c3\7C\2\2\u03c3" +
"\u03c4\7]\2\2\u03c4\u03c8\3\2\2\2\u03c5\u03c7\13\2\2\2\u03c6\u03c5\3\2" +
"\2\2\u03c7\u03ca\3\2\2\2\u03c8\u03c9\3\2\2\2\u03c8\u03c6\3\2\2\2\u03c9" +
"\u03cb\3\2\2\2\u03ca\u03c8\3\2\2\2\u03cb\u03cc\7_\2\2\u03cc\u03cd\7_\2" +
"\2\u03cd\u03ce\7@\2\2\u03ce\u03cf\3\2\2\2\u03cf\u03d0\bv\2\2\u03d0\u00ec" +
"\3\2\2\2\u03d1\u03d2\13\2\2\2\u03d2\u03d3\3\2\2\2\u03d3\u03d4\bw\6\2\u03d4" +
"\u00ee\3\2\2\2\u03d5\u03da\n\13\2\2\u03d6\u03d7\7^\2\2\u03d7\u03da\5\u00f3" +
"z\2\u03d8\u03da\5\u0103\u0082\2\u03d9\u03d5\3\2\2\2\u03d9\u03d6\3\2\2" +
"\2\u03d9\u03d8\3\2\2\2\u03da\u00f0\3\2\2\2\u03db\u03e0\n\f\2\2\u03dc\u03dd" +
"\7^\2\2\u03dd\u03e0\5\u00f3z\2\u03de\u03e0\5\u0103\u0082\2\u03df\u03db" +
"\3\2\2\2\u03df\u03dc\3\2\2\2\u03df\u03de\3\2\2\2\u03e0\u00f2\3\2\2\2\u03e1" +
"\u03e7\5\u00f5{\2\u03e2\u03e7\7\62\2\2\u03e3\u03e7\5\u00f7|\2\u03e4\u03e7" +
"\5\u00f9}\2\u03e5\u03e7\5\u00fb~\2\u03e6\u03e1\3\2\2\2\u03e6\u03e2\3\2" +
"\2\2\u03e6\u03e3\3\2\2\2\u03e6\u03e4\3\2\2\2\u03e6\u03e5\3\2\2\2\u03e7" +
"\u00f4\3\2\2\2\u03e8\u03eb\5\u00fd\177\2\u03e9\u03eb\5\u00ff\u0080\2\u03ea" +
"\u03e8\3\2\2\2\u03ea\u03e9\3\2\2\2\u03eb\u00f6\3\2\2\2\u03ec\u03ed\7z" +
"\2\2\u03ed\u03ee\5\u0105\u0083\2\u03ee\u03ef\5\u0105\u0083\2\u03ef\u00f8" +
"\3\2\2\2\u03f0\u03f1\7w\2\2\u03f1\u03f2\5\u0105\u0083\2\u03f2\u03f3\5" +
"\u0105\u0083\2\u03f3\u03f4\5\u0105\u0083\2\u03f4\u03f5\5\u0105\u0083\2" +
"\u03f5\u00fa\3\2\2\2\u03f6\u03f7\7w\2\2\u03f7\u03f9\7}\2\2\u03f8\u03fa" +
"\5\u0105\u0083\2\u03f9\u03f8\3\2\2\2\u03fa\u03fb\3\2\2\2\u03fb\u03f9\3" +
"\2\2\2\u03fb\u03fc\3\2\2\2\u03fc\u03fd\3\2\2\2\u03fd\u03fe\7\177\2\2\u03fe" +
"\u00fc\3\2\2\2\u03ff\u0400\t\r\2\2\u0400\u00fe\3\2\2\2\u0401\u0402\n\16" +
"\2\2\u0402\u0100\3\2\2\2\u0403\u0406\5\u00fd\177\2\u0404\u0406\t\17\2" +
"\2\u0405\u0403\3\2\2\2\u0405\u0404\3\2\2\2\u0406\u0102\3\2\2\2\u0407\u0408" +
"\7^\2\2\u0408\u0409\t\2\2\2\u0409\u0104\3\2\2\2\u040a\u040b\t\20\2\2\u040b" +
"\u0106\3\2\2\2\u040c\u0415\7\62\2\2\u040d\u0411\t\21\2\2\u040e\u0410\t" +
"\3\2\2\u040f\u040e\3\2\2\2\u0410\u0413\3\2\2\2\u0411\u040f\3\2\2\2\u0411" +
"\u0412\3\2\2\2\u0412\u0415\3\2\2\2\u0413\u0411\3\2\2\2\u0414\u040c\3\2" +
"\2\2\u0414\u040d\3\2\2\2\u0415\u0108\3\2\2\2\u0416\u0418\t\22\2\2\u0417" +
"\u0419\t\23\2\2\u0418\u0417\3\2\2\2\u0418\u0419\3\2\2\2\u0419\u041b\3" +
"\2\2\2\u041a\u041c\t\3\2\2\u041b\u041a\3\2\2\2\u041c\u041d\3\2\2\2\u041d" +
"\u041b\3\2\2\2\u041d\u041e\3\2\2\2\u041e\u010a\3\2\2\2\u041f\u0425\5\u010d" +
"\u0087\2\u0420\u0425\5\u0111\u0089\2\u0421\u0425\5\u0113\u008a\2\u0422" +
"\u0425\5\u0115\u008b\2\u0423\u0425\4\u200e\u200f\2\u0424\u041f\3\2\2\2" +
"\u0424\u0420\3\2\2\2\u0424\u0421\3\2\2\2\u0424\u0422\3\2\2\2\u0424\u0423" +
"\3\2\2\2\u0425\u010c\3\2\2\2\u0426\u042b\5\u010f\u0088\2\u0427\u042b\t" +
"\24\2\2\u0428\u0429\7^\2\2\u0429\u042b\5\u00f9}\2\u042a\u0426\3\2\2\2" +
"\u042a\u0427\3\2\2\2\u042a\u0428\3\2\2\2\u042b\u010e\3\2\2\2\u042c\u042e" +
"\t\25\2\2\u042d\u042c\3\2\2\2\u042e\u0110\3\2\2\2\u042f\u0431\t\26\2\2" +
"\u0430\u042f\3\2\2\2\u0431\u0112\3\2\2\2\u0432\u0434\t\27\2\2\u0433\u0432" +
"\3\2\2\2\u0434\u0114\3\2\2\2\u0435\u0437\t\30\2\2\u0436\u0435\3\2\2\2" +
"\u0437\u0116\3\2\2\2\u0438\u0443\n\31\2\2\u0439\u0443\5\u011b\u008e\2" +
"\u043a\u043e\7]\2\2\u043b\u043d\5\u0119\u008d\2\u043c\u043b\3\2\2\2\u043d" +
"\u0440\3\2\2\2\u043e\u043c\3\2\2\2\u043e\u043f\3\2\2\2\u043f\u0441\3\2" +
"\2\2\u0440\u043e\3\2\2\2\u0441\u0443\7_\2\2\u0442\u0438\3\2\2\2\u0442" +
"\u0439\3\2\2\2\u0442\u043a\3\2\2\2\u0443\u0118\3\2\2\2\u0444\u0447\n\32" +
"\2\2\u0445\u0447\5\u011b\u008e\2\u0446\u0444\3\2\2\2\u0446\u0445\3\2\2" +
"\2\u0447\u011a\3\2\2\2\u0448\u0449\7^\2\2\u0449\u044a\n\2\2\2\u044a\u011c" +
"\3\2\2\2.\2\u0123\u0131\u013a\u0141\u01da\u01e1\u01e5\u01eb\u01ee\u01f2" +
"\u01f4\u01fb\u0201\u020a\u0211\u037d\u0384\u038c\u0390\u0398\u039a\u03a2" +
"\u03b2\u03c8\u03d9\u03df\u03e6\u03ea\u03fb\u0405\u0411\u0414\u0418\u041d" +
"\u0424\u042a\u042d\u0430\u0433\u0436\u043e\u0442\u0446\7\2\3\2\3\t\2\3" +
"\n\3\3q\4\2\4\2";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
public static String[] channelNames = {
"DEFAULT_TOKEN_CHANNEL", "HIDDEN", "ERROR"
};
public static String[] modeNames = {
"DEFAULT_MODE"
};
static {
RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION);
}
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] = "<INVALID>";
}
}
}
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
}
}
public JavaScriptLexer(CharStream input) {
super(input);
_interp = new LexerATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache);
}
private static String[] makeRuleNames() {
return new String[]{
"MultiLineComment", "SingleLineComment", "RegularExpressionLiteral",
"OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace",
"CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", "Colon",
"Ellipsis", "Dot", "PlusPlus", "MinusMinus", "Plus", "Minus", "BitNot",
"Not", "Multiply", "Divide", "Modulus", "RightShiftArithmetic", "LeftShiftArithmetic",
"RightShiftLogical", "LessThan", "MoreThan", "LessThanEquals", "GreaterThanEquals",
"Equals_", "NotEquals", "IdentityEquals", "IdentityNotEquals", "BitAnd",
"BitXOr", "BitOr", "And", "Or", "MultiplyAssign", "DivideAssign", "ModulusAssign",
"PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", "RightShiftArithmeticAssign",
"RightShiftLogicalAssign", "BitAndAssign", "BitXorAssign", "BitOrAssign",
"ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", "HexIntegerLiteral",
"OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral",
"Break", "Do", "Instanceof", "Typeof", "Case", "Else", "New", "Var",
"Catch", "Finally", "Return", "Void", "Continue", "For", "Switch", "While",
"Debugger", "Function", "This", "With", "Default", "If", "Throw", "Delete",
"In", "Try", "Event", "AtToken", "AtLeastOnce", "AtMostOnce", "OnlyOnce",
"Class", "Enum", "Extends", "Super", "Const", "Export", "Import", "Contract",
"Module", "Oracle", "Implements", "Let", "Private", "Public", "Interface",
"Package", "Protected", "Static", "Yield", "Identifier", "StringLiteral",
"TemplateStringLiteral", "WhiteSpaces", "LineTerminator", "HtmlComment",
"CDataComment", "UnexpectedCharacter", "DoubleStringCharacter", "SingleStringCharacter",
"EscapeSequence", "CharacterEscapeSequence", "HexEscapeSequence", "UnicodeEscapeSequence",
"ExtendedUnicodeEscapeSequence", "SingleEscapeCharacter", "NonEscapeCharacter",
"EscapeCharacter", "LineContinuation", "HexDigit", "DecimalIntegerLiteral",
"ExponentPart", "IdentifierPart", "IdentifierStart", "UnicodeLetter",
"UnicodeCombiningMark", "UnicodeDigit", "UnicodeConnectorPunctuation",
"RegularExpressionChar", "RegularExpressionClassChar", "RegularExpressionBackslashSequence"
};
}
private static String[] makeLiteralNames() {
return new String[]{
null, null, null, null, "'['", "']'", "'('", "')'", "'{'", "'}'", "';'",
"','", "'='", "'?'", "':'", "'...'", "'.'", "'++'", "'--'", "'+'", "'-'",
"'~'", "'!'", "'*'", "'/'", "'%'", "'>>'", "'<<'", "'>>>'", "'<'", "'>'",
"'<='", "'>='", "'=='", "'!='", "'==='", "'!=='", "'&'", "'^'", "'|'",
"'&&'", "'||'", "'*='", "'/='", "'%='", "'+='", "'-='", "'<<='", "'>>='",
"'>>>='", "'&='", "'^='", "'|='", "'=>'", "'null'", null, null, null,
null, null, null, "'break'", "'do'", "'instanceof'", "'typeof'", "'case'",
"'else'", "'new'", "'var'", "'catch'", "'finally'", "'return'", "'void'",
"'continue'", "'for'", "'switch'", "'while'", "'debugger'", "'function'",
"'this'", "'with'", "'default'", "'if'", "'throw'", "'delete'", "'in'",
"'try'", "'event'", "'@'", "'AT_LEAST_ONCE'", "'AT_MOST_ONCE'", "'ONLY_ONCE'",
"'class'", "'enum'", "'extends'", "'super'", "'const'", "'export'", "'import'",
"'contract'", "'module'", "'oracle'", "'implements'", "'let'", "'private'",
"'public'", "'interface'", "'package'", "'protected'", "'static'", "'yield'"
};
}
private static String[] makeSymbolicNames() {
return new String[]{
null, "MultiLineComment", "SingleLineComment", "RegularExpressionLiteral",
"OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace",
"CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", "Colon",
"Ellipsis", "Dot", "PlusPlus", "MinusMinus", "Plus", "Minus", "BitNot",
"Not", "Multiply", "Divide", "Modulus", "RightShiftArithmetic", "LeftShiftArithmetic",
"RightShiftLogical", "LessThan", "MoreThan", "LessThanEquals", "GreaterThanEquals",
"Equals_", "NotEquals", "IdentityEquals", "IdentityNotEquals", "BitAnd",
"BitXOr", "BitOr", "And", "Or", "MultiplyAssign", "DivideAssign", "ModulusAssign",
"PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", "RightShiftArithmeticAssign",
"RightShiftLogicalAssign", "BitAndAssign", "BitXorAssign", "BitOrAssign",
"ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", "HexIntegerLiteral",
"OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral",
"Break", "Do", "Instanceof", "Typeof", "Case", "Else", "New", "Var",
"Catch", "Finally", "Return", "Void", "Continue", "For", "Switch", "While",
"Debugger", "Function", "This", "With", "Default", "If", "Throw", "Delete",
"In", "Try", "Event", "AtToken", "AtLeastOnce", "AtMostOnce", "OnlyOnce",
"Class", "Enum", "Extends", "Super", "Const", "Export", "Import", "Contract",
"Module", "Oracle", "Implements", "Let", "Private", "Public", "Interface",
"Package", "Protected", "Static", "Yield", "Identifier", "StringLiteral",
"TemplateStringLiteral", "WhiteSpaces", "LineTerminator", "HtmlComment",
"CDataComment", "UnexpectedCharacter"
};
}
@Override
@Deprecated
public String[] getTokenNames() {
return tokenNames;
}
@Override
public Vocabulary getVocabulary() {
return VOCABULARY;
}
@Override
public String getGrammarFileName() {
return "JavaScriptLexer.g4";
}
@Override
public String[] getRuleNames() {
return ruleNames;
}
@Override
public String getSerializedATN() {
return _serializedATN;
}
@Override
public String[] getChannelNames() {
return channelNames;
}
@Override
public String[] getModeNames() {
return modeNames;
}
@Override
public ATN getATN() {
return _ATN;
}
@Override
public void action(RuleContext _localctx, int ruleIndex, int actionIndex) {
switch (ruleIndex) {
case 7:
OpenBrace_action((RuleContext) _localctx, actionIndex);
break;
case 8:
CloseBrace_action((RuleContext) _localctx, actionIndex);
break;
case 111:
StringLiteral_action((RuleContext) _localctx, actionIndex);
break;
}
}
private void OpenBrace_action(RuleContext _localctx, int actionIndex) {
switch (actionIndex) {
case 0:
ProcessOpenBrace();
break;
}
}
private void CloseBrace_action(RuleContext _localctx, int actionIndex) {
switch (actionIndex) {
case 1:
ProcessCloseBrace();
break;
}
}
private void StringLiteral_action(RuleContext _localctx, int actionIndex) {
switch (actionIndex) {
case 2:
ProcessStringLiteral();
break;
}
}
@Override
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
case 2:
return RegularExpressionLiteral_sempred((RuleContext) _localctx, predIndex);
case 57:
return OctalIntegerLiteral_sempred((RuleContext) _localctx, predIndex);
case 101:
return Implements_sempred((RuleContext) _localctx, predIndex);
case 102:
return Let_sempred((RuleContext) _localctx, predIndex);
case 103:
return Private_sempred((RuleContext) _localctx, predIndex);
case 104:
return Public_sempred((RuleContext) _localctx, predIndex);
case 105:
return Interface_sempred((RuleContext) _localctx, predIndex);
case 106:
return Package_sempred((RuleContext) _localctx, predIndex);
case 107:
return Protected_sempred((RuleContext) _localctx, predIndex);
case 108:
return Static_sempred((RuleContext) _localctx, predIndex);
case 109:
return Yield_sempred((RuleContext) _localctx, predIndex);
}
return true;
}
private boolean RegularExpressionLiteral_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 0:
return IsRegexPossible();
}
return true;
}
private boolean OctalIntegerLiteral_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 1:
return !IsStrictMode();
}
return true;
}
private boolean Implements_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 2:
return IsStrictMode();
}
return true;
}
private boolean Let_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 3:
return IsStrictMode();
}
return true;
}
private boolean Private_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 4:
return IsStrictMode();
}
return true;
}
private boolean Public_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 5:
return IsStrictMode();
}
return true;
}
private boolean Interface_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 6:
return IsStrictMode();
}
return true;
}
private boolean Package_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 7:
return IsStrictMode();
}
return true;
}
private boolean Protected_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 8:
return IsStrictMode();
}
return true;
}
private boolean Static_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 9:
return IsStrictMode();
}
return true;
}
private boolean Yield_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 10:
return IsStrictMode();
}
return true;
}
}

View File

@@ -0,0 +1,219 @@
MultiLineComment=1
SingleLineComment=2
RegularExpressionLiteral=3
OpenBracket=4
CloseBracket=5
OpenParen=6
CloseParen=7
OpenBrace=8
CloseBrace=9
SemiColon=10
Comma=11
Assign=12
QuestionMark=13
Colon=14
Ellipsis=15
Dot=16
PlusPlus=17
MinusMinus=18
Plus=19
Minus=20
BitNot=21
Not=22
Multiply=23
Divide=24
Modulus=25
RightShiftArithmetic=26
LeftShiftArithmetic=27
RightShiftLogical=28
LessThan=29
MoreThan=30
LessThanEquals=31
GreaterThanEquals=32
Equals_=33
NotEquals=34
IdentityEquals=35
IdentityNotEquals=36
BitAnd=37
BitXOr=38
BitOr=39
And=40
Or=41
MultiplyAssign=42
DivideAssign=43
ModulusAssign=44
PlusAssign=45
MinusAssign=46
LeftShiftArithmeticAssign=47
RightShiftArithmeticAssign=48
RightShiftLogicalAssign=49
BitAndAssign=50
BitXorAssign=51
BitOrAssign=52
ARROW=53
NullLiteral=54
BooleanLiteral=55
DecimalLiteral=56
HexIntegerLiteral=57
OctalIntegerLiteral=58
OctalIntegerLiteral2=59
BinaryIntegerLiteral=60
Break=61
Do=62
Instanceof=63
Typeof=64
Case=65
Else=66
New=67
Var=68
Catch=69
Finally=70
Return=71
Void=72
Continue=73
For=74
Switch=75
While=76
Debugger=77
Function=78
This=79
With=80
Default=81
If=82
Throw=83
Delete=84
In=85
Try=86
Event=87
AtToken=88
AtLeastOnce=89
AtMostOnce=90
OnlyOnce=91
Class=92
Enum=93
Extends=94
Super=95
Const=96
Export=97
Import=98
Contract=99
Module=100
Oracle=101
Implements=102
Let=103
Private=104
Public=105
Interface=106
Package=107
Protected=108
Static=109
Yield=110
Identifier=111
StringLiteral=112
TemplateStringLiteral=113
WhiteSpaces=114
LineTerminator=115
HtmlComment=116
CDataComment=117
UnexpectedCharacter=118
'['=4
']'=5
'('=6
')'=7
'{'=8
'}'=9
';'=10
','=11
'='=12
'?'=13
':'=14
'...'=15
'.'=16
'++'=17
'--'=18
'+'=19
'-'=20
'~'=21
'!'=22
'*'=23
'/'=24
'%'=25
'>>'=26
'<<'=27
'>>>'=28
'<'=29
'>'=30
'<='=31
'>='=32
'=='=33
'!='=34
'==='=35
'!=='=36
'&'=37
'^'=38
'|'=39
'&&'=40
'||'=41
'*='=42
'/='=43
'%='=44
'+='=45
'-='=46
'<<='=47
'>>='=48
'>>>='=49
'&='=50
'^='=51
'|='=52
'=>'=53
'null'=54
'break'=61
'do'=62
'instanceof'=63
'typeof'=64
'case'=65
'else'=66
'new'=67
'var'=68
'catch'=69
'finally'=70
'return'=71
'void'=72
'continue'=73
'for'=74
'switch'=75
'while'=76
'debugger'=77
'function'=78
'this'=79
'with'=80
'default'=81
'if'=82
'throw'=83
'delete'=84
'in'=85
'try'=86
'event'=87
'@'=88
'AT_LEAST_ONCE'=89
'AT_MOST_ONCE'=90
'ONLY_ONCE'=91
'class'=92
'enum'=93
'extends'=94
'super'=95
'const'=96
'export'=97
'import'=98
'contract'=99
'module'=100
'oracle'=101
'implements'=102
'let'=103
'private'=104
'public'=105
'interface'=106
'package'=107
'protected'=108
'static'=109
'yield'=110

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,219 @@
MultiLineComment=1
SingleLineComment=2
RegularExpressionLiteral=3
OpenBracket=4
CloseBracket=5
OpenParen=6
CloseParen=7
OpenBrace=8
CloseBrace=9
SemiColon=10
Comma=11
Assign=12
QuestionMark=13
Colon=14
Ellipsis=15
Dot=16
PlusPlus=17
MinusMinus=18
Plus=19
Minus=20
BitNot=21
Not=22
Multiply=23
Divide=24
Modulus=25
RightShiftArithmetic=26
LeftShiftArithmetic=27
RightShiftLogical=28
LessThan=29
MoreThan=30
LessThanEquals=31
GreaterThanEquals=32
Equals_=33
NotEquals=34
IdentityEquals=35
IdentityNotEquals=36
BitAnd=37
BitXOr=38
BitOr=39
And=40
Or=41
MultiplyAssign=42
DivideAssign=43
ModulusAssign=44
PlusAssign=45
MinusAssign=46
LeftShiftArithmeticAssign=47
RightShiftArithmeticAssign=48
RightShiftLogicalAssign=49
BitAndAssign=50
BitXorAssign=51
BitOrAssign=52
ARROW=53
NullLiteral=54
BooleanLiteral=55
DecimalLiteral=56
HexIntegerLiteral=57
OctalIntegerLiteral=58
OctalIntegerLiteral2=59
BinaryIntegerLiteral=60
Break=61
Do=62
Instanceof=63
Typeof=64
Case=65
Else=66
New=67
Var=68
Catch=69
Finally=70
Return=71
Void=72
Continue=73
For=74
Switch=75
While=76
Debugger=77
Function=78
This=79
With=80
Default=81
If=82
Throw=83
Delete=84
In=85
Try=86
Event=87
AtToken=88
AtLeastOnce=89
AtMostOnce=90
OnlyOnce=91
Class=92
Enum=93
Extends=94
Super=95
Const=96
Export=97
Import=98
Contract=99
Module=100
Oracle=101
Implements=102
Let=103
Private=104
Public=105
Interface=106
Package=107
Protected=108
Static=109
Yield=110
Identifier=111
StringLiteral=112
TemplateStringLiteral=113
WhiteSpaces=114
LineTerminator=115
HtmlComment=116
CDataComment=117
UnexpectedCharacter=118
'['=4
']'=5
'('=6
')'=7
'{'=8
'}'=9
';'=10
','=11
'='=12
'?'=13
':'=14
'...'=15
'.'=16
'++'=17
'--'=18
'+'=19
'-'=20
'~'=21
'!'=22
'*'=23
'/'=24
'%'=25
'>>'=26
'<<'=27
'>>>'=28
'<'=29
'>'=30
'<='=31
'>='=32
'=='=33
'!='=34
'==='=35
'!=='=36
'&'=37
'^'=38
'|'=39
'&&'=40
'||'=41
'*='=42
'/='=43
'%='=44
'+='=45
'-='=46
'<<='=47
'>>='=48
'>>>='=49
'&='=50
'^='=51
'|='=52
'=>'=53
'null'=54
'break'=61
'do'=62
'instanceof'=63
'typeof'=64
'case'=65
'else'=66
'new'=67
'var'=68
'catch'=69
'finally'=70
'return'=71
'void'=72
'continue'=73
'for'=74
'switch'=75
'while'=76
'debugger'=77
'function'=78
'this'=79
'with'=80
'default'=81
'if'=82
'throw'=83
'delete'=84
'in'=85
'try'=86
'event'=87
'@'=88
'AT_LEAST_ONCE'=89
'AT_MOST_ONCE'=90
'ONLY_ONCE'=91
'class'=92
'enum'=93
'extends'=94
'super'=95
'const'=96
'export'=97
'import'=98
'contract'=99
'module'=100
'oracle'=101
'implements'=102
'let'=103
'private'=104
'public'=105
'interface'=106
'package'=107
'protected'=108
'static'=109
'yield'=110

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,946 @@
package org.bdware.sc.parser;// Generated from /Users/frankrwu/Workspace/JetBrains/Idea/BDContract/genparser/input/YJSParser.g4 by ANTLR 4.9.1
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
/**
* This interface defines a complete generic visitor for a parse tree produced
* by {@link YJSParser}.
*
* @param <T> The return type of the visit operation. Use {@link Void} for
* operations with no return type.
*/
public interface YJSParserVisitor<T> extends ParseTreeVisitor<T> {
/**
* Visit a parse tree produced by {@link YJSParser#program}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitProgram(YJSParser.ProgramContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#contractDeclar}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitContractDeclar(YJSParser.ContractDeclarContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#annotations}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitAnnotations(YJSParser.AnnotationsContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#annotation}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitAnnotation(YJSParser.AnnotationContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#annotationArgs}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitAnnotationArgs(YJSParser.AnnotationArgsContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#annotationLiteral}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitAnnotationLiteral(YJSParser.AnnotationLiteralContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#clzOrFunctionDeclaration}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitClzOrFunctionDeclaration(YJSParser.ClzOrFunctionDeclarationContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#eventSemantics}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitEventSemantics(YJSParser.EventSemanticsContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#eventDeclaration}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitEventDeclaration(YJSParser.EventDeclarationContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#sourceElement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitSourceElement(YJSParser.SourceElementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#importStmts}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitImportStmts(YJSParser.ImportStmtsContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#importStmt}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitImportStmt(YJSParser.ImportStmtContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#exportStmt}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitExportStmt(YJSParser.ExportStmtContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#versionName}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitVersionName(YJSParser.VersionNameContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#statement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitStatement(YJSParser.StatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#block}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitBlock(YJSParser.BlockContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#statementList}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitStatementList(YJSParser.StatementListContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#variableStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitVariableStatement(YJSParser.VariableStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#variableDeclarationList}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitVariableDeclarationList(YJSParser.VariableDeclarationListContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#variableDeclaration}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitVariableDeclaration(YJSParser.VariableDeclarationContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#emptyStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitEmptyStatement(YJSParser.EmptyStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#expressionStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitExpressionStatement(YJSParser.ExpressionStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#ifStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitIfStatement(YJSParser.IfStatementContext ctx);
/**
* Visit a parse tree produced by the {@code DoStatement}
* labeled alternative in {@link YJSParser#iterationStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitDoStatement(YJSParser.DoStatementContext ctx);
/**
* Visit a parse tree produced by the {@code WhileStatement}
* labeled alternative in {@link YJSParser#iterationStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitWhileStatement(YJSParser.WhileStatementContext ctx);
/**
* Visit a parse tree produced by the {@code ForStatement}
* labeled alternative in {@link YJSParser#iterationStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitForStatement(YJSParser.ForStatementContext ctx);
/**
* Visit a parse tree produced by the {@code ForVarStatement}
* labeled alternative in {@link YJSParser#iterationStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitForVarStatement(YJSParser.ForVarStatementContext ctx);
/**
* Visit a parse tree produced by the {@code ForInStatement}
* labeled alternative in {@link YJSParser#iterationStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitForInStatement(YJSParser.ForInStatementContext ctx);
/**
* Visit a parse tree produced by the {@code ForVarInStatement}
* labeled alternative in {@link YJSParser#iterationStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitForVarInStatement(YJSParser.ForVarInStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#varModifier}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitVarModifier(YJSParser.VarModifierContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#continueStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitContinueStatement(YJSParser.ContinueStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#breakStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitBreakStatement(YJSParser.BreakStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#returnStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitReturnStatement(YJSParser.ReturnStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#withStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitWithStatement(YJSParser.WithStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#switchStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitSwitchStatement(YJSParser.SwitchStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#caseBlock}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitCaseBlock(YJSParser.CaseBlockContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#caseClauses}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitCaseClauses(YJSParser.CaseClausesContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#caseClause}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitCaseClause(YJSParser.CaseClauseContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#defaultClause}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitDefaultClause(YJSParser.DefaultClauseContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#throwStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitThrowStatement(YJSParser.ThrowStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#tryStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitTryStatement(YJSParser.TryStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#catchProduction}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitCatchProduction(YJSParser.CatchProductionContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#finallyProduction}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitFinallyProduction(YJSParser.FinallyProductionContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#debuggerStatement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitDebuggerStatement(YJSParser.DebuggerStatementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#functionDeclaration}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitFunctionDeclaration(YJSParser.FunctionDeclarationContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#classDeclaration}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitClassDeclaration(YJSParser.ClassDeclarationContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#classTail}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitClassTail(YJSParser.ClassTailContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#classElement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitClassElement(YJSParser.ClassElementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#methodDefinition}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitMethodDefinition(YJSParser.MethodDefinitionContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#formalParameterList}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitFormalParameterList(YJSParser.FormalParameterListContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#formalParameterArg}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitFormalParameterArg(YJSParser.FormalParameterArgContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#lastFormalParameterArg}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitLastFormalParameterArg(YJSParser.LastFormalParameterArgContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#functionBody}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitFunctionBody(YJSParser.FunctionBodyContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#sourceElements}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitSourceElements(YJSParser.SourceElementsContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#arrayLiteral}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrayLiteral(YJSParser.ArrayLiteralContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#elementList}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitElementList(YJSParser.ElementListContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#lastElement}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitLastElement(YJSParser.LastElementContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#objectLiteral}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitObjectLiteral(YJSParser.ObjectLiteralContext ctx);
/**
* Visit a parse tree produced by the {@code PropertyExpressionAssignment}
* labeled alternative in {@link YJSParser#propertyAssignment}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitPropertyExpressionAssignment(YJSParser.PropertyExpressionAssignmentContext ctx);
/**
* Visit a parse tree produced by the {@code ComputedPropertyExpressionAssignment}
* labeled alternative in {@link YJSParser#propertyAssignment}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitComputedPropertyExpressionAssignment(YJSParser.ComputedPropertyExpressionAssignmentContext ctx);
/**
* Visit a parse tree produced by the {@code PropertyShorthand}
* labeled alternative in {@link YJSParser#propertyAssignment}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitPropertyShorthand(YJSParser.PropertyShorthandContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#propertyName}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitPropertyName(YJSParser.PropertyNameContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#arguments}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitArguments(YJSParser.ArgumentsContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#lastArgument}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitLastArgument(YJSParser.LastArgumentContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#expressionSequence}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitExpressionSequence(YJSParser.ExpressionSequenceContext ctx);
/**
* Visit a parse tree produced by the {@code TemplateStringExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitTemplateStringExpression(YJSParser.TemplateStringExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code TernaryExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitTernaryExpression(YJSParser.TernaryExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code LogicalAndExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitLogicalAndExpression(YJSParser.LogicalAndExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code PreIncrementExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitPreIncrementExpression(YJSParser.PreIncrementExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code ObjectLiteralExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitObjectLiteralExpression(YJSParser.ObjectLiteralExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code InExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitInExpression(YJSParser.InExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code LogicalOrExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitLogicalOrExpression(YJSParser.LogicalOrExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code NotExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitNotExpression(YJSParser.NotExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code PreDecreaseExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitPreDecreaseExpression(YJSParser.PreDecreaseExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code ArgumentsExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitArgumentsExpression(YJSParser.ArgumentsExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code ThisExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitThisExpression(YJSParser.ThisExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code UnaryMinusExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitUnaryMinusExpression(YJSParser.UnaryMinusExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code AssignmentExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitAssignmentExpression(YJSParser.AssignmentExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code PostDecreaseExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitPostDecreaseExpression(YJSParser.PostDecreaseExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code TypeofExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitTypeofExpression(YJSParser.TypeofExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code InstanceofExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitInstanceofExpression(YJSParser.InstanceofExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code UnaryPlusExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitUnaryPlusExpression(YJSParser.UnaryPlusExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code ArrowFunctionExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrowFunctionExpression(YJSParser.ArrowFunctionExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code EqualityExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitEqualityExpression(YJSParser.EqualityExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code BitXOrExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitBitXOrExpression(YJSParser.BitXOrExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code SuperExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitSuperExpression(YJSParser.SuperExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code MultiplicativeExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitMultiplicativeExpression(YJSParser.MultiplicativeExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code BitShiftExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitBitShiftExpression(YJSParser.BitShiftExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code ParenthesizedExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitParenthesizedExpression(YJSParser.ParenthesizedExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code AdditiveExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitAdditiveExpression(YJSParser.AdditiveExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code RelationalExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitRelationalExpression(YJSParser.RelationalExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code PostIncrementExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitPostIncrementExpression(YJSParser.PostIncrementExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code BitNotExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitBitNotExpression(YJSParser.BitNotExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code NewExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitNewExpression(YJSParser.NewExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code LiteralExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitLiteralExpression(YJSParser.LiteralExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code ArrayLiteralExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrayLiteralExpression(YJSParser.ArrayLiteralExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code MemberDotExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitMemberDotExpression(YJSParser.MemberDotExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code MemberIndexExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitMemberIndexExpression(YJSParser.MemberIndexExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code IdentifierExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitIdentifierExpression(YJSParser.IdentifierExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code BitAndExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitBitAndExpression(YJSParser.BitAndExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code BitOrExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitBitOrExpression(YJSParser.BitOrExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code AssignmentOperatorExpression}
* labeled alternative in {@link YJSParser#singleExpression}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitAssignmentOperatorExpression(YJSParser.AssignmentOperatorExpressionContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#arrowFunctionParameters}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrowFunctionParameters(YJSParser.ArrowFunctionParametersContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#arrowFunctionBody}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrowFunctionBody(YJSParser.ArrowFunctionBodyContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#assignmentOperator}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitAssignmentOperator(YJSParser.AssignmentOperatorContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#literal}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitLiteral(YJSParser.LiteralContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#numericLiteral}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitNumericLiteral(YJSParser.NumericLiteralContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#identifierName}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitIdentifierName(YJSParser.IdentifierNameContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#reservedWord}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitReservedWord(YJSParser.ReservedWordContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#keyword}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitKeyword(YJSParser.KeywordContext ctx);
/**
* Visit a parse tree produced by {@link YJSParser#eos}.
*
* @param ctx the parse tree
* @return the visitor result
*/
T visitEos(YJSParser.EosContext ctx);
}