Compare commits
10 Commits
main
...
Final-Proj
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c40bdeb411 | ||
|
|
c70db58e20 | ||
|
|
9437b5e88d | ||
|
|
6d02dc8fa7 | ||
|
|
35b5447c7d | ||
|
|
8579c0bfc0 | ||
|
|
c574bf8100 | ||
|
|
c021b1eabf | ||
|
|
ab9d95be1f | ||
|
|
cd1a698fa5 |
File diff suppressed because one or more lines are too long
@@ -1,795 +0,0 @@
|
||||
// Generated from /Users/mannpatel/Desktop/CPSC-499/ExprLexer.g4 by ANTLR 4.13.1
|
||||
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", "CheckReturnValue", "this-escape"})
|
||||
public class ExprLexer extends Lexer {
|
||||
static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
|
||||
|
||||
protected static final DFA[] _decisionToDFA;
|
||||
protected static final PredictionContextCache _sharedContextCache =
|
||||
new PredictionContextCache();
|
||||
public static final int
|
||||
WhiteSpace=1, Comment=2, Abstract=3, Assert=4, Boolean=5, Break=6, Byte=7,
|
||||
Case=8, Catch=9, Char=10, Class=11, Const=12, Continue=13, Default=14,
|
||||
Do=15, Double=16, Else=17, Extends=18, Final=19, Finally=20, Float=21,
|
||||
For=22, Goto=23, If=24, Implements=25, Import=26, InstanceOf=27, Int=28,
|
||||
Interface=29, Long=30, Native=31, New=32, Package=33, Private=34, Protected=35,
|
||||
Public=36, Return=37, Short=38, Static=39, Strictfp=40, Super=41, Switch=42,
|
||||
Synchronized=43, This=44, Throw=45, Throws=46, Transient=47, Try=48, Void=49,
|
||||
Volatile=50, While=51, Dot=52, IntegerLiteral=53, FloatingPointLiteral=54,
|
||||
CharacterLiteral=55, StringLiteral=56, BooleanLiteral=57, NullLiteral=58,
|
||||
ParenthesesLeft=59, ParenthesesRight=60, CurlyBracketLeft=61, CurlyBracketRight=62,
|
||||
SquareBracketLeft=63, SquareBracketRight=64, Semicolon=65, Comma=66, UnsignedRightShiftAssign=67,
|
||||
EqualTo=68, NotEqualTo=69, LessThanEqualTo=70, GreaterThanEqualTo=71,
|
||||
ConditionalAND=72, ConditionalOR=73, Increment=74, Decrement=75, LeftShift=76,
|
||||
SignedRightShift=77, UnsignedRightShift=78, AddAssign=79, SubtractAssign=80,
|
||||
MultiplyAssign=81, DivideAssign=82, BitwiseANDAssign=83, BitwiseORAssign=84,
|
||||
BitwiseXORAssign=85, RemainderAssign=86, LeftShiftAssign=87, SignedRightShiftAssign=88,
|
||||
Assignment=89, BitwiseComplement=90, LessThan=91, GreaterThan=92, LogicalComplement=93,
|
||||
Question=94, Colon=95, Addition=96, Subtraction=97, Multiplication=98,
|
||||
Division=99, BitwiseAND=100, BitwiseOR=101, BitwiseXOR=102, Remainder=103,
|
||||
IDENTIFIER=104;
|
||||
public static String[] channelNames = {
|
||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||
};
|
||||
|
||||
public static String[] modeNames = {
|
||||
"DEFAULT_MODE"
|
||||
};
|
||||
|
||||
private static String[] makeRuleNames() {
|
||||
return new String[] {
|
||||
"LineTerminator", "WhiteSpace", "EndOfLineComment", "Comment", "TraditionalComment",
|
||||
"CommentTail", "CommentTailStar", "NotStar", "NotStarNotSlash", "Abstract",
|
||||
"Assert", "Boolean", "Break", "Byte", "Case", "Catch", "Char", "Class",
|
||||
"Const", "Continue", "Default", "Do", "Double", "Else", "Extends", "Final",
|
||||
"Finally", "Float", "For", "Goto", "If", "Implements", "Import", "InstanceOf",
|
||||
"Int", "Interface", "Long", "Native", "New", "Package", "Private", "Protected",
|
||||
"Public", "Return", "Short", "Static", "Strictfp", "Super", "Switch",
|
||||
"Synchronized", "This", "Throw", "Throws", "Transient", "Try", "Void",
|
||||
"Volatile", "While", "Dot", "IntegerLiteral", "DecimalIntegerLiteral",
|
||||
"HexIntegerLiteral", "OctalIntegerLiteral", "IntegerTypeSuffix", "DecimalNumeral",
|
||||
"HexNumeral", "HexDigits", "HexDigit", "FloatingPointLiteral", "ExponentPart",
|
||||
"ExponentIndicator", "SignedInteger", "Digits", "Digit", "NonZeroDigit",
|
||||
"Sign", "FloatTypeSuffix", "CharacterLiteral", "SingleCharacter", "StringLiteral",
|
||||
"StringCharacters", "StringCharacter", "EscapeSequence", "OctalEscape",
|
||||
"OctalNumeral", "OctalDigits", "OctalDigit", "ZeroToThree", "BooleanLiteral",
|
||||
"NullLiteral", "ParenthesesLeft", "ParenthesesRight", "CurlyBracketLeft",
|
||||
"CurlyBracketRight", "SquareBracketLeft", "SquareBracketRight", "Semicolon",
|
||||
"Comma", "UnsignedRightShiftAssign", "EqualTo", "NotEqualTo", "LessThanEqualTo",
|
||||
"GreaterThanEqualTo", "ConditionalAND", "ConditionalOR", "Increment",
|
||||
"Decrement", "LeftShift", "SignedRightShift", "UnsignedRightShift", "AddAssign",
|
||||
"SubtractAssign", "MultiplyAssign", "DivideAssign", "BitwiseANDAssign",
|
||||
"BitwiseORAssign", "BitwiseXORAssign", "RemainderAssign", "LeftShiftAssign",
|
||||
"SignedRightShiftAssign", "Assignment", "BitwiseComplement", "LessThan",
|
||||
"GreaterThan", "LogicalComplement", "Question", "Colon", "Addition",
|
||||
"Subtraction", "Multiplication", "Division", "BitwiseAND", "BitwiseOR",
|
||||
"BitwiseXOR", "Remainder", "IDENTIFIER", "JavaLetter", "JavaLetterOrDigit"
|
||||
};
|
||||
}
|
||||
public static final String[] ruleNames = makeRuleNames();
|
||||
|
||||
private static String[] makeLiteralNames() {
|
||||
return new String[] {
|
||||
null, null, null, "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'",
|
||||
"'case'", "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'",
|
||||
"'do'", "'double'", "'else'", "'extends'", "'final'", "'finally'", "'float'",
|
||||
"'for'", "'goto'", "'if'", "'implements'", "'import'", "'instanceof'",
|
||||
"'int'", "'interface'", "'long'", "'native'", "'new'", "'package'", "'private'",
|
||||
"'protected'", "'public'", "'return'", "'short'", "'static'", "'strictfp'",
|
||||
"'super'", "'switch'", "'synchronized'", "'this'", "'throw'", "'throws'",
|
||||
"'transient'", "'try'", "'void'", "'volatile'", "'while'", "'.'", null,
|
||||
null, null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['",
|
||||
"']'", "';'", "','", "'>>>='", "'=='", "'!='", "'<='", "'>='", "'&&'",
|
||||
"'||'", "'++'", "'--'", "'<<'", "'>>'", "'>>>'", "'+='", "'-='", "'*='",
|
||||
"'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", "'='", "'~'",
|
||||
"'<'", "'>'", "'!'", "'?'", "':'", "'+'", "'-'", "'*'", "'/'", "'&'",
|
||||
"'|'", "'^'", "'%'"
|
||||
};
|
||||
}
|
||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||
private static String[] makeSymbolicNames() {
|
||||
return new String[] {
|
||||
null, "WhiteSpace", "Comment", "Abstract", "Assert", "Boolean", "Break",
|
||||
"Byte", "Case", "Catch", "Char", "Class", "Const", "Continue", "Default",
|
||||
"Do", "Double", "Else", "Extends", "Final", "Finally", "Float", "For",
|
||||
"Goto", "If", "Implements", "Import", "InstanceOf", "Int", "Interface",
|
||||
"Long", "Native", "New", "Package", "Private", "Protected", "Public",
|
||||
"Return", "Short", "Static", "Strictfp", "Super", "Switch", "Synchronized",
|
||||
"This", "Throw", "Throws", "Transient", "Try", "Void", "Volatile", "While",
|
||||
"Dot", "IntegerLiteral", "FloatingPointLiteral", "CharacterLiteral",
|
||||
"StringLiteral", "BooleanLiteral", "NullLiteral", "ParenthesesLeft",
|
||||
"ParenthesesRight", "CurlyBracketLeft", "CurlyBracketRight", "SquareBracketLeft",
|
||||
"SquareBracketRight", "Semicolon", "Comma", "UnsignedRightShiftAssign",
|
||||
"EqualTo", "NotEqualTo", "LessThanEqualTo", "GreaterThanEqualTo", "ConditionalAND",
|
||||
"ConditionalOR", "Increment", "Decrement", "LeftShift", "SignedRightShift",
|
||||
"UnsignedRightShift", "AddAssign", "SubtractAssign", "MultiplyAssign",
|
||||
"DivideAssign", "BitwiseANDAssign", "BitwiseORAssign", "BitwiseXORAssign",
|
||||
"RemainderAssign", "LeftShiftAssign", "SignedRightShiftAssign", "Assignment",
|
||||
"BitwiseComplement", "LessThan", "GreaterThan", "LogicalComplement",
|
||||
"Question", "Colon", "Addition", "Subtraction", "Multiplication", "Division",
|
||||
"BitwiseAND", "BitwiseOR", "BitwiseXOR", "Remainder", "IDENTIFIER"
|
||||
};
|
||||
}
|
||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||
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] = "<INVALID>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public String[] getTokenNames() {
|
||||
return tokenNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
public Vocabulary getVocabulary() {
|
||||
return VOCABULARY;
|
||||
}
|
||||
|
||||
|
||||
public ExprLexer(CharStream input) {
|
||||
super(input);
|
||||
_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGrammarFileName() { return "ExprLexer.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; }
|
||||
|
||||
public static final String _serializedATN =
|
||||
"\u0004\u0000h\u03ef\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
||||
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
||||
"\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
|
||||
"\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
||||
"\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+
|
||||
"\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+
|
||||
"\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+
|
||||
"\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+
|
||||
"\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+
|
||||
"\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+
|
||||
"\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+
|
||||
"!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+
|
||||
"&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+
|
||||
"+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+
|
||||
"0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u0007"+
|
||||
"5\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007"+
|
||||
":\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007"+
|
||||
"?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007"+
|
||||
"D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007"+
|
||||
"I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007"+
|
||||
"N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007"+
|
||||
"S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007"+
|
||||
"X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007"+
|
||||
"]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007"+
|
||||
"b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007"+
|
||||
"g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007"+
|
||||
"l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007"+
|
||||
"q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007"+
|
||||
"v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007"+
|
||||
"{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002"+
|
||||
"\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002"+
|
||||
"\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002"+
|
||||
"\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002"+
|
||||
"\u0089\u0007\u0089\u0001\u0000\u0001\u0000\u0003\u0000\u0118\b\u0000\u0001"+
|
||||
"\u0000\u0003\u0000\u011b\b\u0000\u0001\u0001\u0001\u0001\u0003\u0001\u011f"+
|
||||
"\b\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+
|
||||
"\u0002\u0005\u0002\u0127\b\u0002\n\u0002\f\u0002\u012a\t\u0002\u0001\u0002"+
|
||||
"\u0003\u0002\u012d\b\u0002\u0001\u0003\u0001\u0003\u0003\u0003\u0131\b"+
|
||||
"\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
|
||||
"\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0003"+
|
||||
"\u0005\u013e\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+
|
||||
"\u0006\u0001\u0006\u0003\u0006\u0146\b\u0006\u0001\u0007\u0001\u0007\u0003"+
|
||||
"\u0007\u014a\b\u0007\u0001\b\u0001\b\u0003\b\u014e\b\b\u0001\t\u0001\t"+
|
||||
"\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001"+
|
||||
"\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001"+
|
||||
"\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+
|
||||
"\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001"+
|
||||
"\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+
|
||||
"\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+
|
||||
"\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011"+
|
||||
"\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012"+
|
||||
"\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013"+
|
||||
"\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
|
||||
"\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
|
||||
"\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015"+
|
||||
"\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+
|
||||
"\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+
|
||||
"\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018"+
|
||||
"\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019"+
|
||||
"\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a"+
|
||||
"\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b"+
|
||||
"\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c"+
|
||||
"\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d"+
|
||||
"\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f"+
|
||||
"\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+
|
||||
"\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 "+
|
||||
"\u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001!\u0001!\u0001"+
|
||||
"!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+
|
||||
"#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+
|
||||
"$\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001%\u0001"+
|
||||
"%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001"+
|
||||
"\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001"+
|
||||
"(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+
|
||||
")\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001"+
|
||||
"+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001"+
|
||||
",\u0001,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001"+
|
||||
".\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001/\u0001/\u0001"+
|
||||
"/\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00010\u00010\u00010\u0001"+
|
||||
"0\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+
|
||||
"1\u00011\u00011\u00011\u00012\u00012\u00012\u00012\u00012\u00013\u0001"+
|
||||
"3\u00013\u00013\u00013\u00013\u00014\u00014\u00014\u00014\u00014\u0001"+
|
||||
"4\u00014\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0001"+
|
||||
"5\u00015\u00016\u00016\u00016\u00016\u00017\u00017\u00017\u00017\u0001"+
|
||||
"7\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+
|
||||
"9\u00019\u00019\u00019\u00019\u00019\u0001:\u0001:\u0001;\u0001;\u0001"+
|
||||
";\u0003;\u02a3\b;\u0001<\u0001<\u0003<\u02a7\b<\u0001=\u0001=\u0003=\u02ab"+
|
||||
"\b=\u0001>\u0001>\u0003>\u02af\b>\u0001?\u0001?\u0001@\u0001@\u0001@\u0003"+
|
||||
"@\u02b6\b@\u0003@\u02b8\b@\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0003"+
|
||||
"A\u02c0\bA\u0001B\u0001B\u0001B\u0001B\u0003B\u02c6\bB\u0001C\u0001C\u0001"+
|
||||
"D\u0001D\u0001D\u0003D\u02cd\bD\u0001D\u0003D\u02d0\bD\u0001D\u0003D\u02d3"+
|
||||
"\bD\u0001D\u0001D\u0001D\u0003D\u02d8\bD\u0001D\u0003D\u02db\bD\u0001"+
|
||||
"D\u0001D\u0001D\u0003D\u02e0\bD\u0001D\u0001D\u0003D\u02e4\bD\u0001D\u0001"+
|
||||
"D\u0003D\u02e8\bD\u0001E\u0001E\u0001E\u0001F\u0001F\u0001G\u0003G\u02f0"+
|
||||
"\bG\u0001G\u0001G\u0001H\u0004H\u02f5\bH\u000bH\fH\u02f6\u0001I\u0001"+
|
||||
"I\u0003I\u02fb\bI\u0001J\u0001J\u0001K\u0001K\u0001L\u0001L\u0001M\u0001"+
|
||||
"M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0003M\u030b\bM\u0001N\u0001"+
|
||||
"N\u0001O\u0001O\u0003O\u0311\bO\u0001O\u0001O\u0001P\u0004P\u0316\bP\u000b"+
|
||||
"P\fP\u0317\u0001Q\u0001Q\u0003Q\u031c\bQ\u0001R\u0001R\u0001R\u0001R\u0001"+
|
||||
"R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+
|
||||
"R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+
|
||||
"R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+
|
||||
"R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0003R\u0348\bR\u0001"+
|
||||
"S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001"+
|
||||
"S\u0003S\u0355\bS\u0001T\u0001T\u0001T\u0001U\u0001U\u0001V\u0001V\u0001"+
|
||||
"W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001"+
|
||||
"X\u0003X\u0369\bX\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001"+
|
||||
"[\u0001[\u0001\\\u0001\\\u0001]\u0001]\u0001^\u0001^\u0001_\u0001_\u0001"+
|
||||
"`\u0001`\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001c\u0001"+
|
||||
"c\u0001c\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001f\u0001f\u0001"+
|
||||
"f\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001"+
|
||||
"j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001m\u0001"+
|
||||
"m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001p\u0001"+
|
||||
"p\u0001p\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001s\u0001s\u0001"+
|
||||
"s\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001"+
|
||||
"v\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001y\u0001y\u0001z\u0001"+
|
||||
"z\u0001{\u0001{\u0001|\u0001|\u0001}\u0001}\u0001~\u0001~\u0001\u007f"+
|
||||
"\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0082"+
|
||||
"\u0001\u0082\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0085"+
|
||||
"\u0001\u0085\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0005\u0087"+
|
||||
"\u03e7\b\u0087\n\u0087\f\u0087\u03ea\t\u0087\u0001\u0088\u0001\u0088\u0001"+
|
||||
"\u0089\u0001\u0089\u0000\u0000\u008a\u0001\u0000\u0003\u0001\u0005\u0000"+
|
||||
"\u0007\u0002\t\u0000\u000b\u0000\r\u0000\u000f\u0000\u0011\u0000\u0013"+
|
||||
"\u0003\u0015\u0004\u0017\u0005\u0019\u0006\u001b\u0007\u001d\b\u001f\t"+
|
||||
"!\n#\u000b%\f\'\r)\u000e+\u000f-\u0010/\u00111\u00123\u00135\u00147\u0015"+
|
||||
"9\u0016;\u0017=\u0018?\u0019A\u001aC\u001bE\u001cG\u001dI\u001eK\u001f"+
|
||||
"M O!Q\"S#U$W%Y&[\'](_)a*c+e,g-i.k/m0o1q2s3u4w5y\u0000{\u0000}\u0000\u007f"+
|
||||
"\u0000\u0081\u0000\u0083\u0000\u0085\u0000\u0087\u0000\u00896\u008b\u0000"+
|
||||
"\u008d\u0000\u008f\u0000\u0091\u0000\u0093\u0000\u0095\u0000\u0097\u0000"+
|
||||
"\u0099\u0000\u009b7\u009d\u0000\u009f8\u00a1\u0000\u00a3\u0000\u00a5\u0000"+
|
||||
"\u00a7\u0000\u00a9\u0000\u00ab\u0000\u00ad\u0000\u00af\u0000\u00b19\u00b3"+
|
||||
":\u00b5;\u00b7<\u00b9=\u00bb>\u00bd?\u00bf@\u00c1A\u00c3B\u00c5C\u00c7"+
|
||||
"D\u00c9E\u00cbF\u00cdG\u00cfH\u00d1I\u00d3J\u00d5K\u00d7L\u00d9M\u00db"+
|
||||
"N\u00ddO\u00dfP\u00e1Q\u00e3R\u00e5S\u00e7T\u00e9U\u00ebV\u00edW\u00ef"+
|
||||
"X\u00f1Y\u00f3Z\u00f5[\u00f7\\\u00f9]\u00fb^\u00fd_\u00ff`\u0101a\u0103"+
|
||||
"b\u0105c\u0107d\u0109e\u010bf\u010dg\u010fh\u0111\u0000\u0113\u0000\u0001"+
|
||||
"\u0000\u000f\u0003\u0000\t\t\f\f \u0002\u0000\n\n\r\r\u0002\u0000**^"+
|
||||
"^\u0003\u0000**//^^\u0002\u0000LLll\u0003\u000009AFaf\u0002\u0000EEee"+
|
||||
"\u0001\u000019\u0002\u0000++--\u0004\u0000DDFFddff\u0003\u0000\'\'\\\\"+
|
||||
"^^\u0001\u000007\u0001\u000003\u0004\u0000$$AZ__az\u0005\u0000$$09AZ_"+
|
||||
"_az\u03fd\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000"+
|
||||
"\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000"+
|
||||
"\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000"+
|
||||
"\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000"+
|
||||
"\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000"+
|
||||
"\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000"+
|
||||
"\'\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001"+
|
||||
"\u0000\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000"+
|
||||
"\u0000\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u0000"+
|
||||
"5\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001"+
|
||||
"\u0000\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000"+
|
||||
"\u0000\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000"+
|
||||
"C\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001"+
|
||||
"\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000"+
|
||||
"\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000"+
|
||||
"Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001"+
|
||||
"\u0000\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000"+
|
||||
"\u0000\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000"+
|
||||
"_\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000\u0000\u0000c\u0001"+
|
||||
"\u0000\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000g\u0001\u0000\u0000"+
|
||||
"\u0000\u0000i\u0001\u0000\u0000\u0000\u0000k\u0001\u0000\u0000\u0000\u0000"+
|
||||
"m\u0001\u0000\u0000\u0000\u0000o\u0001\u0000\u0000\u0000\u0000q\u0001"+
|
||||
"\u0000\u0000\u0000\u0000s\u0001\u0000\u0000\u0000\u0000u\u0001\u0000\u0000"+
|
||||
"\u0000\u0000w\u0001\u0000\u0000\u0000\u0000\u0089\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u009b\u0001\u0000\u0000\u0000\u0000\u009f\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00b1\u0001\u0000\u0000\u0000\u0000\u00b3\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00b5\u0001\u0000\u0000\u0000\u0000\u00b7\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00b9\u0001\u0000\u0000\u0000\u0000\u00bb\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00bd\u0001\u0000\u0000\u0000\u0000\u00bf\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00c1\u0001\u0000\u0000\u0000\u0000\u00c3\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00c5\u0001\u0000\u0000\u0000\u0000\u00c7\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00c9\u0001\u0000\u0000\u0000\u0000\u00cb\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00cd\u0001\u0000\u0000\u0000\u0000\u00cf\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00d1\u0001\u0000\u0000\u0000\u0000\u00d3\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00d5\u0001\u0000\u0000\u0000\u0000\u00d7\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00d9\u0001\u0000\u0000\u0000\u0000\u00db\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00dd\u0001\u0000\u0000\u0000\u0000\u00df\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00e1\u0001\u0000\u0000\u0000\u0000\u00e3\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00e5\u0001\u0000\u0000\u0000\u0000\u00e7\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00e9\u0001\u0000\u0000\u0000\u0000\u00eb\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00ed\u0001\u0000\u0000\u0000\u0000\u00ef\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00f1\u0001\u0000\u0000\u0000\u0000\u00f3\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00f5\u0001\u0000\u0000\u0000\u0000\u00f7\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00f9\u0001\u0000\u0000\u0000\u0000\u00fb\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u00fd\u0001\u0000\u0000\u0000\u0000\u00ff\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u0101\u0001\u0000\u0000\u0000\u0000\u0103\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u0105\u0001\u0000\u0000\u0000\u0000\u0107\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u0109\u0001\u0000\u0000\u0000\u0000\u010b\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u010d\u0001\u0000\u0000\u0000\u0000\u010f\u0001\u0000\u0000\u0000"+
|
||||
"\u0001\u011a\u0001\u0000\u0000\u0000\u0003\u011e\u0001\u0000\u0000\u0000"+
|
||||
"\u0005\u0122\u0001\u0000\u0000\u0000\u0007\u0130\u0001\u0000\u0000\u0000"+
|
||||
"\t\u0134\u0001\u0000\u0000\u0000\u000b\u013d\u0001\u0000\u0000\u0000\r"+
|
||||
"\u0145\u0001\u0000\u0000\u0000\u000f\u0149\u0001\u0000\u0000\u0000\u0011"+
|
||||
"\u014d\u0001\u0000\u0000\u0000\u0013\u014f\u0001\u0000\u0000\u0000\u0015"+
|
||||
"\u0158\u0001\u0000\u0000\u0000\u0017\u015f\u0001\u0000\u0000\u0000\u0019"+
|
||||
"\u0167\u0001\u0000\u0000\u0000\u001b\u016d\u0001\u0000\u0000\u0000\u001d"+
|
||||
"\u0172\u0001\u0000\u0000\u0000\u001f\u0177\u0001\u0000\u0000\u0000!\u017d"+
|
||||
"\u0001\u0000\u0000\u0000#\u0182\u0001\u0000\u0000\u0000%\u0188\u0001\u0000"+
|
||||
"\u0000\u0000\'\u018e\u0001\u0000\u0000\u0000)\u0197\u0001\u0000\u0000"+
|
||||
"\u0000+\u019f\u0001\u0000\u0000\u0000-\u01a2\u0001\u0000\u0000\u0000/"+
|
||||
"\u01a9\u0001\u0000\u0000\u00001\u01ae\u0001\u0000\u0000\u00003\u01b6\u0001"+
|
||||
"\u0000\u0000\u00005\u01bc\u0001\u0000\u0000\u00007\u01c4\u0001\u0000\u0000"+
|
||||
"\u00009\u01ca\u0001\u0000\u0000\u0000;\u01ce\u0001\u0000\u0000\u0000="+
|
||||
"\u01d3\u0001\u0000\u0000\u0000?\u01d6\u0001\u0000\u0000\u0000A\u01e1\u0001"+
|
||||
"\u0000\u0000\u0000C\u01e8\u0001\u0000\u0000\u0000E\u01f3\u0001\u0000\u0000"+
|
||||
"\u0000G\u01f7\u0001\u0000\u0000\u0000I\u0201\u0001\u0000\u0000\u0000K"+
|
||||
"\u0206\u0001\u0000\u0000\u0000M\u020d\u0001\u0000\u0000\u0000O\u0211\u0001"+
|
||||
"\u0000\u0000\u0000Q\u0219\u0001\u0000\u0000\u0000S\u0221\u0001\u0000\u0000"+
|
||||
"\u0000U\u022b\u0001\u0000\u0000\u0000W\u0232\u0001\u0000\u0000\u0000Y"+
|
||||
"\u0239\u0001\u0000\u0000\u0000[\u023f\u0001\u0000\u0000\u0000]\u0246\u0001"+
|
||||
"\u0000\u0000\u0000_\u024f\u0001\u0000\u0000\u0000a\u0255\u0001\u0000\u0000"+
|
||||
"\u0000c\u025c\u0001\u0000\u0000\u0000e\u0269\u0001\u0000\u0000\u0000g"+
|
||||
"\u026e\u0001\u0000\u0000\u0000i\u0274\u0001\u0000\u0000\u0000k\u027b\u0001"+
|
||||
"\u0000\u0000\u0000m\u0285\u0001\u0000\u0000\u0000o\u0289\u0001\u0000\u0000"+
|
||||
"\u0000q\u028e\u0001\u0000\u0000\u0000s\u0297\u0001\u0000\u0000\u0000u"+
|
||||
"\u029d\u0001\u0000\u0000\u0000w\u02a2\u0001\u0000\u0000\u0000y\u02a4\u0001"+
|
||||
"\u0000\u0000\u0000{\u02a8\u0001\u0000\u0000\u0000}\u02ac\u0001\u0000\u0000"+
|
||||
"\u0000\u007f\u02b0\u0001\u0000\u0000\u0000\u0081\u02b7\u0001\u0000\u0000"+
|
||||
"\u0000\u0083\u02bf\u0001\u0000\u0000\u0000\u0085\u02c5\u0001\u0000\u0000"+
|
||||
"\u0000\u0087\u02c7\u0001\u0000\u0000\u0000\u0089\u02e7\u0001\u0000\u0000"+
|
||||
"\u0000\u008b\u02e9\u0001\u0000\u0000\u0000\u008d\u02ec\u0001\u0000\u0000"+
|
||||
"\u0000\u008f\u02ef\u0001\u0000\u0000\u0000\u0091\u02f4\u0001\u0000\u0000"+
|
||||
"\u0000\u0093\u02fa\u0001\u0000\u0000\u0000\u0095\u02fc\u0001\u0000\u0000"+
|
||||
"\u0000\u0097\u02fe\u0001\u0000\u0000\u0000\u0099\u0300\u0001\u0000\u0000"+
|
||||
"\u0000\u009b\u030a\u0001\u0000\u0000\u0000\u009d\u030c\u0001\u0000\u0000"+
|
||||
"\u0000\u009f\u030e\u0001\u0000\u0000\u0000\u00a1\u0315\u0001\u0000\u0000"+
|
||||
"\u0000\u00a3\u031b\u0001\u0000\u0000\u0000\u00a5\u031d\u0001\u0000\u0000"+
|
||||
"\u0000\u00a7\u0354\u0001\u0000\u0000\u0000\u00a9\u0356\u0001\u0000\u0000"+
|
||||
"\u0000\u00ab\u0359\u0001\u0000\u0000\u0000\u00ad\u035b\u0001\u0000\u0000"+
|
||||
"\u0000\u00af\u035d\u0001\u0000\u0000\u0000\u00b1\u0368\u0001\u0000\u0000"+
|
||||
"\u0000\u00b3\u036a\u0001\u0000\u0000\u0000\u00b5\u036f\u0001\u0000\u0000"+
|
||||
"\u0000\u00b7\u0371\u0001\u0000\u0000\u0000\u00b9\u0373\u0001\u0000\u0000"+
|
||||
"\u0000\u00bb\u0375\u0001\u0000\u0000\u0000\u00bd\u0377\u0001\u0000\u0000"+
|
||||
"\u0000\u00bf\u0379\u0001\u0000\u0000\u0000\u00c1\u037b\u0001\u0000\u0000"+
|
||||
"\u0000\u00c3\u037d\u0001\u0000\u0000\u0000\u00c5\u037f\u0001\u0000\u0000"+
|
||||
"\u0000\u00c7\u0384\u0001\u0000\u0000\u0000\u00c9\u0387\u0001\u0000\u0000"+
|
||||
"\u0000\u00cb\u038a\u0001\u0000\u0000\u0000\u00cd\u038d\u0001\u0000\u0000"+
|
||||
"\u0000\u00cf\u0390\u0001\u0000\u0000\u0000\u00d1\u0393\u0001\u0000\u0000"+
|
||||
"\u0000\u00d3\u0396\u0001\u0000\u0000\u0000\u00d5\u0399\u0001\u0000\u0000"+
|
||||
"\u0000\u00d7\u039c\u0001\u0000\u0000\u0000\u00d9\u039f\u0001\u0000\u0000"+
|
||||
"\u0000\u00db\u03a2\u0001\u0000\u0000\u0000\u00dd\u03a6\u0001\u0000\u0000"+
|
||||
"\u0000\u00df\u03a9\u0001\u0000\u0000\u0000\u00e1\u03ac\u0001\u0000\u0000"+
|
||||
"\u0000\u00e3\u03af\u0001\u0000\u0000\u0000\u00e5\u03b2\u0001\u0000\u0000"+
|
||||
"\u0000\u00e7\u03b5\u0001\u0000\u0000\u0000\u00e9\u03b8\u0001\u0000\u0000"+
|
||||
"\u0000\u00eb\u03bb\u0001\u0000\u0000\u0000\u00ed\u03be\u0001\u0000\u0000"+
|
||||
"\u0000\u00ef\u03c2\u0001\u0000\u0000\u0000\u00f1\u03c6\u0001\u0000\u0000"+
|
||||
"\u0000\u00f3\u03c8\u0001\u0000\u0000\u0000\u00f5\u03ca\u0001\u0000\u0000"+
|
||||
"\u0000\u00f7\u03cc\u0001\u0000\u0000\u0000\u00f9\u03ce\u0001\u0000\u0000"+
|
||||
"\u0000\u00fb\u03d0\u0001\u0000\u0000\u0000\u00fd\u03d2\u0001\u0000\u0000"+
|
||||
"\u0000\u00ff\u03d4\u0001\u0000\u0000\u0000\u0101\u03d6\u0001\u0000\u0000"+
|
||||
"\u0000\u0103\u03d8\u0001\u0000\u0000\u0000\u0105\u03da\u0001\u0000\u0000"+
|
||||
"\u0000\u0107\u03dc\u0001\u0000\u0000\u0000\u0109\u03de\u0001\u0000\u0000"+
|
||||
"\u0000\u010b\u03e0\u0001\u0000\u0000\u0000\u010d\u03e2\u0001\u0000\u0000"+
|
||||
"\u0000\u010f\u03e4\u0001\u0000\u0000\u0000\u0111\u03eb\u0001\u0000\u0000"+
|
||||
"\u0000\u0113\u03ed\u0001\u0000\u0000\u0000\u0115\u0117\u0005\r\u0000\u0000"+
|
||||
"\u0116\u0118\u0005\n\u0000\u0000\u0117\u0116\u0001\u0000\u0000\u0000\u0117"+
|
||||
"\u0118\u0001\u0000\u0000\u0000\u0118\u011b\u0001\u0000\u0000\u0000\u0119"+
|
||||
"\u011b\u0005\n\u0000\u0000\u011a\u0115\u0001\u0000\u0000\u0000\u011a\u0119"+
|
||||
"\u0001\u0000\u0000\u0000\u011b\u0002\u0001\u0000\u0000\u0000\u011c\u011f"+
|
||||
"\u0007\u0000\u0000\u0000\u011d\u011f\u0003\u0001\u0000\u0000\u011e\u011c"+
|
||||
"\u0001\u0000\u0000\u0000\u011e\u011d\u0001\u0000\u0000\u0000\u011f\u0120"+
|
||||
"\u0001\u0000\u0000\u0000\u0120\u0121\u0006\u0001\u0000\u0000\u0121\u0004"+
|
||||
"\u0001\u0000\u0000\u0000\u0122\u0123\u0005/\u0000\u0000\u0123\u0124\u0005"+
|
||||
"/\u0000\u0000\u0124\u0128\u0001\u0000\u0000\u0000\u0125\u0127\b\u0001"+
|
||||
"\u0000\u0000\u0126\u0125\u0001\u0000\u0000\u0000\u0127\u012a\u0001\u0000"+
|
||||
"\u0000\u0000\u0128\u0126\u0001\u0000\u0000\u0000\u0128\u0129\u0001\u0000"+
|
||||
"\u0000\u0000\u0129\u012c\u0001\u0000\u0000\u0000\u012a\u0128\u0001\u0000"+
|
||||
"\u0000\u0000\u012b\u012d\u0003\u0001\u0000\u0000\u012c\u012b\u0001\u0000"+
|
||||
"\u0000\u0000\u012c\u012d\u0001\u0000\u0000\u0000\u012d\u0006\u0001\u0000"+
|
||||
"\u0000\u0000\u012e\u0131\u0003\t\u0004\u0000\u012f\u0131\u0003\u0005\u0002"+
|
||||
"\u0000\u0130\u012e\u0001\u0000\u0000\u0000\u0130\u012f\u0001\u0000\u0000"+
|
||||
"\u0000\u0131\u0132\u0001\u0000\u0000\u0000\u0132\u0133\u0006\u0003\u0000"+
|
||||
"\u0000\u0133\b\u0001\u0000\u0000\u0000\u0134\u0135\u0005/\u0000\u0000"+
|
||||
"\u0135\u0136\u0005*\u0000\u0000\u0136\u0137\u0001\u0000\u0000\u0000\u0137"+
|
||||
"\u0138\u0003\u000f\u0007\u0000\u0138\u0139\u0003\u000b\u0005\u0000\u0139"+
|
||||
"\n\u0001\u0000\u0000\u0000\u013a\u013b\u0005*\u0000\u0000\u013b\u013e"+
|
||||
"\u0003\r\u0006\u0000\u013c\u013e\u0003\u000f\u0007\u0000\u013d\u013a\u0001"+
|
||||
"\u0000\u0000\u0000\u013d\u013c\u0001\u0000\u0000\u0000\u013e\f\u0001\u0000"+
|
||||
"\u0000\u0000\u013f\u0146\u0005/\u0000\u0000\u0140\u0141\u0005*\u0000\u0000"+
|
||||
"\u0141\u0146\u0003\r\u0006\u0000\u0142\u0143\u0003\u0011\b\u0000\u0143"+
|
||||
"\u0144\u0003\u000b\u0005\u0000\u0144\u0146\u0001\u0000\u0000\u0000\u0145"+
|
||||
"\u013f\u0001\u0000\u0000\u0000\u0145\u0140\u0001\u0000\u0000\u0000\u0145"+
|
||||
"\u0142\u0001\u0000\u0000\u0000\u0146\u000e\u0001\u0000\u0000\u0000\u0147"+
|
||||
"\u014a\u0007\u0002\u0000\u0000\u0148\u014a\u0003\u0001\u0000\u0000\u0149"+
|
||||
"\u0147\u0001\u0000\u0000\u0000\u0149\u0148\u0001\u0000\u0000\u0000\u014a"+
|
||||
"\u0010\u0001\u0000\u0000\u0000\u014b\u014e\u0007\u0003\u0000\u0000\u014c"+
|
||||
"\u014e\u0003\u0001\u0000\u0000\u014d\u014b\u0001\u0000\u0000\u0000\u014d"+
|
||||
"\u014c\u0001\u0000\u0000\u0000\u014e\u0012\u0001\u0000\u0000\u0000\u014f"+
|
||||
"\u0150\u0005a\u0000\u0000\u0150\u0151\u0005b\u0000\u0000\u0151\u0152\u0005"+
|
||||
"s\u0000\u0000\u0152\u0153\u0005t\u0000\u0000\u0153\u0154\u0005r\u0000"+
|
||||
"\u0000\u0154\u0155\u0005a\u0000\u0000\u0155\u0156\u0005c\u0000\u0000\u0156"+
|
||||
"\u0157\u0005t\u0000\u0000\u0157\u0014\u0001\u0000\u0000\u0000\u0158\u0159"+
|
||||
"\u0005a\u0000\u0000\u0159\u015a\u0005s\u0000\u0000\u015a\u015b\u0005s"+
|
||||
"\u0000\u0000\u015b\u015c\u0005e\u0000\u0000\u015c\u015d\u0005r\u0000\u0000"+
|
||||
"\u015d\u015e\u0005t\u0000\u0000\u015e\u0016\u0001\u0000\u0000\u0000\u015f"+
|
||||
"\u0160\u0005b\u0000\u0000\u0160\u0161\u0005o\u0000\u0000\u0161\u0162\u0005"+
|
||||
"o\u0000\u0000\u0162\u0163\u0005l\u0000\u0000\u0163\u0164\u0005e\u0000"+
|
||||
"\u0000\u0164\u0165\u0005a\u0000\u0000\u0165\u0166\u0005n\u0000\u0000\u0166"+
|
||||
"\u0018\u0001\u0000\u0000\u0000\u0167\u0168\u0005b\u0000\u0000\u0168\u0169"+
|
||||
"\u0005r\u0000\u0000\u0169\u016a\u0005e\u0000\u0000\u016a\u016b\u0005a"+
|
||||
"\u0000\u0000\u016b\u016c\u0005k\u0000\u0000\u016c\u001a\u0001\u0000\u0000"+
|
||||
"\u0000\u016d\u016e\u0005b\u0000\u0000\u016e\u016f\u0005y\u0000\u0000\u016f"+
|
||||
"\u0170\u0005t\u0000\u0000\u0170\u0171\u0005e\u0000\u0000\u0171\u001c\u0001"+
|
||||
"\u0000\u0000\u0000\u0172\u0173\u0005c\u0000\u0000\u0173\u0174\u0005a\u0000"+
|
||||
"\u0000\u0174\u0175\u0005s\u0000\u0000\u0175\u0176\u0005e\u0000\u0000\u0176"+
|
||||
"\u001e\u0001\u0000\u0000\u0000\u0177\u0178\u0005c\u0000\u0000\u0178\u0179"+
|
||||
"\u0005a\u0000\u0000\u0179\u017a\u0005t\u0000\u0000\u017a\u017b\u0005c"+
|
||||
"\u0000\u0000\u017b\u017c\u0005h\u0000\u0000\u017c \u0001\u0000\u0000\u0000"+
|
||||
"\u017d\u017e\u0005c\u0000\u0000\u017e\u017f\u0005h\u0000\u0000\u017f\u0180"+
|
||||
"\u0005a\u0000\u0000\u0180\u0181\u0005r\u0000\u0000\u0181\"\u0001\u0000"+
|
||||
"\u0000\u0000\u0182\u0183\u0005c\u0000\u0000\u0183\u0184\u0005l\u0000\u0000"+
|
||||
"\u0184\u0185\u0005a\u0000\u0000\u0185\u0186\u0005s\u0000\u0000\u0186\u0187"+
|
||||
"\u0005s\u0000\u0000\u0187$\u0001\u0000\u0000\u0000\u0188\u0189\u0005c"+
|
||||
"\u0000\u0000\u0189\u018a\u0005o\u0000\u0000\u018a\u018b\u0005n\u0000\u0000"+
|
||||
"\u018b\u018c\u0005s\u0000\u0000\u018c\u018d\u0005t\u0000\u0000\u018d&"+
|
||||
"\u0001\u0000\u0000\u0000\u018e\u018f\u0005c\u0000\u0000\u018f\u0190\u0005"+
|
||||
"o\u0000\u0000\u0190\u0191\u0005n\u0000\u0000\u0191\u0192\u0005t\u0000"+
|
||||
"\u0000\u0192\u0193\u0005i\u0000\u0000\u0193\u0194\u0005n\u0000\u0000\u0194"+
|
||||
"\u0195\u0005u\u0000\u0000\u0195\u0196\u0005e\u0000\u0000\u0196(\u0001"+
|
||||
"\u0000\u0000\u0000\u0197\u0198\u0005d\u0000\u0000\u0198\u0199\u0005e\u0000"+
|
||||
"\u0000\u0199\u019a\u0005f\u0000\u0000\u019a\u019b\u0005a\u0000\u0000\u019b"+
|
||||
"\u019c\u0005u\u0000\u0000\u019c\u019d\u0005l\u0000\u0000\u019d\u019e\u0005"+
|
||||
"t\u0000\u0000\u019e*\u0001\u0000\u0000\u0000\u019f\u01a0\u0005d\u0000"+
|
||||
"\u0000\u01a0\u01a1\u0005o\u0000\u0000\u01a1,\u0001\u0000\u0000\u0000\u01a2"+
|
||||
"\u01a3\u0005d\u0000\u0000\u01a3\u01a4\u0005o\u0000\u0000\u01a4\u01a5\u0005"+
|
||||
"u\u0000\u0000\u01a5\u01a6\u0005b\u0000\u0000\u01a6\u01a7\u0005l\u0000"+
|
||||
"\u0000\u01a7\u01a8\u0005e\u0000\u0000\u01a8.\u0001\u0000\u0000\u0000\u01a9"+
|
||||
"\u01aa\u0005e\u0000\u0000\u01aa\u01ab\u0005l\u0000\u0000\u01ab\u01ac\u0005"+
|
||||
"s\u0000\u0000\u01ac\u01ad\u0005e\u0000\u0000\u01ad0\u0001\u0000\u0000"+
|
||||
"\u0000\u01ae\u01af\u0005e\u0000\u0000\u01af\u01b0\u0005x\u0000\u0000\u01b0"+
|
||||
"\u01b1\u0005t\u0000\u0000\u01b1\u01b2\u0005e\u0000\u0000\u01b2\u01b3\u0005"+
|
||||
"n\u0000\u0000\u01b3\u01b4\u0005d\u0000\u0000\u01b4\u01b5\u0005s\u0000"+
|
||||
"\u0000\u01b52\u0001\u0000\u0000\u0000\u01b6\u01b7\u0005f\u0000\u0000\u01b7"+
|
||||
"\u01b8\u0005i\u0000\u0000\u01b8\u01b9\u0005n\u0000\u0000\u01b9\u01ba\u0005"+
|
||||
"a\u0000\u0000\u01ba\u01bb\u0005l\u0000\u0000\u01bb4\u0001\u0000\u0000"+
|
||||
"\u0000\u01bc\u01bd\u0005f\u0000\u0000\u01bd\u01be\u0005i\u0000\u0000\u01be"+
|
||||
"\u01bf\u0005n\u0000\u0000\u01bf\u01c0\u0005a\u0000\u0000\u01c0\u01c1\u0005"+
|
||||
"l\u0000\u0000\u01c1\u01c2\u0005l\u0000\u0000\u01c2\u01c3\u0005y\u0000"+
|
||||
"\u0000\u01c36\u0001\u0000\u0000\u0000\u01c4\u01c5\u0005f\u0000\u0000\u01c5"+
|
||||
"\u01c6\u0005l\u0000\u0000\u01c6\u01c7\u0005o\u0000\u0000\u01c7\u01c8\u0005"+
|
||||
"a\u0000\u0000\u01c8\u01c9\u0005t\u0000\u0000\u01c98\u0001\u0000\u0000"+
|
||||
"\u0000\u01ca\u01cb\u0005f\u0000\u0000\u01cb\u01cc\u0005o\u0000\u0000\u01cc"+
|
||||
"\u01cd\u0005r\u0000\u0000\u01cd:\u0001\u0000\u0000\u0000\u01ce\u01cf\u0005"+
|
||||
"g\u0000\u0000\u01cf\u01d0\u0005o\u0000\u0000\u01d0\u01d1\u0005t\u0000"+
|
||||
"\u0000\u01d1\u01d2\u0005o\u0000\u0000\u01d2<\u0001\u0000\u0000\u0000\u01d3"+
|
||||
"\u01d4\u0005i\u0000\u0000\u01d4\u01d5\u0005f\u0000\u0000\u01d5>\u0001"+
|
||||
"\u0000\u0000\u0000\u01d6\u01d7\u0005i\u0000\u0000\u01d7\u01d8\u0005m\u0000"+
|
||||
"\u0000\u01d8\u01d9\u0005p\u0000\u0000\u01d9\u01da\u0005l\u0000\u0000\u01da"+
|
||||
"\u01db\u0005e\u0000\u0000\u01db\u01dc\u0005m\u0000\u0000\u01dc\u01dd\u0005"+
|
||||
"e\u0000\u0000\u01dd\u01de\u0005n\u0000\u0000\u01de\u01df\u0005t\u0000"+
|
||||
"\u0000\u01df\u01e0\u0005s\u0000\u0000\u01e0@\u0001\u0000\u0000\u0000\u01e1"+
|
||||
"\u01e2\u0005i\u0000\u0000\u01e2\u01e3\u0005m\u0000\u0000\u01e3\u01e4\u0005"+
|
||||
"p\u0000\u0000\u01e4\u01e5\u0005o\u0000\u0000\u01e5\u01e6\u0005r\u0000"+
|
||||
"\u0000\u01e6\u01e7\u0005t\u0000\u0000\u01e7B\u0001\u0000\u0000\u0000\u01e8"+
|
||||
"\u01e9\u0005i\u0000\u0000\u01e9\u01ea\u0005n\u0000\u0000\u01ea\u01eb\u0005"+
|
||||
"s\u0000\u0000\u01eb\u01ec\u0005t\u0000\u0000\u01ec\u01ed\u0005a\u0000"+
|
||||
"\u0000\u01ed\u01ee\u0005n\u0000\u0000\u01ee\u01ef\u0005c\u0000\u0000\u01ef"+
|
||||
"\u01f0\u0005e\u0000\u0000\u01f0\u01f1\u0005o\u0000\u0000\u01f1\u01f2\u0005"+
|
||||
"f\u0000\u0000\u01f2D\u0001\u0000\u0000\u0000\u01f3\u01f4\u0005i\u0000"+
|
||||
"\u0000\u01f4\u01f5\u0005n\u0000\u0000\u01f5\u01f6\u0005t\u0000\u0000\u01f6"+
|
||||
"F\u0001\u0000\u0000\u0000\u01f7\u01f8\u0005i\u0000\u0000\u01f8\u01f9\u0005"+
|
||||
"n\u0000\u0000\u01f9\u01fa\u0005t\u0000\u0000\u01fa\u01fb\u0005e\u0000"+
|
||||
"\u0000\u01fb\u01fc\u0005r\u0000\u0000\u01fc\u01fd\u0005f\u0000\u0000\u01fd"+
|
||||
"\u01fe\u0005a\u0000\u0000\u01fe\u01ff\u0005c\u0000\u0000\u01ff\u0200\u0005"+
|
||||
"e\u0000\u0000\u0200H\u0001\u0000\u0000\u0000\u0201\u0202\u0005l\u0000"+
|
||||
"\u0000\u0202\u0203\u0005o\u0000\u0000\u0203\u0204\u0005n\u0000\u0000\u0204"+
|
||||
"\u0205\u0005g\u0000\u0000\u0205J\u0001\u0000\u0000\u0000\u0206\u0207\u0005"+
|
||||
"n\u0000\u0000\u0207\u0208\u0005a\u0000\u0000\u0208\u0209\u0005t\u0000"+
|
||||
"\u0000\u0209\u020a\u0005i\u0000\u0000\u020a\u020b\u0005v\u0000\u0000\u020b"+
|
||||
"\u020c\u0005e\u0000\u0000\u020cL\u0001\u0000\u0000\u0000\u020d\u020e\u0005"+
|
||||
"n\u0000\u0000\u020e\u020f\u0005e\u0000\u0000\u020f\u0210\u0005w\u0000"+
|
||||
"\u0000\u0210N\u0001\u0000\u0000\u0000\u0211\u0212\u0005p\u0000\u0000\u0212"+
|
||||
"\u0213\u0005a\u0000\u0000\u0213\u0214\u0005c\u0000\u0000\u0214\u0215\u0005"+
|
||||
"k\u0000\u0000\u0215\u0216\u0005a\u0000\u0000\u0216\u0217\u0005g\u0000"+
|
||||
"\u0000\u0217\u0218\u0005e\u0000\u0000\u0218P\u0001\u0000\u0000\u0000\u0219"+
|
||||
"\u021a\u0005p\u0000\u0000\u021a\u021b\u0005r\u0000\u0000\u021b\u021c\u0005"+
|
||||
"i\u0000\u0000\u021c\u021d\u0005v\u0000\u0000\u021d\u021e\u0005a\u0000"+
|
||||
"\u0000\u021e\u021f\u0005t\u0000\u0000\u021f\u0220\u0005e\u0000\u0000\u0220"+
|
||||
"R\u0001\u0000\u0000\u0000\u0221\u0222\u0005p\u0000\u0000\u0222\u0223\u0005"+
|
||||
"r\u0000\u0000\u0223\u0224\u0005o\u0000\u0000\u0224\u0225\u0005t\u0000"+
|
||||
"\u0000\u0225\u0226\u0005e\u0000\u0000\u0226\u0227\u0005c\u0000\u0000\u0227"+
|
||||
"\u0228\u0005t\u0000\u0000\u0228\u0229\u0005e\u0000\u0000\u0229\u022a\u0005"+
|
||||
"d\u0000\u0000\u022aT\u0001\u0000\u0000\u0000\u022b\u022c\u0005p\u0000"+
|
||||
"\u0000\u022c\u022d\u0005u\u0000\u0000\u022d\u022e\u0005b\u0000\u0000\u022e"+
|
||||
"\u022f\u0005l\u0000\u0000\u022f\u0230\u0005i\u0000\u0000\u0230\u0231\u0005"+
|
||||
"c\u0000\u0000\u0231V\u0001\u0000\u0000\u0000\u0232\u0233\u0005r\u0000"+
|
||||
"\u0000\u0233\u0234\u0005e\u0000\u0000\u0234\u0235\u0005t\u0000\u0000\u0235"+
|
||||
"\u0236\u0005u\u0000\u0000\u0236\u0237\u0005r\u0000\u0000\u0237\u0238\u0005"+
|
||||
"n\u0000\u0000\u0238X\u0001\u0000\u0000\u0000\u0239\u023a\u0005s\u0000"+
|
||||
"\u0000\u023a\u023b\u0005h\u0000\u0000\u023b\u023c\u0005o\u0000\u0000\u023c"+
|
||||
"\u023d\u0005r\u0000\u0000\u023d\u023e\u0005t\u0000\u0000\u023eZ\u0001"+
|
||||
"\u0000\u0000\u0000\u023f\u0240\u0005s\u0000\u0000\u0240\u0241\u0005t\u0000"+
|
||||
"\u0000\u0241\u0242\u0005a\u0000\u0000\u0242\u0243\u0005t\u0000\u0000\u0243"+
|
||||
"\u0244\u0005i\u0000\u0000\u0244\u0245\u0005c\u0000\u0000\u0245\\\u0001"+
|
||||
"\u0000\u0000\u0000\u0246\u0247\u0005s\u0000\u0000\u0247\u0248\u0005t\u0000"+
|
||||
"\u0000\u0248\u0249\u0005r\u0000\u0000\u0249\u024a\u0005i\u0000\u0000\u024a"+
|
||||
"\u024b\u0005c\u0000\u0000\u024b\u024c\u0005t\u0000\u0000\u024c\u024d\u0005"+
|
||||
"f\u0000\u0000\u024d\u024e\u0005p\u0000\u0000\u024e^\u0001\u0000\u0000"+
|
||||
"\u0000\u024f\u0250\u0005s\u0000\u0000\u0250\u0251\u0005u\u0000\u0000\u0251"+
|
||||
"\u0252\u0005p\u0000\u0000\u0252\u0253\u0005e\u0000\u0000\u0253\u0254\u0005"+
|
||||
"r\u0000\u0000\u0254`\u0001\u0000\u0000\u0000\u0255\u0256\u0005s\u0000"+
|
||||
"\u0000\u0256\u0257\u0005w\u0000\u0000\u0257\u0258\u0005i\u0000\u0000\u0258"+
|
||||
"\u0259\u0005t\u0000\u0000\u0259\u025a\u0005c\u0000\u0000\u025a\u025b\u0005"+
|
||||
"h\u0000\u0000\u025bb\u0001\u0000\u0000\u0000\u025c\u025d\u0005s\u0000"+
|
||||
"\u0000\u025d\u025e\u0005y\u0000\u0000\u025e\u025f\u0005n\u0000\u0000\u025f"+
|
||||
"\u0260\u0005c\u0000\u0000\u0260\u0261\u0005h\u0000\u0000\u0261\u0262\u0005"+
|
||||
"r\u0000\u0000\u0262\u0263\u0005o\u0000\u0000\u0263\u0264\u0005n\u0000"+
|
||||
"\u0000\u0264\u0265\u0005i\u0000\u0000\u0265\u0266\u0005z\u0000\u0000\u0266"+
|
||||
"\u0267\u0005e\u0000\u0000\u0267\u0268\u0005d\u0000\u0000\u0268d\u0001"+
|
||||
"\u0000\u0000\u0000\u0269\u026a\u0005t\u0000\u0000\u026a\u026b\u0005h\u0000"+
|
||||
"\u0000\u026b\u026c\u0005i\u0000\u0000\u026c\u026d\u0005s\u0000\u0000\u026d"+
|
||||
"f\u0001\u0000\u0000\u0000\u026e\u026f\u0005t\u0000\u0000\u026f\u0270\u0005"+
|
||||
"h\u0000\u0000\u0270\u0271\u0005r\u0000\u0000\u0271\u0272\u0005o\u0000"+
|
||||
"\u0000\u0272\u0273\u0005w\u0000\u0000\u0273h\u0001\u0000\u0000\u0000\u0274"+
|
||||
"\u0275\u0005t\u0000\u0000\u0275\u0276\u0005h\u0000\u0000\u0276\u0277\u0005"+
|
||||
"r\u0000\u0000\u0277\u0278\u0005o\u0000\u0000\u0278\u0279\u0005w\u0000"+
|
||||
"\u0000\u0279\u027a\u0005s\u0000\u0000\u027aj\u0001\u0000\u0000\u0000\u027b"+
|
||||
"\u027c\u0005t\u0000\u0000\u027c\u027d\u0005r\u0000\u0000\u027d\u027e\u0005"+
|
||||
"a\u0000\u0000\u027e\u027f\u0005n\u0000\u0000\u027f\u0280\u0005s\u0000"+
|
||||
"\u0000\u0280\u0281\u0005i\u0000\u0000\u0281\u0282\u0005e\u0000\u0000\u0282"+
|
||||
"\u0283\u0005n\u0000\u0000\u0283\u0284\u0005t\u0000\u0000\u0284l\u0001"+
|
||||
"\u0000\u0000\u0000\u0285\u0286\u0005t\u0000\u0000\u0286\u0287\u0005r\u0000"+
|
||||
"\u0000\u0287\u0288\u0005y\u0000\u0000\u0288n\u0001\u0000\u0000\u0000\u0289"+
|
||||
"\u028a\u0005v\u0000\u0000\u028a\u028b\u0005o\u0000\u0000\u028b\u028c\u0005"+
|
||||
"i\u0000\u0000\u028c\u028d\u0005d\u0000\u0000\u028dp\u0001\u0000\u0000"+
|
||||
"\u0000\u028e\u028f\u0005v\u0000\u0000\u028f\u0290\u0005o\u0000\u0000\u0290"+
|
||||
"\u0291\u0005l\u0000\u0000\u0291\u0292\u0005a\u0000\u0000\u0292\u0293\u0005"+
|
||||
"t\u0000\u0000\u0293\u0294\u0005i\u0000\u0000\u0294\u0295\u0005l\u0000"+
|
||||
"\u0000\u0295\u0296\u0005e\u0000\u0000\u0296r\u0001\u0000\u0000\u0000\u0297"+
|
||||
"\u0298\u0005w\u0000\u0000\u0298\u0299\u0005h\u0000\u0000\u0299\u029a\u0005"+
|
||||
"i\u0000\u0000\u029a\u029b\u0005l\u0000\u0000\u029b\u029c\u0005e\u0000"+
|
||||
"\u0000\u029ct\u0001\u0000\u0000\u0000\u029d\u029e\u0005.\u0000\u0000\u029e"+
|
||||
"v\u0001\u0000\u0000\u0000\u029f\u02a3\u0003y<\u0000\u02a0\u02a3\u0003"+
|
||||
"{=\u0000\u02a1\u02a3\u0003}>\u0000\u02a2\u029f\u0001\u0000\u0000\u0000"+
|
||||
"\u02a2\u02a0\u0001\u0000\u0000\u0000\u02a2\u02a1\u0001\u0000\u0000\u0000"+
|
||||
"\u02a3x\u0001\u0000\u0000\u0000\u02a4\u02a6\u0003\u0081@\u0000\u02a5\u02a7"+
|
||||
"\u0003\u007f?\u0000\u02a6\u02a5\u0001\u0000\u0000\u0000\u02a6\u02a7\u0001"+
|
||||
"\u0000\u0000\u0000\u02a7z\u0001\u0000\u0000\u0000\u02a8\u02aa\u0003\u0083"+
|
||||
"A\u0000\u02a9\u02ab\u0003\u007f?\u0000\u02aa\u02a9\u0001\u0000\u0000\u0000"+
|
||||
"\u02aa\u02ab\u0001\u0000\u0000\u0000\u02ab|\u0001\u0000\u0000\u0000\u02ac"+
|
||||
"\u02ae\u0003\u00a9T\u0000\u02ad\u02af\u0003\u007f?\u0000\u02ae\u02ad\u0001"+
|
||||
"\u0000\u0000\u0000\u02ae\u02af\u0001\u0000\u0000\u0000\u02af~\u0001\u0000"+
|
||||
"\u0000\u0000\u02b0\u02b1\u0007\u0004\u0000\u0000\u02b1\u0080\u0001\u0000"+
|
||||
"\u0000\u0000\u02b2\u02b8\u00050\u0000\u0000\u02b3\u02b5\u0003\u0095J\u0000"+
|
||||
"\u02b4\u02b6\u0003\u0091H\u0000\u02b5\u02b4\u0001\u0000\u0000\u0000\u02b5"+
|
||||
"\u02b6\u0001\u0000\u0000\u0000\u02b6\u02b8\u0001\u0000\u0000\u0000\u02b7"+
|
||||
"\u02b2\u0001\u0000\u0000\u0000\u02b7\u02b3\u0001\u0000\u0000\u0000\u02b8"+
|
||||
"\u0082\u0001\u0000\u0000\u0000\u02b9\u02ba\u00050\u0000\u0000\u02ba\u02bb"+
|
||||
"\u0005x\u0000\u0000\u02bb\u02c0\u0003\u0085B\u0000\u02bc\u02bd\u00050"+
|
||||
"\u0000\u0000\u02bd\u02be\u0005X\u0000\u0000\u02be\u02c0\u0003\u0085B\u0000"+
|
||||
"\u02bf\u02b9\u0001\u0000\u0000\u0000\u02bf\u02bc\u0001\u0000\u0000\u0000"+
|
||||
"\u02c0\u0084\u0001\u0000\u0000\u0000\u02c1\u02c6\u0003\u0087C\u0000\u02c2"+
|
||||
"\u02c3\u0003\u0087C\u0000\u02c3\u02c4\u0003\u0085B\u0000\u02c4\u02c6\u0001"+
|
||||
"\u0000\u0000\u0000\u02c5\u02c1\u0001\u0000\u0000\u0000\u02c5\u02c2\u0001"+
|
||||
"\u0000\u0000\u0000\u02c6\u0086\u0001\u0000\u0000\u0000\u02c7\u02c8\u0007"+
|
||||
"\u0005\u0000\u0000\u02c8\u0088\u0001\u0000\u0000\u0000\u02c9\u02ca\u0003"+
|
||||
"\u0091H\u0000\u02ca\u02cc\u0005.\u0000\u0000\u02cb\u02cd\u0003\u0091H"+
|
||||
"\u0000\u02cc\u02cb\u0001\u0000\u0000\u0000\u02cc\u02cd\u0001\u0000\u0000"+
|
||||
"\u0000\u02cd\u02cf\u0001\u0000\u0000\u0000\u02ce\u02d0\u0003\u008bE\u0000"+
|
||||
"\u02cf\u02ce\u0001\u0000\u0000\u0000\u02cf\u02d0\u0001\u0000\u0000\u0000"+
|
||||
"\u02d0\u02d2\u0001\u0000\u0000\u0000\u02d1\u02d3\u0003\u0099L\u0000\u02d2"+
|
||||
"\u02d1\u0001\u0000\u0000\u0000\u02d2\u02d3\u0001\u0000\u0000\u0000\u02d3"+
|
||||
"\u02e8\u0001\u0000\u0000\u0000\u02d4\u02d5\u0005.\u0000\u0000\u02d5\u02d7"+
|
||||
"\u0003\u0091H\u0000\u02d6\u02d8\u0003\u008bE\u0000\u02d7\u02d6\u0001\u0000"+
|
||||
"\u0000\u0000\u02d7\u02d8\u0001\u0000\u0000\u0000\u02d8\u02da\u0001\u0000"+
|
||||
"\u0000\u0000\u02d9\u02db\u0003\u0099L\u0000\u02da\u02d9\u0001\u0000\u0000"+
|
||||
"\u0000\u02da\u02db\u0001\u0000\u0000\u0000\u02db\u02e8\u0001\u0000\u0000"+
|
||||
"\u0000\u02dc\u02dd\u0003\u0091H\u0000\u02dd\u02df\u0003\u008bE\u0000\u02de"+
|
||||
"\u02e0\u0003\u0099L\u0000\u02df\u02de\u0001\u0000\u0000\u0000\u02df\u02e0"+
|
||||
"\u0001\u0000\u0000\u0000\u02e0\u02e8\u0001\u0000\u0000\u0000\u02e1\u02e3"+
|
||||
"\u0003\u0091H\u0000\u02e2\u02e4\u0003\u008bE\u0000\u02e3\u02e2\u0001\u0000"+
|
||||
"\u0000\u0000\u02e3\u02e4\u0001\u0000\u0000\u0000\u02e4\u02e5\u0001\u0000"+
|
||||
"\u0000\u0000\u02e5\u02e6\u0003\u0099L\u0000\u02e6\u02e8\u0001\u0000\u0000"+
|
||||
"\u0000\u02e7\u02c9\u0001\u0000\u0000\u0000\u02e7\u02d4\u0001\u0000\u0000"+
|
||||
"\u0000\u02e7\u02dc\u0001\u0000\u0000\u0000\u02e7\u02e1\u0001\u0000\u0000"+
|
||||
"\u0000\u02e8\u008a\u0001\u0000\u0000\u0000\u02e9\u02ea\u0003\u008dF\u0000"+
|
||||
"\u02ea\u02eb\u0003\u008fG\u0000\u02eb\u008c\u0001\u0000\u0000\u0000\u02ec"+
|
||||
"\u02ed\u0007\u0006\u0000\u0000\u02ed\u008e\u0001\u0000\u0000\u0000\u02ee"+
|
||||
"\u02f0\u0003\u0097K\u0000\u02ef\u02ee\u0001\u0000\u0000\u0000\u02ef\u02f0"+
|
||||
"\u0001\u0000\u0000\u0000\u02f0\u02f1\u0001\u0000\u0000\u0000\u02f1\u02f2"+
|
||||
"\u0003\u0091H\u0000\u02f2\u0090\u0001\u0000\u0000\u0000\u02f3\u02f5\u0003"+
|
||||
"\u0093I\u0000\u02f4\u02f3\u0001\u0000\u0000\u0000\u02f5\u02f6\u0001\u0000"+
|
||||
"\u0000\u0000\u02f6\u02f4\u0001\u0000\u0000\u0000\u02f6\u02f7\u0001\u0000"+
|
||||
"\u0000\u0000\u02f7\u0092\u0001\u0000\u0000\u0000\u02f8\u02fb\u00050\u0000"+
|
||||
"\u0000\u02f9\u02fb\u0003\u0095J\u0000\u02fa\u02f8\u0001\u0000\u0000\u0000"+
|
||||
"\u02fa\u02f9\u0001\u0000\u0000\u0000\u02fb\u0094\u0001\u0000\u0000\u0000"+
|
||||
"\u02fc\u02fd\u0007\u0007\u0000\u0000\u02fd\u0096\u0001\u0000\u0000\u0000"+
|
||||
"\u02fe\u02ff\u0007\b\u0000\u0000\u02ff\u0098\u0001\u0000\u0000\u0000\u0300"+
|
||||
"\u0301\u0007\t\u0000\u0000\u0301\u009a\u0001\u0000\u0000\u0000\u0302\u0303"+
|
||||
"\u0005\'\u0000\u0000\u0303\u0304\u0003\u009dN\u0000\u0304\u0305\u0005"+
|
||||
"\'\u0000\u0000\u0305\u030b\u0001\u0000\u0000\u0000\u0306\u0307\u0005\'"+
|
||||
"\u0000\u0000\u0307\u0308\u0003\u00a5R\u0000\u0308\u0309\u0005\'\u0000"+
|
||||
"\u0000\u0309\u030b\u0001\u0000\u0000\u0000\u030a\u0302\u0001\u0000\u0000"+
|
||||
"\u0000\u030a\u0306\u0001\u0000\u0000\u0000\u030b\u009c\u0001\u0000\u0000"+
|
||||
"\u0000\u030c\u030d\u0007\n\u0000\u0000\u030d\u009e\u0001\u0000\u0000\u0000"+
|
||||
"\u030e\u0310\u0005\"\u0000\u0000\u030f\u0311\u0003\u00a1P\u0000\u0310"+
|
||||
"\u030f\u0001\u0000\u0000\u0000\u0310\u0311\u0001\u0000\u0000\u0000\u0311"+
|
||||
"\u0312\u0001\u0000\u0000\u0000\u0312\u0313\u0005\"\u0000\u0000\u0313\u00a0"+
|
||||
"\u0001\u0000\u0000\u0000\u0314\u0316\u0003\u00a3Q\u0000\u0315\u0314\u0001"+
|
||||
"\u0000\u0000\u0000\u0316\u0317\u0001\u0000\u0000\u0000\u0317\u0315\u0001"+
|
||||
"\u0000\u0000\u0000\u0317\u0318\u0001\u0000\u0000\u0000\u0318\u00a2\u0001"+
|
||||
"\u0000\u0000\u0000\u0319\u031c\u0003\u009dN\u0000\u031a\u031c\u0003\u00a5"+
|
||||
"R\u0000\u031b\u0319\u0001\u0000\u0000\u0000\u031b\u031a\u0001\u0000\u0000"+
|
||||
"\u0000\u031c\u00a4\u0001\u0000\u0000\u0000\u031d\u0347\u0005\\\u0000\u0000"+
|
||||
"\u031e\u031f\u0005u\u0000\u0000\u031f\u0320\u00050\u0000\u0000\u0320\u0321"+
|
||||
"\u00050\u0000\u0000\u0321\u0322\u00050\u0000\u0000\u0322\u0348\u00058"+
|
||||
"\u0000\u0000\u0323\u0324\u0005u\u0000\u0000\u0324\u0325\u00050\u0000\u0000"+
|
||||
"\u0325\u0326\u00050\u0000\u0000\u0326\u0327\u00050\u0000\u0000\u0327\u0348"+
|
||||
"\u00059\u0000\u0000\u0328\u0329\u0005u\u0000\u0000\u0329\u032a\u00050"+
|
||||
"\u0000\u0000\u032a\u032b\u00050\u0000\u0000\u032b\u032c\u00050\u0000\u0000"+
|
||||
"\u032c\u0348\u0005a\u0000\u0000\u032d\u032e\u0005u\u0000\u0000\u032e\u032f"+
|
||||
"\u00050\u0000\u0000\u032f\u0330\u00050\u0000\u0000\u0330\u0331\u00050"+
|
||||
"\u0000\u0000\u0331\u0348\u0005c\u0000\u0000\u0332\u0333\u0005u\u0000\u0000"+
|
||||
"\u0333\u0334\u00050\u0000\u0000\u0334\u0335\u00050\u0000\u0000\u0335\u0336"+
|
||||
"\u00050\u0000\u0000\u0336\u0348\u0005d\u0000\u0000\u0337\u0338\u0005u"+
|
||||
"\u0000\u0000\u0338\u0339\u00050\u0000\u0000\u0339\u033a\u00050\u0000\u0000"+
|
||||
"\u033a\u033b\u00052\u0000\u0000\u033b\u0348\u00052\u0000\u0000\u033c\u033d"+
|
||||
"\u0005u\u0000\u0000\u033d\u033e\u00050\u0000\u0000\u033e\u033f\u00050"+
|
||||
"\u0000\u0000\u033f\u0340\u00052\u0000\u0000\u0340\u0348\u00057\u0000\u0000"+
|
||||
"\u0341\u0342\u0005u\u0000\u0000\u0342\u0343\u00050\u0000\u0000\u0343\u0344"+
|
||||
"\u00050\u0000\u0000\u0344\u0345\u00055\u0000\u0000\u0345\u0348\u0005c"+
|
||||
"\u0000\u0000\u0346\u0348\u0003\u00a7S\u0000\u0347\u031e\u0001\u0000\u0000"+
|
||||
"\u0000\u0347\u0323\u0001\u0000\u0000\u0000\u0347\u0328\u0001\u0000\u0000"+
|
||||
"\u0000\u0347\u032d\u0001\u0000\u0000\u0000\u0347\u0332\u0001\u0000\u0000"+
|
||||
"\u0000\u0347\u0337\u0001\u0000\u0000\u0000\u0347\u033c\u0001\u0000\u0000"+
|
||||
"\u0000\u0347\u0341\u0001\u0000\u0000\u0000\u0347\u0346\u0001\u0000\u0000"+
|
||||
"\u0000\u0348\u00a6\u0001\u0000\u0000\u0000\u0349\u034a\u0005\\\u0000\u0000"+
|
||||
"\u034a\u0355\u0003\u00adV\u0000\u034b\u034c\u0005\\\u0000\u0000\u034c"+
|
||||
"\u034d\u0003\u00adV\u0000\u034d\u034e\u0003\u00adV\u0000\u034e\u0355\u0001"+
|
||||
"\u0000\u0000\u0000\u034f\u0350\u0005\\\u0000\u0000\u0350\u0351\u0003\u00af"+
|
||||
"W\u0000\u0351\u0352\u0003\u00adV\u0000\u0352\u0353\u0003\u00adV\u0000"+
|
||||
"\u0353\u0355\u0001\u0000\u0000\u0000\u0354\u0349\u0001\u0000\u0000\u0000"+
|
||||
"\u0354\u034b\u0001\u0000\u0000\u0000\u0354\u034f\u0001\u0000\u0000\u0000"+
|
||||
"\u0355\u00a8\u0001\u0000\u0000\u0000\u0356\u0357\u00050\u0000\u0000\u0357"+
|
||||
"\u0358\u0003\u00abU\u0000\u0358\u00aa\u0001\u0000\u0000\u0000\u0359\u035a"+
|
||||
"\u0003\u00adV\u0000\u035a\u00ac\u0001\u0000\u0000\u0000\u035b\u035c\u0007"+
|
||||
"\u000b\u0000\u0000\u035c\u00ae\u0001\u0000\u0000\u0000\u035d\u035e\u0007"+
|
||||
"\f\u0000\u0000\u035e\u00b0\u0001\u0000\u0000\u0000\u035f\u0360\u0005t"+
|
||||
"\u0000\u0000\u0360\u0361\u0005r\u0000\u0000\u0361\u0362\u0005u\u0000\u0000"+
|
||||
"\u0362\u0369\u0005e\u0000\u0000\u0363\u0364\u0005f\u0000\u0000\u0364\u0365"+
|
||||
"\u0005a\u0000\u0000\u0365\u0366\u0005l\u0000\u0000\u0366\u0367\u0005s"+
|
||||
"\u0000\u0000\u0367\u0369\u0005e\u0000\u0000\u0368\u035f\u0001\u0000\u0000"+
|
||||
"\u0000\u0368\u0363\u0001\u0000\u0000\u0000\u0369\u00b2\u0001\u0000\u0000"+
|
||||
"\u0000\u036a\u036b\u0005n\u0000\u0000\u036b\u036c\u0005u\u0000\u0000\u036c"+
|
||||
"\u036d\u0005l\u0000\u0000\u036d\u036e\u0005l\u0000\u0000\u036e\u00b4\u0001"+
|
||||
"\u0000\u0000\u0000\u036f\u0370\u0005(\u0000\u0000\u0370\u00b6\u0001\u0000"+
|
||||
"\u0000\u0000\u0371\u0372\u0005)\u0000\u0000\u0372\u00b8\u0001\u0000\u0000"+
|
||||
"\u0000\u0373\u0374\u0005{\u0000\u0000\u0374\u00ba\u0001\u0000\u0000\u0000"+
|
||||
"\u0375\u0376\u0005}\u0000\u0000\u0376\u00bc\u0001\u0000\u0000\u0000\u0377"+
|
||||
"\u0378\u0005[\u0000\u0000\u0378\u00be\u0001\u0000\u0000\u0000\u0379\u037a"+
|
||||
"\u0005]\u0000\u0000\u037a\u00c0\u0001\u0000\u0000\u0000\u037b\u037c\u0005"+
|
||||
";\u0000\u0000\u037c\u00c2\u0001\u0000\u0000\u0000\u037d\u037e\u0005,\u0000"+
|
||||
"\u0000\u037e\u00c4\u0001\u0000\u0000\u0000\u037f\u0380\u0005>\u0000\u0000"+
|
||||
"\u0380\u0381\u0005>\u0000\u0000\u0381\u0382\u0005>\u0000\u0000\u0382\u0383"+
|
||||
"\u0005=\u0000\u0000\u0383\u00c6\u0001\u0000\u0000\u0000\u0384\u0385\u0005"+
|
||||
"=\u0000\u0000\u0385\u0386\u0005=\u0000\u0000\u0386\u00c8\u0001\u0000\u0000"+
|
||||
"\u0000\u0387\u0388\u0005!\u0000\u0000\u0388\u0389\u0005=\u0000\u0000\u0389"+
|
||||
"\u00ca\u0001\u0000\u0000\u0000\u038a\u038b\u0005<\u0000\u0000\u038b\u038c"+
|
||||
"\u0005=\u0000\u0000\u038c\u00cc\u0001\u0000\u0000\u0000\u038d\u038e\u0005"+
|
||||
">\u0000\u0000\u038e\u038f\u0005=\u0000\u0000\u038f\u00ce\u0001\u0000\u0000"+
|
||||
"\u0000\u0390\u0391\u0005&\u0000\u0000\u0391\u0392\u0005&\u0000\u0000\u0392"+
|
||||
"\u00d0\u0001\u0000\u0000\u0000\u0393\u0394\u0005|\u0000\u0000\u0394\u0395"+
|
||||
"\u0005|\u0000\u0000\u0395\u00d2\u0001\u0000\u0000\u0000\u0396\u0397\u0005"+
|
||||
"+\u0000\u0000\u0397\u0398\u0005+\u0000\u0000\u0398\u00d4\u0001\u0000\u0000"+
|
||||
"\u0000\u0399\u039a\u0005-\u0000\u0000\u039a\u039b\u0005-\u0000\u0000\u039b"+
|
||||
"\u00d6\u0001\u0000\u0000\u0000\u039c\u039d\u0005<\u0000\u0000\u039d\u039e"+
|
||||
"\u0005<\u0000\u0000\u039e\u00d8\u0001\u0000\u0000\u0000\u039f\u03a0\u0005"+
|
||||
">\u0000\u0000\u03a0\u03a1\u0005>\u0000\u0000\u03a1\u00da\u0001\u0000\u0000"+
|
||||
"\u0000\u03a2\u03a3\u0005>\u0000\u0000\u03a3\u03a4\u0005>\u0000\u0000\u03a4"+
|
||||
"\u03a5\u0005>\u0000\u0000\u03a5\u00dc\u0001\u0000\u0000\u0000\u03a6\u03a7"+
|
||||
"\u0005+\u0000\u0000\u03a7\u03a8\u0005=\u0000\u0000\u03a8\u00de\u0001\u0000"+
|
||||
"\u0000\u0000\u03a9\u03aa\u0005-\u0000\u0000\u03aa\u03ab\u0005=\u0000\u0000"+
|
||||
"\u03ab\u00e0\u0001\u0000\u0000\u0000\u03ac\u03ad\u0005*\u0000\u0000\u03ad"+
|
||||
"\u03ae\u0005=\u0000\u0000\u03ae\u00e2\u0001\u0000\u0000\u0000\u03af\u03b0"+
|
||||
"\u0005/\u0000\u0000\u03b0\u03b1\u0005=\u0000\u0000\u03b1\u00e4\u0001\u0000"+
|
||||
"\u0000\u0000\u03b2\u03b3\u0005&\u0000\u0000\u03b3\u03b4\u0005=\u0000\u0000"+
|
||||
"\u03b4\u00e6\u0001\u0000\u0000\u0000\u03b5\u03b6\u0005|\u0000\u0000\u03b6"+
|
||||
"\u03b7\u0005=\u0000\u0000\u03b7\u00e8\u0001\u0000\u0000\u0000\u03b8\u03b9"+
|
||||
"\u0005^\u0000\u0000\u03b9\u03ba\u0005=\u0000\u0000\u03ba\u00ea\u0001\u0000"+
|
||||
"\u0000\u0000\u03bb\u03bc\u0005%\u0000\u0000\u03bc\u03bd\u0005=\u0000\u0000"+
|
||||
"\u03bd\u00ec\u0001\u0000\u0000\u0000\u03be\u03bf\u0005<\u0000\u0000\u03bf"+
|
||||
"\u03c0\u0005<\u0000\u0000\u03c0\u03c1\u0005=\u0000\u0000\u03c1\u00ee\u0001"+
|
||||
"\u0000\u0000\u0000\u03c2\u03c3\u0005>\u0000\u0000\u03c3\u03c4\u0005>\u0000"+
|
||||
"\u0000\u03c4\u03c5\u0005=\u0000\u0000\u03c5\u00f0\u0001\u0000\u0000\u0000"+
|
||||
"\u03c6\u03c7\u0005=\u0000\u0000\u03c7\u00f2\u0001\u0000\u0000\u0000\u03c8"+
|
||||
"\u03c9\u0005~\u0000\u0000\u03c9\u00f4\u0001\u0000\u0000\u0000\u03ca\u03cb"+
|
||||
"\u0005<\u0000\u0000\u03cb\u00f6\u0001\u0000\u0000\u0000\u03cc\u03cd\u0005"+
|
||||
">\u0000\u0000\u03cd\u00f8\u0001\u0000\u0000\u0000\u03ce\u03cf\u0005!\u0000"+
|
||||
"\u0000\u03cf\u00fa\u0001\u0000\u0000\u0000\u03d0\u03d1\u0005?\u0000\u0000"+
|
||||
"\u03d1\u00fc\u0001\u0000\u0000\u0000\u03d2\u03d3\u0005:\u0000\u0000\u03d3"+
|
||||
"\u00fe\u0001\u0000\u0000\u0000\u03d4\u03d5\u0005+\u0000\u0000\u03d5\u0100"+
|
||||
"\u0001\u0000\u0000\u0000\u03d6\u03d7\u0005-\u0000\u0000\u03d7\u0102\u0001"+
|
||||
"\u0000\u0000\u0000\u03d8\u03d9\u0005*\u0000\u0000\u03d9\u0104\u0001\u0000"+
|
||||
"\u0000\u0000\u03da\u03db\u0005/\u0000\u0000\u03db\u0106\u0001\u0000\u0000"+
|
||||
"\u0000\u03dc\u03dd\u0005&\u0000\u0000\u03dd\u0108\u0001\u0000\u0000\u0000"+
|
||||
"\u03de\u03df\u0005|\u0000\u0000\u03df\u010a\u0001\u0000\u0000\u0000\u03e0"+
|
||||
"\u03e1\u0005^\u0000\u0000\u03e1\u010c\u0001\u0000\u0000\u0000\u03e2\u03e3"+
|
||||
"\u0005%\u0000\u0000\u03e3\u010e\u0001\u0000\u0000\u0000\u03e4\u03e8\u0003"+
|
||||
"\u0111\u0088\u0000\u03e5\u03e7\u0003\u0113\u0089\u0000\u03e6\u03e5\u0001"+
|
||||
"\u0000\u0000\u0000\u03e7\u03ea\u0001\u0000\u0000\u0000\u03e8\u03e6\u0001"+
|
||||
"\u0000\u0000\u0000\u03e8\u03e9\u0001\u0000\u0000\u0000\u03e9\u0110\u0001"+
|
||||
"\u0000\u0000\u0000\u03ea\u03e8\u0001\u0000\u0000\u0000\u03eb\u03ec\u0007"+
|
||||
"\r\u0000\u0000\u03ec\u0112\u0001\u0000\u0000\u0000\u03ed\u03ee\u0007\u000e"+
|
||||
"\u0000\u0000\u03ee\u0114\u0001\u0000\u0000\u0000&\u0000\u0117\u011a\u011e"+
|
||||
"\u0128\u012c\u0130\u013d\u0145\u0149\u014d\u02a2\u02a6\u02aa\u02ae\u02b5"+
|
||||
"\u02b7\u02bf\u02c5\u02cc\u02cf\u02d2\u02d7\u02da\u02df\u02e3\u02e7\u02ef"+
|
||||
"\u02f6\u02fa\u030a\u0310\u0317\u031b\u0347\u0354\u0368\u03e8\u0001\u0006"+
|
||||
"\u0000\u0000";
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,200 +0,0 @@
|
||||
WhiteSpace=1
|
||||
Comment=2
|
||||
Abstract=3
|
||||
Assert=4
|
||||
Boolean=5
|
||||
Break=6
|
||||
Byte=7
|
||||
Case=8
|
||||
Catch=9
|
||||
Char=10
|
||||
Class=11
|
||||
Const=12
|
||||
Continue=13
|
||||
Default=14
|
||||
Do=15
|
||||
Double=16
|
||||
Else=17
|
||||
Extends=18
|
||||
Final=19
|
||||
Finally=20
|
||||
Float=21
|
||||
For=22
|
||||
Goto=23
|
||||
If=24
|
||||
Implements=25
|
||||
Import=26
|
||||
InstanceOf=27
|
||||
Int=28
|
||||
Interface=29
|
||||
Long=30
|
||||
Native=31
|
||||
New=32
|
||||
Package=33
|
||||
Private=34
|
||||
Protected=35
|
||||
Public=36
|
||||
Return=37
|
||||
Short=38
|
||||
Static=39
|
||||
Strictfp=40
|
||||
Super=41
|
||||
Switch=42
|
||||
Synchronized=43
|
||||
This=44
|
||||
Throw=45
|
||||
Throws=46
|
||||
Transient=47
|
||||
Try=48
|
||||
Void=49
|
||||
Volatile=50
|
||||
While=51
|
||||
Dot=52
|
||||
IntegerLiteral=53
|
||||
FloatingPointLiteral=54
|
||||
CharacterLiteral=55
|
||||
StringLiteral=56
|
||||
BooleanLiteral=57
|
||||
NullLiteral=58
|
||||
ParenthesesLeft=59
|
||||
ParenthesesRight=60
|
||||
CurlyBracketLeft=61
|
||||
CurlyBracketRight=62
|
||||
SquareBracketLeft=63
|
||||
SquareBracketRight=64
|
||||
Semicolon=65
|
||||
Comma=66
|
||||
UnsignedRightShiftAssign=67
|
||||
EqualTo=68
|
||||
NotEqualTo=69
|
||||
LessThanEqualTo=70
|
||||
GreaterThanEqualTo=71
|
||||
ConditionalAND=72
|
||||
ConditionalOR=73
|
||||
Increment=74
|
||||
Decrement=75
|
||||
LeftShift=76
|
||||
SignedRightShift=77
|
||||
UnsignedRightShift=78
|
||||
AddAssign=79
|
||||
SubtractAssign=80
|
||||
MultiplyAssign=81
|
||||
DivideAssign=82
|
||||
BitwiseANDAssign=83
|
||||
BitwiseORAssign=84
|
||||
BitwiseXORAssign=85
|
||||
RemainderAssign=86
|
||||
LeftShiftAssign=87
|
||||
SignedRightShiftAssign=88
|
||||
Assignment=89
|
||||
BitwiseComplement=90
|
||||
LessThan=91
|
||||
GreaterThan=92
|
||||
LogicalComplement=93
|
||||
Question=94
|
||||
Colon=95
|
||||
Addition=96
|
||||
Subtraction=97
|
||||
Multiplication=98
|
||||
Division=99
|
||||
BitwiseAND=100
|
||||
BitwiseOR=101
|
||||
BitwiseXOR=102
|
||||
Remainder=103
|
||||
IDENTIFIER=104
|
||||
'abstract'=3
|
||||
'assert'=4
|
||||
'boolean'=5
|
||||
'break'=6
|
||||
'byte'=7
|
||||
'case'=8
|
||||
'catch'=9
|
||||
'char'=10
|
||||
'class'=11
|
||||
'const'=12
|
||||
'continue'=13
|
||||
'default'=14
|
||||
'do'=15
|
||||
'double'=16
|
||||
'else'=17
|
||||
'extends'=18
|
||||
'final'=19
|
||||
'finally'=20
|
||||
'float'=21
|
||||
'for'=22
|
||||
'goto'=23
|
||||
'if'=24
|
||||
'implements'=25
|
||||
'import'=26
|
||||
'instanceof'=27
|
||||
'int'=28
|
||||
'interface'=29
|
||||
'long'=30
|
||||
'native'=31
|
||||
'new'=32
|
||||
'package'=33
|
||||
'private'=34
|
||||
'protected'=35
|
||||
'public'=36
|
||||
'return'=37
|
||||
'short'=38
|
||||
'static'=39
|
||||
'strictfp'=40
|
||||
'super'=41
|
||||
'switch'=42
|
||||
'synchronized'=43
|
||||
'this'=44
|
||||
'throw'=45
|
||||
'throws'=46
|
||||
'transient'=47
|
||||
'try'=48
|
||||
'void'=49
|
||||
'volatile'=50
|
||||
'while'=51
|
||||
'.'=52
|
||||
'null'=58
|
||||
'('=59
|
||||
')'=60
|
||||
'{'=61
|
||||
'}'=62
|
||||
'['=63
|
||||
']'=64
|
||||
';'=65
|
||||
','=66
|
||||
'>>>='=67
|
||||
'=='=68
|
||||
'!='=69
|
||||
'<='=70
|
||||
'>='=71
|
||||
'&&'=72
|
||||
'||'=73
|
||||
'++'=74
|
||||
'--'=75
|
||||
'<<'=76
|
||||
'>>'=77
|
||||
'>>>'=78
|
||||
'+='=79
|
||||
'-='=80
|
||||
'*='=81
|
||||
'/='=82
|
||||
'&='=83
|
||||
'|='=84
|
||||
'^='=85
|
||||
'%='=86
|
||||
'<<='=87
|
||||
'>>='=88
|
||||
'='=89
|
||||
'~'=90
|
||||
'<'=91
|
||||
'>'=92
|
||||
'!'=93
|
||||
'?'=94
|
||||
':'=95
|
||||
'+'=96
|
||||
'-'=97
|
||||
'*'=98
|
||||
'/'=99
|
||||
'&'=100
|
||||
'|'=101
|
||||
'^'=102
|
||||
'%'=103
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -1,200 +0,0 @@
|
||||
WhiteSpace=1
|
||||
Comment=2
|
||||
Abstract=3
|
||||
Assert=4
|
||||
Boolean=5
|
||||
Break=6
|
||||
Byte=7
|
||||
Case=8
|
||||
Catch=9
|
||||
Char=10
|
||||
Class=11
|
||||
Const=12
|
||||
Continue=13
|
||||
Default=14
|
||||
Do=15
|
||||
Double=16
|
||||
Else=17
|
||||
Extends=18
|
||||
Final=19
|
||||
Finally=20
|
||||
Float=21
|
||||
For=22
|
||||
Goto=23
|
||||
If=24
|
||||
Implements=25
|
||||
Import=26
|
||||
InstanceOf=27
|
||||
Int=28
|
||||
Interface=29
|
||||
Long=30
|
||||
Native=31
|
||||
New=32
|
||||
Package=33
|
||||
Private=34
|
||||
Protected=35
|
||||
Public=36
|
||||
Return=37
|
||||
Short=38
|
||||
Static=39
|
||||
Strictfp=40
|
||||
Super=41
|
||||
Switch=42
|
||||
Synchronized=43
|
||||
This=44
|
||||
Throw=45
|
||||
Throws=46
|
||||
Transient=47
|
||||
Try=48
|
||||
Void=49
|
||||
Volatile=50
|
||||
While=51
|
||||
Dot=52
|
||||
IntegerLiteral=53
|
||||
FloatingPointLiteral=54
|
||||
CharacterLiteral=55
|
||||
StringLiteral=56
|
||||
BooleanLiteral=57
|
||||
NullLiteral=58
|
||||
ParenthesesLeft=59
|
||||
ParenthesesRight=60
|
||||
CurlyBracketLeft=61
|
||||
CurlyBracketRight=62
|
||||
SquareBracketLeft=63
|
||||
SquareBracketRight=64
|
||||
Semicolon=65
|
||||
Comma=66
|
||||
UnsignedRightShiftAssign=67
|
||||
EqualTo=68
|
||||
NotEqualTo=69
|
||||
LessThanEqualTo=70
|
||||
GreaterThanEqualTo=71
|
||||
ConditionalAND=72
|
||||
ConditionalOR=73
|
||||
Increment=74
|
||||
Decrement=75
|
||||
LeftShift=76
|
||||
SignedRightShift=77
|
||||
UnsignedRightShift=78
|
||||
AddAssign=79
|
||||
SubtractAssign=80
|
||||
MultiplyAssign=81
|
||||
DivideAssign=82
|
||||
BitwiseANDAssign=83
|
||||
BitwiseORAssign=84
|
||||
BitwiseXORAssign=85
|
||||
RemainderAssign=86
|
||||
LeftShiftAssign=87
|
||||
SignedRightShiftAssign=88
|
||||
Assignment=89
|
||||
BitwiseComplement=90
|
||||
LessThan=91
|
||||
GreaterThan=92
|
||||
LogicalComplement=93
|
||||
Question=94
|
||||
Colon=95
|
||||
Addition=96
|
||||
Subtraction=97
|
||||
Multiplication=98
|
||||
Division=99
|
||||
BitwiseAND=100
|
||||
BitwiseOR=101
|
||||
BitwiseXOR=102
|
||||
Remainder=103
|
||||
IDENTIFIER=104
|
||||
'abstract'=3
|
||||
'assert'=4
|
||||
'boolean'=5
|
||||
'break'=6
|
||||
'byte'=7
|
||||
'case'=8
|
||||
'catch'=9
|
||||
'char'=10
|
||||
'class'=11
|
||||
'const'=12
|
||||
'continue'=13
|
||||
'default'=14
|
||||
'do'=15
|
||||
'double'=16
|
||||
'else'=17
|
||||
'extends'=18
|
||||
'final'=19
|
||||
'finally'=20
|
||||
'float'=21
|
||||
'for'=22
|
||||
'goto'=23
|
||||
'if'=24
|
||||
'implements'=25
|
||||
'import'=26
|
||||
'instanceof'=27
|
||||
'int'=28
|
||||
'interface'=29
|
||||
'long'=30
|
||||
'native'=31
|
||||
'new'=32
|
||||
'package'=33
|
||||
'private'=34
|
||||
'protected'=35
|
||||
'public'=36
|
||||
'return'=37
|
||||
'short'=38
|
||||
'static'=39
|
||||
'strictfp'=40
|
||||
'super'=41
|
||||
'switch'=42
|
||||
'synchronized'=43
|
||||
'this'=44
|
||||
'throw'=45
|
||||
'throws'=46
|
||||
'transient'=47
|
||||
'try'=48
|
||||
'void'=49
|
||||
'volatile'=50
|
||||
'while'=51
|
||||
'.'=52
|
||||
'null'=58
|
||||
'('=59
|
||||
')'=60
|
||||
'{'=61
|
||||
'}'=62
|
||||
'['=63
|
||||
']'=64
|
||||
';'=65
|
||||
','=66
|
||||
'>>>='=67
|
||||
'=='=68
|
||||
'!='=69
|
||||
'<='=70
|
||||
'>='=71
|
||||
'&&'=72
|
||||
'||'=73
|
||||
'++'=74
|
||||
'--'=75
|
||||
'<<'=76
|
||||
'>>'=77
|
||||
'>>>'=78
|
||||
'+='=79
|
||||
'-='=80
|
||||
'*='=81
|
||||
'/='=82
|
||||
'&='=83
|
||||
'|='=84
|
||||
'^='=85
|
||||
'%='=86
|
||||
'<<='=87
|
||||
'>>='=88
|
||||
'='=89
|
||||
'~'=90
|
||||
'<'=91
|
||||
'>'=92
|
||||
'!'=93
|
||||
'?'=94
|
||||
':'=95
|
||||
'+'=96
|
||||
'-'=97
|
||||
'*'=98
|
||||
'/'=99
|
||||
'&'=100
|
||||
'|'=101
|
||||
'^'=102
|
||||
'%'=103
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -1,200 +0,0 @@
|
||||
WhiteSpace=1
|
||||
Comment=2
|
||||
Abstract=3
|
||||
Assert=4
|
||||
Boolean=5
|
||||
Break=6
|
||||
Byte=7
|
||||
Case=8
|
||||
Catch=9
|
||||
Char=10
|
||||
Class=11
|
||||
Const=12
|
||||
Continue=13
|
||||
Default=14
|
||||
Do=15
|
||||
Double=16
|
||||
Else=17
|
||||
Extends=18
|
||||
Final=19
|
||||
Finally=20
|
||||
Float=21
|
||||
For=22
|
||||
Goto=23
|
||||
If=24
|
||||
Implements=25
|
||||
Import=26
|
||||
InstanceOf=27
|
||||
Int=28
|
||||
Interface=29
|
||||
Long=30
|
||||
Native=31
|
||||
New=32
|
||||
Package=33
|
||||
Private=34
|
||||
Protected=35
|
||||
Public=36
|
||||
Return=37
|
||||
Short=38
|
||||
Static=39
|
||||
Strictfp=40
|
||||
Super=41
|
||||
Switch=42
|
||||
Synchronized=43
|
||||
This=44
|
||||
Throw=45
|
||||
Throws=46
|
||||
Transient=47
|
||||
Try=48
|
||||
Void=49
|
||||
Volatile=50
|
||||
While=51
|
||||
Dot=52
|
||||
IntegerLiteral=53
|
||||
FloatingPointLiteral=54
|
||||
CharacterLiteral=55
|
||||
StringLiteral=56
|
||||
BooleanLiteral=57
|
||||
NullLiteral=58
|
||||
ParenthesesLeft=59
|
||||
ParenthesesRight=60
|
||||
CurlyBracketLeft=61
|
||||
CurlyBracketRight=62
|
||||
SquareBracketLeft=63
|
||||
SquareBracketRight=64
|
||||
Semicolon=65
|
||||
Comma=66
|
||||
UnsignedRightShiftAssign=67
|
||||
EqualTo=68
|
||||
NotEqualTo=69
|
||||
LessThanEqualTo=70
|
||||
GreaterThanEqualTo=71
|
||||
ConditionalAND=72
|
||||
ConditionalOR=73
|
||||
Increment=74
|
||||
Decrement=75
|
||||
LeftShift=76
|
||||
SignedRightShift=77
|
||||
UnsignedRightShift=78
|
||||
AddAssign=79
|
||||
SubtractAssign=80
|
||||
MultiplyAssign=81
|
||||
DivideAssign=82
|
||||
BitwiseANDAssign=83
|
||||
BitwiseORAssign=84
|
||||
BitwiseXORAssign=85
|
||||
RemainderAssign=86
|
||||
LeftShiftAssign=87
|
||||
SignedRightShiftAssign=88
|
||||
Assignment=89
|
||||
BitwiseComplement=90
|
||||
LessThan=91
|
||||
GreaterThan=92
|
||||
LogicalComplement=93
|
||||
Question=94
|
||||
Colon=95
|
||||
Addition=96
|
||||
Subtraction=97
|
||||
Multiplication=98
|
||||
Division=99
|
||||
BitwiseAND=100
|
||||
BitwiseOR=101
|
||||
BitwiseXOR=102
|
||||
Remainder=103
|
||||
IDENTIFIER=104
|
||||
'abstract'=3
|
||||
'assert'=4
|
||||
'boolean'=5
|
||||
'break'=6
|
||||
'byte'=7
|
||||
'case'=8
|
||||
'catch'=9
|
||||
'char'=10
|
||||
'class'=11
|
||||
'const'=12
|
||||
'continue'=13
|
||||
'default'=14
|
||||
'do'=15
|
||||
'double'=16
|
||||
'else'=17
|
||||
'extends'=18
|
||||
'final'=19
|
||||
'finally'=20
|
||||
'float'=21
|
||||
'for'=22
|
||||
'goto'=23
|
||||
'if'=24
|
||||
'implements'=25
|
||||
'import'=26
|
||||
'instanceof'=27
|
||||
'int'=28
|
||||
'interface'=29
|
||||
'long'=30
|
||||
'native'=31
|
||||
'new'=32
|
||||
'package'=33
|
||||
'private'=34
|
||||
'protected'=35
|
||||
'public'=36
|
||||
'return'=37
|
||||
'short'=38
|
||||
'static'=39
|
||||
'strictfp'=40
|
||||
'super'=41
|
||||
'switch'=42
|
||||
'synchronized'=43
|
||||
'this'=44
|
||||
'throw'=45
|
||||
'throws'=46
|
||||
'transient'=47
|
||||
'try'=48
|
||||
'void'=49
|
||||
'volatile'=50
|
||||
'while'=51
|
||||
'.'=52
|
||||
'null'=58
|
||||
'('=59
|
||||
')'=60
|
||||
'{'=61
|
||||
'}'=62
|
||||
'['=63
|
||||
']'=64
|
||||
';'=65
|
||||
','=66
|
||||
'>>>='=67
|
||||
'=='=68
|
||||
'!='=69
|
||||
'<='=70
|
||||
'>='=71
|
||||
'&&'=72
|
||||
'||'=73
|
||||
'++'=74
|
||||
'--'=75
|
||||
'<<'=76
|
||||
'>>'=77
|
||||
'>>>'=78
|
||||
'+='=79
|
||||
'-='=80
|
||||
'*='=81
|
||||
'/='=82
|
||||
'&='=83
|
||||
'|='=84
|
||||
'^='=85
|
||||
'%='=86
|
||||
'<<='=87
|
||||
'>>='=88
|
||||
'='=89
|
||||
'~'=90
|
||||
'<'=91
|
||||
'>'=92
|
||||
'!'=93
|
||||
'?'=94
|
||||
':'=95
|
||||
'+'=96
|
||||
'-'=97
|
||||
'*'=98
|
||||
'/'=99
|
||||
'&'=100
|
||||
'|'=101
|
||||
'^'=102
|
||||
'%'=103
|
||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/bin
|
||||
.vscode/
|
||||
3
.idea/.gitignore
generated
vendored
3
.idea/.gitignore
generated
vendored
@@ -1,3 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
9
.idea/CPSC-499.iml
generated
9
.idea/CPSC-499.iml
generated
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
4
.idea/misc.xml
generated
4
.idea/misc.xml
generated
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="corretto-1.8" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
8
.idea/modules.xml
generated
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/CPSC-499.iml" filepath="$PROJECT_DIR$/.idea/CPSC-499.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
230
ExprLexer.g4
230
ExprLexer.g4
@@ -1,230 +0,0 @@
|
||||
lexer grammar ExprLexer;
|
||||
|
||||
// LINE TERMINATORS -----------------------------------------------------------------------------------------------------------------------
|
||||
fragment LineTerminator: '\r' '\n'? | '\n';
|
||||
|
||||
//WHITE SPACE ----------------------------------------------------------------------------------------------------------------------------------------
|
||||
WhiteSpace: (' ' | '\t' | '\f' | LineTerminator) -> skip;
|
||||
|
||||
//COMMENTS --------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
fragment EndOfLineComment: '//' ~('\r' | '\n')* LineTerminator?;
|
||||
|
||||
|
||||
Comment: (TraditionalComment | EndOfLineComment) -> skip;
|
||||
|
||||
fragment TraditionalComment:
|
||||
'/*' NotStar CommentTail;
|
||||
|
||||
fragment CommentTail: '*' CommentTailStar | NotStar ;
|
||||
|
||||
fragment CommentTailStar:
|
||||
'/' | '*' CommentTailStar | NotStarNotSlash CommentTail;
|
||||
|
||||
fragment NotStar:
|
||||
[^*] | LineTerminator;
|
||||
|
||||
fragment NotStarNotSlash:
|
||||
[^*/] | LineTerminator;
|
||||
|
||||
// KEYWORDS --------------------------------------------------------------------------------------------------------
|
||||
Abstract: 'abstract';
|
||||
Assert: 'assert';
|
||||
Boolean: 'boolean';
|
||||
Break: 'break';
|
||||
Byte: 'byte';
|
||||
Case: 'case';
|
||||
Catch: 'catch';
|
||||
Char: 'char';
|
||||
Class: 'class';
|
||||
Const: 'const';
|
||||
Continue: 'continue';
|
||||
Default: 'default';
|
||||
Do: 'do';
|
||||
Double: 'double';
|
||||
Else: 'else';
|
||||
Extends: 'extends';
|
||||
Final: 'final';
|
||||
Finally: 'finally';
|
||||
Float: 'float';
|
||||
For: 'for';
|
||||
Goto: 'goto';
|
||||
If: 'if';
|
||||
Implements: 'implements';
|
||||
Import: 'import';
|
||||
InstanceOf: 'instanceof';
|
||||
Int: 'int';
|
||||
Interface: 'interface';
|
||||
Long: 'long';
|
||||
Native: 'native';
|
||||
New: 'new';
|
||||
Package: 'package';
|
||||
Private: 'private';
|
||||
Protected: 'protected';
|
||||
Public: 'public';
|
||||
Return: 'return';
|
||||
Short: 'short';
|
||||
Static: 'static';
|
||||
Strictfp: 'strictfp';
|
||||
Super: 'super';
|
||||
Switch: 'switch';
|
||||
Synchronized: 'synchronized';
|
||||
This: 'this';
|
||||
Throw: 'throw';
|
||||
Throws: 'throws';
|
||||
Transient: 'transient';
|
||||
Try: 'try';
|
||||
Void: 'void';
|
||||
Volatile: 'volatile';
|
||||
While: 'while';
|
||||
|
||||
Dot: '.';
|
||||
// LITERALS -------------------------------------------------------------------------------------------------------------------
|
||||
IntegerLiteral: DecimalIntegerLiteral | HexIntegerLiteral | OctalIntegerLiteral;
|
||||
|
||||
fragment DecimalIntegerLiteral:
|
||||
DecimalNumeral IntegerTypeSuffix?;
|
||||
|
||||
fragment HexIntegerLiteral:
|
||||
HexNumeral IntegerTypeSuffix?;
|
||||
|
||||
fragment OctalIntegerLiteral:
|
||||
OctalNumeral IntegerTypeSuffix?;
|
||||
|
||||
fragment IntegerTypeSuffix:
|
||||
[lL];
|
||||
|
||||
fragment DecimalNumeral:
|
||||
'0' | NonZeroDigit Digits?;
|
||||
|
||||
fragment HexNumeral:
|
||||
'0' 'x' HexDigits | '0' 'X' HexDigits;
|
||||
|
||||
fragment HexDigits:
|
||||
HexDigit | HexDigit HexDigits;
|
||||
|
||||
fragment HexDigit:
|
||||
[0-9a-fA-F];
|
||||
|
||||
FloatingPointLiteral: Digits '.' Digits? ExponentPart? FloatTypeSuffix?
|
||||
| '.' Digits ExponentPart? FloatTypeSuffix?
|
||||
| Digits ExponentPart FloatTypeSuffix?
|
||||
| Digits ExponentPart? FloatTypeSuffix;
|
||||
|
||||
fragment ExponentPart:
|
||||
ExponentIndicator SignedInteger;
|
||||
|
||||
fragment ExponentIndicator:
|
||||
[eE];
|
||||
|
||||
fragment SignedInteger:
|
||||
Sign? Digits;
|
||||
|
||||
fragment Digits:
|
||||
Digit+;
|
||||
|
||||
fragment Digit:
|
||||
'0' | NonZeroDigit;
|
||||
|
||||
fragment NonZeroDigit:
|
||||
[1-9];
|
||||
|
||||
fragment Sign:
|
||||
[+-];
|
||||
|
||||
fragment FloatTypeSuffix:
|
||||
[fFdD];
|
||||
|
||||
CharacterLiteral: '\'' SingleCharacter '\'' | '\'' EscapeSequence '\'';
|
||||
|
||||
fragment SingleCharacter:
|
||||
[^'\\];
|
||||
|
||||
StringLiteral: '"' StringCharacters? '"';
|
||||
|
||||
fragment StringCharacters:
|
||||
StringCharacter+;
|
||||
|
||||
fragment StringCharacter:
|
||||
SingleCharacter | EscapeSequence;
|
||||
|
||||
fragment EscapeSequence:
|
||||
'\\' ('u0008' | 'u0009' | 'u000a' | 'u000c' | 'u000d' | 'u0022' | 'u0027' | 'u005c' | OctalEscape);
|
||||
|
||||
fragment OctalEscape:
|
||||
'\\' OctalDigit | '\\' OctalDigit OctalDigit | '\\' ZeroToThree OctalDigit OctalDigit;
|
||||
|
||||
fragment OctalNumeral:
|
||||
'0' OctalDigits;
|
||||
|
||||
fragment OctalDigits:
|
||||
OctalDigit;
|
||||
|
||||
fragment OctalDigit:
|
||||
[0-7];
|
||||
|
||||
fragment ZeroToThree:
|
||||
[0-3];
|
||||
|
||||
BooleanLiteral: 'true' | 'false' ;
|
||||
|
||||
NullLiteral: 'null';
|
||||
|
||||
//SEPRATORS -------------------------------------------------------------------------------------------------------------------------
|
||||
ParenthesesLeft: '(';
|
||||
ParenthesesRight: ')';
|
||||
CurlyBracketLeft: '{';
|
||||
CurlyBracketRight: '}';
|
||||
SquareBracketLeft: '[';
|
||||
SquareBracketRight: ']';
|
||||
Semicolon: ';';
|
||||
Comma: ',';
|
||||
|
||||
|
||||
//OPERATORS ---------------------------------------------------------------------------------------------------------------------------------------
|
||||
UnsignedRightShiftAssign: '>>>=';
|
||||
EqualTo: '==';
|
||||
NotEqualTo: '!=';
|
||||
LessThanEqualTo: '<=';
|
||||
GreaterThanEqualTo: '>=';
|
||||
ConditionalAND: '&&';
|
||||
ConditionalOR: '||';
|
||||
Increment: '++';
|
||||
Decrement: '--';
|
||||
LeftShift: '<<';
|
||||
SignedRightShift: '>>';
|
||||
UnsignedRightShift: '>>>';
|
||||
AddAssign: '+=';
|
||||
SubtractAssign: '-=';
|
||||
MultiplyAssign: '*=';
|
||||
DivideAssign: '/=';
|
||||
BitwiseANDAssign: '&=';
|
||||
BitwiseORAssign: '|=';
|
||||
BitwiseXORAssign: '^=';
|
||||
RemainderAssign: '%=';
|
||||
LeftShiftAssign: '<<=';
|
||||
SignedRightShiftAssign: '>>=';
|
||||
Assignment: '=';
|
||||
BitwiseComplement: '~';
|
||||
LessThan: '<';
|
||||
GreaterThan: '>';
|
||||
LogicalComplement: '!';
|
||||
Question: '?';
|
||||
Colon: ':';
|
||||
Addition: '+';
|
||||
Subtraction: '-';
|
||||
Multiplication: '*';
|
||||
Division: '/';
|
||||
BitwiseAND: '&';
|
||||
BitwiseOR: '|';
|
||||
BitwiseXOR: '^';
|
||||
Remainder: '%';
|
||||
|
||||
|
||||
//IDENTIFIERS -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
IDENTIFIER: JavaLetter JavaLetterOrDigit*;
|
||||
fragment JavaLetter:
|
||||
[a-zA-Z$_];
|
||||
|
||||
fragment JavaLetterOrDigit:
|
||||
[A-Za-z0-9$_];
|
||||
248
ExprParser.g4
248
ExprParser.g4
@@ -1,248 +0,0 @@
|
||||
parser grammar ExprParser;
|
||||
|
||||
options {
|
||||
tokenVocab=ExprLexer;
|
||||
}
|
||||
prog: compilationUnit EOF;
|
||||
identifier: IDENTIFIER;
|
||||
|
||||
qualifiedIdentifier: identifier (Dot identifier)*;
|
||||
|
||||
literal: IntegerLiteral
|
||||
| FloatingPointLiteral
|
||||
| CharacterLiteral
|
||||
| StringLiteral
|
||||
| BooleanLiteral
|
||||
| NullLiteral;
|
||||
//Section 15.26: Assignment Operators
|
||||
expression: unaryExpr assignmentOperator expression | conditionalExpr ;
|
||||
|
||||
//Highest Prescedence _Expr = expression
|
||||
//CI cha 6
|
||||
conditionalExpr: logicalOrExpr Question conditionalExpr Colon conditionalExpr | logicalOrExpr;
|
||||
|
||||
logicalOrExpr: logicalAndExpr (ConditionalOR logicalAndExpr)*;
|
||||
|
||||
logicalAndExpr: equalityExpr (ConditionalAND equalityExpr)*;
|
||||
|
||||
equalityExpr: relationalExpr ((EqualTo | NotEqualTo) relationalExpr)*;
|
||||
|
||||
relationalExpr: additiveExpr((LessThan | GreaterThan | LessThanEqualTo | GreaterThanEqualTo) additiveExpr | InstanceOf type)*;
|
||||
|
||||
additiveExpr: multiplicativeExpr((Addition | Subtraction) multiplicativeExpr)*;
|
||||
multiplicativeExpr: unaryExpr((Multiplication | Division | Remainder) unaryExpr)*;
|
||||
|
||||
unaryExpr:postfixExpr |(Addition | Subtraction | LogicalComplement | BitwiseComplement | Increment | Decrement) unaryExpr | parExpression type unaryExpr;
|
||||
|
||||
postfixExpr: primaryExpr (Increment| Decrement| Dot IDENTIFIER | SquareBracketLeft expression SquareBracketRight | arguments)*;
|
||||
|
||||
primaryExpr: parExpression
|
||||
| IntegerLiteral
|
||||
| FloatingPointLiteral
|
||||
| StringLiteral
|
||||
| CharacterLiteral
|
||||
| BooleanLiteral
|
||||
| NullLiteral
|
||||
| IDENTIFIER
|
||||
| This
|
||||
| Super (Dot IDENTIFIER)?
|
||||
| New type arguments
|
||||
| primitiveType (SquareBracketLeft SquareBracketRight)* Dot Class
|
||||
| type Dot Class;
|
||||
|
||||
|
||||
assignmentOperator: Assignment
|
||||
| AddAssign
|
||||
| SubtractAssign
|
||||
| MultiplyAssign
|
||||
| DivideAssign
|
||||
| BitwiseANDAssign
|
||||
| BitwiseORAssign
|
||||
| BitwiseXORAssign
|
||||
| RemainderAssign
|
||||
| LeftShiftAssign
|
||||
| SignedRightShiftAssign
|
||||
| UnsignedRightShiftAssign;
|
||||
|
||||
type: identifier (Dot identifier)* bracketsOpt | primitiveType;
|
||||
|
||||
statementExpression: expression;
|
||||
|
||||
constantExpression: expression;
|
||||
|
||||
identifierSuffix: SquareBracketLeft SquareBracketRight bracketsOpt Dot Class
|
||||
|SquareBracketLeft expression SquareBracketRight
|
||||
|arguments
|
||||
|Dot (Class | This | Super arguments New innerCreator);
|
||||
|
||||
postfixOp: Increment | Decrement;
|
||||
|
||||
primitiveType: Byte | Short| Char | Int| Long| Float| Double| Boolean;
|
||||
//Method arguments
|
||||
argumentsOpt: (arguments)?;
|
||||
|
||||
arguments: ParenthesesLeft (expression (Comma expression)*)? ParenthesesRight;
|
||||
|
||||
bracketsOpt: (SquareBracketLeft SquareBracketRight)*;
|
||||
|
||||
creator: qualifiedIdentifier ( arrayCreatorRest | classCreatorRest);
|
||||
|
||||
innerCreator: identifier classCreatorRest;
|
||||
|
||||
arrayCreatorRest: SquareBracketLeft SquareBracketRight bracketsOpt arrayInitializer
|
||||
| SquareBracketLeft expression SquareBracketRight (SquareBracketLeft expression SquareBracketRight)*;
|
||||
classCreatorRest: arguments (classBody)?;
|
||||
|
||||
arrayInitializer: CurlyBracketLeft (variableInitializer(Comma variableInitializer)*(Comma)?)? CurlyBracketRight;
|
||||
|
||||
variableInitializer: arrayInitializer
|
||||
|expression;
|
||||
|
||||
parExpression: ParenthesesLeft expression ParenthesesRight;
|
||||
|
||||
block: CurlyBracketLeft blockStatements CurlyBracketRight;
|
||||
|
||||
blockStatements: (blockStatement)*;
|
||||
|
||||
blockStatement: localVariableDeclarationStatement
|
||||
|classOrInterfaceDeclaration
|
||||
|(identifier Colon)? statement;
|
||||
|
||||
localVariableDeclarationStatement: (Final)? type variableDeclarators;
|
||||
|
||||
statement:completeIf | If parExpression statementIncompleteIf;
|
||||
|
||||
statementIncompleteIf: block
|
||||
| If parExpression completeIf Else statementIncompleteIf
|
||||
| For ParenthesesLeft forInit? Semicolon (expression)? Semicolon forUpdate? ParenthesesRight statement
|
||||
| While parExpression statement
|
||||
| Do statement While parExpression Semicolon
|
||||
| Try block catches
|
||||
| Try block Finally block
|
||||
| Try block catches Finally block
|
||||
| switchStatement
|
||||
| Synchronized parExpression block
|
||||
| Return (expression)? Semicolon
|
||||
| Throw expression Semicolon
|
||||
| Break (identifier)? Semicolon
|
||||
| Continue (identifier)? Semicolon
|
||||
| statementExpression Semicolon
|
||||
| Semicolon;
|
||||
//solve ambiguity over If()else. aka (Dangling else).
|
||||
//this will do the longest check by looking for an else section, fincding the closest else!
|
||||
completeIf: If parExpression completeIf Else completeIf | statementIncompleteIf;
|
||||
|
||||
catches: catchClause (catchClause)*;
|
||||
|
||||
catchClause: Catch ParenthesesLeft formalParameter ParenthesesRight block;
|
||||
|
||||
switchStatement: Switch parExpression CurlyBracketLeft CurlyBracketRight
|
||||
| Switch parExpression CurlyBracketLeft switchBlockStatementGroups? CurlyBracketRight;
|
||||
|
||||
switchBlockStatementGroups: (switchBlockStatementGroup)*;
|
||||
|
||||
switchBlockStatementGroup: switchLabel blockStatements;
|
||||
|
||||
switchLabel: Case constantExpression Colon
|
||||
| Default Colon;
|
||||
moreStatementExpressions: (Comma statementExpression)*;
|
||||
|
||||
forInit: statementExpression moreStatementExpressions
|
||||
| (Final)? type variableDeclarators;
|
||||
|
||||
forUpdate: statementExpression moreStatementExpressions;
|
||||
|
||||
modifiersOpt: (modifier)*;
|
||||
|
||||
modifier: Public
|
||||
| Protected
|
||||
| Private
|
||||
| Static
|
||||
| Abstract
|
||||
| Final
|
||||
| Native
|
||||
| Synchronized
|
||||
| Transient
|
||||
| Volatile
|
||||
| Strictfp;
|
||||
|
||||
variableDeclarators: variableDeclarator (Comma variableDeclarator)*;
|
||||
|
||||
variableDeclaratorsRest: variableDeclaratorRest (Comma variableDeclarator)*;
|
||||
|
||||
constantDeclaratorsRest: constantDeclaratorRest (Comma constantDeclarator)*;
|
||||
|
||||
variableDeclarator: identifier variableDeclaratorsRest;
|
||||
|
||||
constantDeclarator: identifier constantDeclaratorRest;
|
||||
|
||||
variableDeclaratorRest: bracketsOpt (Assignment variableInitializer)?;
|
||||
|
||||
constantDeclaratorRest: bracketsOpt Assignment variableInitializer;
|
||||
|
||||
variableDeclaratorId: identifier bracketsOpt;
|
||||
|
||||
compilationUnit: (Package qualifiedIdentifier Semicolon)? (importDeclaration)*(typeDeclaration)*;
|
||||
|
||||
importDeclaration: Import identifier (Dot identifier)* (Dot Multiplication)? Semicolon;
|
||||
|
||||
typeDeclaration: classOrInterfaceDeclaration | Semicolon;
|
||||
|
||||
classOrInterfaceDeclaration: modifiersOpt (classDeclaration | interfaceDeclaration);
|
||||
|
||||
classDeclaration: Class identifier (Extends type)? (Implements typeList)? classBody;
|
||||
|
||||
interfaceDeclaration: Interface identifier (Extends typeList)? interfaceBody;
|
||||
|
||||
typeList: type (Comma type)*;
|
||||
|
||||
classBody: CurlyBracketLeft (classBodyDeclaration)* CurlyBracketRight;
|
||||
|
||||
interfaceBody: CurlyBracketLeft (interfaceBodyDeclaration)* CurlyBracketRight;
|
||||
|
||||
classBodyDeclaration: Semicolon
|
||||
| (Static)? block
|
||||
| modifiersOpt memberDecl;
|
||||
memberDecl: methodOrFieldDecl
|
||||
| Void identifier methodDeclaratorRest
|
||||
| identifier constructorDeclaratorRest
|
||||
| classOrInterfaceDeclaration;
|
||||
|
||||
methodOrFieldDecl: type identifier methodOrFieldRest;
|
||||
|
||||
methodOrFieldRest: variableDeclaratorRest
|
||||
|methodDeclaratorRest;
|
||||
|
||||
interfaceBodyDeclaration: Semicolon
|
||||
| modifiersOpt interfaceMemberDecl;
|
||||
|
||||
interfaceMemberDecl: interfaceMethodOrFieldDecl
|
||||
| Void identifier voidInterfaceMethodDeclaratorRest
|
||||
| classOrInterfaceDeclaration;
|
||||
|
||||
interfaceMethodOrFieldDecl: type identifier interfaceMethodOrFieldRest;
|
||||
|
||||
interfaceMethodOrFieldRest: constantDeclaratorRest Semicolon
|
||||
| interfaceMethodDeclaratorRest;
|
||||
|
||||
methodDeclaratorRest: formalParameters bracketsOpt (Throws qualifiedIdentifierList)?(methodBody | Semicolon);
|
||||
|
||||
voidMethodDeclaratorRest: formalParameters (Throws qualifiedIdentifierList)? (methodBody | Semicolon);
|
||||
|
||||
interfaceMethodDeclaratorRest: formalParameters bracketsOpt (Throws qualifiedIdentifierList)? Semicolon;
|
||||
|
||||
voidInterfaceMethodDeclaratorRest: formalParameters (Throws qualifiedIdentifierList)?;
|
||||
|
||||
constructorDeclaratorRest: formalParameters (Throws qualifiedIdentifierList)? methodBody;
|
||||
|
||||
qualifiedIdentifierList: qualifiedIdentifier (Comma qualifiedIdentifier)*;
|
||||
|
||||
formalParameters: ParenthesesLeft (formalParameter (Comma formalParameter)*)? ParenthesesRight;
|
||||
|
||||
formalParameter: (Final)? type variableDeclaratorId;
|
||||
|
||||
methodBody: block;
|
||||
|
||||
|
||||
|
||||
|
||||
248
ExprSyntactic.g4
248
ExprSyntactic.g4
@@ -1,248 +0,0 @@
|
||||
parser grammar ExprSyntactic;
|
||||
|
||||
options {
|
||||
tokenVocab=ExprLexer;
|
||||
}
|
||||
prog: compilationUnit EOF;
|
||||
identifier: IDENTIFIER;
|
||||
|
||||
qualifiedIdentifier: identifier (Dot identifier)*;
|
||||
|
||||
literal: IntegerLiteral
|
||||
| FloatingPointLiteral
|
||||
| CharacterLiteral
|
||||
| StringLiteral
|
||||
| BooleanLiteral
|
||||
| NullLiteral;
|
||||
//Section 15.26: Assignment Operators
|
||||
expression: unaryExpr assignmentOperator expression | conditionalExpr ;
|
||||
|
||||
//Highest Prescedence _Expr = expression
|
||||
//CI cha 6
|
||||
conditionalExpr: logicalOrExpr Question conditionalExpr Colon conditionalExpr | logicalOrExpr;
|
||||
|
||||
logicalOrExpr: logicalAndExpr (ConditionalOR logicalAndExpr)*;
|
||||
|
||||
logicalAndExpr: equalityExpr (ConditionalAND equalityExpr)*;
|
||||
|
||||
equalityExpr: relationalExpr ((EqualTo | NotEqualTo) relationalExpr)*;
|
||||
|
||||
relationalExpr: additiveExpr((LessThan | GreaterThan | LessThanEqualTo | GreaterThanEqualTo) additiveExpr | InstanceOf type)*;
|
||||
|
||||
additiveExpr: multiplicativeExpr((Addition | Subtraction) multiplicativeExpr)*;
|
||||
multiplicativeExpr: unaryExpr((Multiplication | Division | Remainder) unaryExpr)*;
|
||||
|
||||
unaryExpr:postfixExpr |(Addition | Subtraction | LogicalComplement | BitwiseComplement | Increment | Decrement) unaryExpr | parExpression type unaryExpr;
|
||||
|
||||
postfixExpr: primaryExpr (Increment| Decrement| Dot IDENTIFIER | SquareBracketLeft expression SquareBracketRight | arguments)*;
|
||||
|
||||
primaryExpr: parExpression
|
||||
| IntegerLiteral
|
||||
| FloatingPointLiteral
|
||||
| StringLiteral
|
||||
| CharacterLiteral
|
||||
| BooleanLiteral
|
||||
| NullLiteral
|
||||
| IDENTIFIER
|
||||
| This
|
||||
| Super (Dot IDENTIFIER)?
|
||||
| New type arguments
|
||||
| primitiveType (SquareBracketLeft SquareBracketRight)* Dot Class
|
||||
| type Dot Class;
|
||||
|
||||
|
||||
assignmentOperator: Assignment
|
||||
| AddAssign
|
||||
| SubtractAssign
|
||||
| MultiplyAssign
|
||||
| DivideAssign
|
||||
| BitwiseANDAssign
|
||||
| BitwiseORAssign
|
||||
| BitwiseXORAssign
|
||||
| RemainderAssign
|
||||
| LeftShiftAssign
|
||||
| SignedRightShiftAssign
|
||||
| UnsignedRightShiftAssign;
|
||||
|
||||
type: identifier (Dot identifier)* bracketsOpt | primitiveType;
|
||||
|
||||
statementExpression: expression;
|
||||
|
||||
constantExpression: expression;
|
||||
|
||||
identifierSuffix: SquareBracketLeft SquareBracketRight bracketsOpt Dot Class
|
||||
|SquareBracketLeft expression SquareBracketRight
|
||||
|arguments
|
||||
|Dot (Class | This | Super arguments New innerCreator);
|
||||
|
||||
postfixOp: Increment | Decrement;
|
||||
|
||||
primitiveType: Byte | Short| Char | Int| Long| Float| Double| Boolean;
|
||||
//Method arguments
|
||||
argumentsOpt: (arguments)?;
|
||||
|
||||
arguments: ParenthesesLeft (expression (Comma expression)*)? ParenthesesRight;
|
||||
|
||||
bracketsOpt: (SquareBracketLeft SquareBracketRight)*;
|
||||
|
||||
creator: qualifiedIdentifier ( arrayCreatorRest | classCreatorRest);
|
||||
|
||||
innerCreator: identifier classCreatorRest;
|
||||
|
||||
arrayCreatorRest: SquareBracketLeft SquareBracketRight bracketsOpt arrayInitializer
|
||||
| SquareBracketLeft expression SquareBracketRight (SquareBracketLeft expression SquareBracketRight)*;
|
||||
classCreatorRest: arguments (classBody)?;
|
||||
|
||||
arrayInitializer: CurlyBracketLeft (variableInitializer(Comma variableInitializer)*(Comma)?)? CurlyBracketRight;
|
||||
|
||||
variableInitializer: arrayInitializer
|
||||
|expression;
|
||||
|
||||
parExpression: ParenthesesLeft expression ParenthesesRight;
|
||||
|
||||
block: CurlyBracketLeft blockStatements CurlyBracketRight;
|
||||
|
||||
blockStatements: (blockStatement)*;
|
||||
|
||||
blockStatement: localVariableDeclarationStatement
|
||||
|classOrInterfaceDeclaration
|
||||
|(identifier Colon)? statement;
|
||||
|
||||
localVariableDeclarationStatement: (Final)? type variableDeclarators;
|
||||
|
||||
statement:completeIf | If parExpression statementIncompleteIf;
|
||||
|
||||
statementIncompleteIf: block
|
||||
| If parExpression completeIf Else statementIncompleteIf
|
||||
| For ParenthesesLeft forInit? Semicolon (expression)? Semicolon forUpdate? ParenthesesRight statement
|
||||
| While parExpression statement
|
||||
| Do statement While parExpression Semicolon
|
||||
| Try block catches
|
||||
| Try block Finally block
|
||||
| Try block catches Finally block
|
||||
| switchStatement
|
||||
| Synchronized parExpression block
|
||||
| Return (expression)? Semicolon
|
||||
| Throw expression Semicolon
|
||||
| Break (identifier)? Semicolon
|
||||
| Continue (identifier)? Semicolon
|
||||
| statementExpression Semicolon
|
||||
| Semicolon;
|
||||
//solve ambiguity over If()else. aka (Dangling else).
|
||||
//this will do the longest check by looking for an else section, fincding the closest else!
|
||||
completeIf: If parExpression completeIf Else completeIf | statementIncompleteIf;
|
||||
|
||||
catches: catchClause (catchClause)*;
|
||||
|
||||
catchClause: Catch ParenthesesLeft formalParameter ParenthesesRight block;
|
||||
|
||||
switchStatement: Switch parExpression CurlyBracketLeft CurlyBracketRight
|
||||
| Switch parExpression CurlyBracketLeft switchBlockStatementGroups? CurlyBracketRight;
|
||||
|
||||
switchBlockStatementGroups: (switchBlockStatementGroup)*;
|
||||
|
||||
switchBlockStatementGroup: switchLabel blockStatements;
|
||||
|
||||
switchLabel: Case constantExpression Colon
|
||||
| Default Colon;
|
||||
moreStatementExpressions: (Comma statementExpression)*;
|
||||
|
||||
forInit: statementExpression moreStatementExpressions
|
||||
| (Final)? type variableDeclarators;
|
||||
|
||||
forUpdate: statementExpression moreStatementExpressions;
|
||||
|
||||
modifiersOpt: (modifier)*;
|
||||
|
||||
modifier: Public
|
||||
| Protected
|
||||
| Private
|
||||
| Static
|
||||
| Abstract
|
||||
| Final
|
||||
| Native
|
||||
| Synchronized
|
||||
| Transient
|
||||
| Volatile
|
||||
| Strictfp;
|
||||
|
||||
variableDeclarators: variableDeclarator (Comma variableDeclarator)*;
|
||||
|
||||
variableDeclaratorsRest: variableDeclaratorRest (Comma variableDeclarator)*;
|
||||
|
||||
constantDeclaratorsRest: constantDeclaratorRest (Comma constantDeclarator)*;
|
||||
|
||||
variableDeclarator: identifier variableDeclaratorsRest;
|
||||
|
||||
constantDeclarator: identifier constantDeclaratorRest;
|
||||
|
||||
variableDeclaratorRest: bracketsOpt (Assignment variableInitializer)?;
|
||||
|
||||
constantDeclaratorRest: bracketsOpt Assignment variableInitializer;
|
||||
|
||||
variableDeclaratorId: identifier bracketsOpt;
|
||||
|
||||
compilationUnit: (Package qualifiedIdentifier Semicolon)? (importDeclaration)*(typeDeclaration)*;
|
||||
|
||||
importDeclaration: Import identifier (Dot identifier)* (Dot Multiplication)? Semicolon;
|
||||
|
||||
typeDeclaration: classOrInterfaceDeclaration | Semicolon;
|
||||
|
||||
classOrInterfaceDeclaration: modifiersOpt (classDeclaration | interfaceDeclaration);
|
||||
|
||||
classDeclaration: Class identifier (Extends type)? (Implements typeList)? classBody;
|
||||
|
||||
interfaceDeclaration: Interface identifier (Extends typeList)? interfaceBody;
|
||||
|
||||
typeList: type (Comma type)*;
|
||||
|
||||
classBody: CurlyBracketLeft (classBodyDeclaration)* CurlyBracketRight;
|
||||
|
||||
interfaceBody: CurlyBracketLeft (interfaceBodyDeclaration)* CurlyBracketRight;
|
||||
|
||||
classBodyDeclaration: Semicolon
|
||||
| (Static)? block
|
||||
| modifiersOpt memberDecl;
|
||||
memberDecl: methodOrFieldDecl
|
||||
| Void identifier methodDeclaratorRest
|
||||
| identifier constructorDeclaratorRest
|
||||
| classOrInterfaceDeclaration;
|
||||
|
||||
methodOrFieldDecl: type identifier methodOrFieldRest;
|
||||
|
||||
methodOrFieldRest: variableDeclaratorRest
|
||||
|methodDeclaratorRest;
|
||||
|
||||
interfaceBodyDeclaration: Semicolon
|
||||
| modifiersOpt interfaceMemberDecl;
|
||||
|
||||
interfaceMemberDecl: interfaceMethodOrFieldDecl
|
||||
| Void identifier voidInterfaceMethodDeclaratorRest
|
||||
| classOrInterfaceDeclaration;
|
||||
|
||||
interfaceMethodOrFieldDecl: type identifier interfaceMethodOrFieldRest;
|
||||
|
||||
interfaceMethodOrFieldRest: constantDeclaratorRest Semicolon
|
||||
| interfaceMethodDeclaratorRest;
|
||||
|
||||
methodDeclaratorRest: formalParameters bracketsOpt (Throws qualifiedIdentifierList)?(methodBody | Semicolon);
|
||||
|
||||
voidMethodDeclaratorRest: formalParameters (Throws qualifiedIdentifierList)? (methodBody | Semicolon);
|
||||
|
||||
interfaceMethodDeclaratorRest: formalParameters bracketsOpt (Throws qualifiedIdentifierList)? Semicolon;
|
||||
|
||||
voidInterfaceMethodDeclaratorRest: formalParameters (Throws qualifiedIdentifierList)?;
|
||||
|
||||
constructorDeclaratorRest: formalParameters (Throws qualifiedIdentifierList)? methodBody;
|
||||
|
||||
qualifiedIdentifierList: qualifiedIdentifier (Comma qualifiedIdentifier)*;
|
||||
|
||||
formalParameters: ParenthesesLeft (formalParameter (Comma formalParameter)*)? ParenthesesRight;
|
||||
|
||||
formalParameter: (Final)? type variableDeclaratorId;
|
||||
|
||||
methodBody: block;
|
||||
|
||||
|
||||
|
||||
|
||||
105
ExprTool.java
105
ExprTool.java
@@ -1,105 +0,0 @@
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Scanner;
|
||||
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.tree.*;
|
||||
import org.antlr.v4.runtime.misc.ParseCancellationException;
|
||||
|
||||
public class ExprTool {
|
||||
public static void main(String[] args) throws Exception {
|
||||
if (args.length == 0) {
|
||||
// If no files given then read from stdin
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
StringBuilder inputBuilder = new StringBuilder();
|
||||
while (scanner.hasNextLine()) {
|
||||
inputBuilder.append(scanner.nextLine()).append("\n");
|
||||
}
|
||||
scanner.close();
|
||||
|
||||
parseAndWalk(inputBuilder.toString(), "<stdin>");
|
||||
} else {
|
||||
// for Loop through all given file paths
|
||||
for (String filePath : args) {
|
||||
try {
|
||||
String inputText = new String(Files.readAllBytes(Paths.get(filePath)));
|
||||
parseAndWalk(inputText, filePath);
|
||||
} catch (IOException e) {
|
||||
System.err.println("Error reading file: " + filePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Reusable parsing + walking
|
||||
private static void parseAndWalk(String inputText, String sourceName) {
|
||||
try {
|
||||
// Create char stream
|
||||
CharStream input = CharStreams.fromString(inputText, sourceName);
|
||||
|
||||
// Lexer
|
||||
ExprLexer lexer = new ExprLexer(input);
|
||||
lexer.removeErrorListeners();
|
||||
lexer.addErrorListener(new ThrowingErrorListener());
|
||||
|
||||
// Tokens
|
||||
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
||||
|
||||
// Parser
|
||||
ExprParser parser = new ExprParser(tokens);
|
||||
parser.removeErrorListeners();
|
||||
parser.addErrorListener(new ThrowingErrorListener());
|
||||
|
||||
// Parse compilation unit
|
||||
ParseTree tree = parser.compilationUnit();
|
||||
|
||||
// Walk
|
||||
ParseTreeWalker walker = new ParseTreeWalker();
|
||||
walker.walk(new ClassPrinter(sourceName), tree);
|
||||
|
||||
} catch (RuntimeException e) {
|
||||
System.err.println("Parsing failed: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Listener to print class declarations with line/column
|
||||
public static class ClassPrinter extends ExprParserBaseListener {
|
||||
private final String sourceName;
|
||||
|
||||
public ClassPrinter(String sourceName) {
|
||||
this.sourceName = sourceName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterClassDeclaration(ExprParser.ClassDeclarationContext ctx) {
|
||||
int line = ctx.getStart().getLine();
|
||||
int col = ctx.getStart().getCharPositionInLine();
|
||||
String className = ctx.identifier().getText();
|
||||
System.out.printf("Class %s, file %s, line %d, column %d%n",
|
||||
className, sourceName, line, col);
|
||||
}
|
||||
}
|
||||
|
||||
// Custom error listener
|
||||
public static class ThrowingErrorListener extends BaseErrorListener {
|
||||
@Override
|
||||
public void syntaxError(Recognizer<?, ?> recognizer,
|
||||
Object offendingSymbol,
|
||||
int line, int charPositionInLine,
|
||||
String msg,
|
||||
RecognitionException e) {
|
||||
String sourceName = recognizer.getInputStream().getSourceName();
|
||||
if (sourceName == null || sourceName.isEmpty()) {
|
||||
sourceName = "<unknown>";
|
||||
}
|
||||
|
||||
String formatted = String.format(
|
||||
" file %s, line %d, column %d%n%s",
|
||||
sourceName, line, charPositionInLine, msg
|
||||
);
|
||||
|
||||
throw new ParseCancellationException(formatted);
|
||||
}
|
||||
}
|
||||
}
|
||||
17
README.md
17
README.md
@@ -1 +1,16 @@
|
||||
# CPSC-499
|
||||
### Things
|
||||
1. Forward Slice => All statements that could be affected if you change a given statement.Think of it like ripple effects in water:
|
||||
|
||||
|
||||
|
||||
### Run
|
||||
|
||||
```bash
|
||||
chmod +x run.sh
|
||||
|
||||
# Show all dependencies for a file
|
||||
./run.sh examples/Example1.java
|
||||
|
||||
# Analyze impact of line 3
|
||||
./run.sh examples/Example1.java 3
|
||||
```
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
package Test
|
||||
|
||||
abstract class TaxCalculator {
|
||||
protected double income
|
||||
|
||||
public TaxCalculator(double income {
|
||||
this.income = income
|
||||
}
|
||||
public abstract double calculateTax()
|
||||
|
||||
public double afterTaxIncome() {
|
||||
return income - calculateTax()
|
||||
|
||||
}
|
||||
class FlatTaxCalculator extends TaxCalculator {
|
||||
private static final double RATE = 0.15
|
||||
public FlatTaxCalculator(double income) super(income)
|
||||
public double calculateTax() {
|
||||
return income * RATE
|
||||
}
|
||||
|
||||
public class TaxApp {
|
||||
static class BracketTaxCalculator extends TaxCalculator {
|
||||
public BracketTaxCalculator(double income)
|
||||
super(income)
|
||||
|
||||
public double calculateTax() {
|
||||
if (income <= 10000) return income * 0.10
|
||||
else if (income <= 50000) return (10000 * 0.10) + ((income - 10000) * 0.20)
|
||||
else return (10000 * 0.10) + (40000 * 0.20) + ((income - 50000) * 0.30)
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
double income = 60000
|
||||
|
||||
TaxCalculator flat = new FlatTaxCalculator(income)
|
||||
double flatTax = flat.calculateTax()
|
||||
double flatAfterTax = flat.afterTaxIncome()
|
||||
|
||||
TaxCalculator bracket = new BracketTaxCalculator(income)
|
||||
double bracketTax = bracket.calculateTax()
|
||||
double bracketAfterTax = bracket.afterTaxIncome()
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package Test;
|
||||
abstract class TaxCalculator {
|
||||
protected double income;
|
||||
|
||||
public TaxCalculator(double income) {
|
||||
this.income = income;
|
||||
}
|
||||
public abstract double calculateTax();
|
||||
public double afterTaxIncome() {
|
||||
return income - calculateTax();
|
||||
}
|
||||
}
|
||||
class FlatTaxCalculator extends TaxCalculator {
|
||||
private static final double RATE = 0.15;
|
||||
public FlatTaxCalculator(double income) {super(income);}
|
||||
public double calculateTax() {
|
||||
return income * RATE;
|
||||
}
|
||||
}
|
||||
|
||||
public class TaxApp {
|
||||
static class BracketTaxCalculator extends TaxCalculator {
|
||||
public BracketTaxCalculator(double income) {
|
||||
super(income);
|
||||
}
|
||||
public double calculateTax() {
|
||||
if (income <= 10000) {return income * 0.10;}
|
||||
else if (income <= 50000) { return (10000 * 0.10) + ((income - 10000) * 0.20);}
|
||||
else { return (10000 * 0.10) + (40000 * 0.20) + ((income - 50000) * 0.30);}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
double income = 60000;
|
||||
|
||||
TaxCalculator flat = new FlatTaxCalculator(income);
|
||||
double flatTax = flat.calculateTax();
|
||||
double flatAfterTax = flat.afterTaxIncome();
|
||||
|
||||
TaxCalculator bracket = new BracketTaxCalculator(income);
|
||||
double bracketTax = bracket.calculateTax();
|
||||
double bracketAfterTax = bracket.afterTaxIncome();
|
||||
}
|
||||
}
|
||||
BIN
lib/.DS_Store
vendored
Normal file
BIN
lib/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
lib/antlr-4.9.3-complete.jar
Normal file
BIN
lib/antlr-4.9.3-complete.jar
Normal file
Binary file not shown.
BIN
lib/apfloat-1.10.1-javadoc.jar
Normal file
BIN
lib/apfloat-1.10.1-javadoc.jar
Normal file
Binary file not shown.
BIN
lib/apfloat-1.10.1.jar
Normal file
BIN
lib/apfloat-1.10.1.jar
Normal file
Binary file not shown.
BIN
lib/jgrapht-core-1.5.1.jar
Normal file
BIN
lib/jgrapht-core-1.5.1.jar
Normal file
Binary file not shown.
BIN
lib/jgrapht-core-1.5.2-javadoc.jar
Normal file
BIN
lib/jgrapht-core-1.5.2-javadoc.jar
Normal file
Binary file not shown.
BIN
lib/jgrapht-core-1.5.2.jar
Normal file
BIN
lib/jgrapht-core-1.5.2.jar
Normal file
Binary file not shown.
BIN
lib/jgrapht-io-1.5.1.jar
Normal file
BIN
lib/jgrapht-io-1.5.1.jar
Normal file
Binary file not shown.
BIN
lib/jgrapht-io-1.5.2.jar
Normal file
BIN
lib/jgrapht-io-1.5.2.jar
Normal file
Binary file not shown.
BIN
lib/jheaps-0.14-javadoc.jar
Normal file
BIN
lib/jheaps-0.14-javadoc.jar
Normal file
Binary file not shown.
BIN
lib/jheaps-0.14.jar
Normal file
BIN
lib/jheaps-0.14.jar
Normal file
Binary file not shown.
27
run.sh
Executable file
27
run.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
echo "Usage: ./run.sh <file> [line]"
|
||||
echo "Example: ./run.sh examples/Example1.java 3"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for antlr jar
|
||||
if [ ! -f "lib/antlr-4.13.2-complete.jar" ]; then
|
||||
echo "ERROR: Put antlr-4.13.2-complete.jar in lib/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build if needed be
|
||||
if [ ! -d "bin/pdg" ]; then
|
||||
echo "Building..."
|
||||
mkdir -p bin
|
||||
CP="lib/antlr-4.13.2-complete.jar"
|
||||
javac -d bin -cp "$CP" src/org/lsmr/cfg/*.java || exit 1
|
||||
javac -d bin -cp "$CP:bin" src/pdg/PDG.java || exit 1
|
||||
javac -d bin -cp "$CP:bin" src/CFGBuilder.java src/PDGTool.java || exit 1
|
||||
echo "Build complete!"
|
||||
fi
|
||||
|
||||
# Run
|
||||
java -cp "bin:lib/antlr-4.13.2-complete.jar" PDGTool "$@"
|
||||
BIN
src/.DS_Store
vendored
Normal file
BIN
src/.DS_Store
vendored
Normal file
Binary file not shown.
80
src/CFGBuilder.java
Normal file
80
src/CFGBuilder.java
Normal file
@@ -0,0 +1,80 @@
|
||||
import org.lsmr.cfg.*;
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.tree.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
public class CFGBuilder {
|
||||
|
||||
/**
|
||||
* Build CFG from a Java file
|
||||
*/
|
||||
public ControlFlowGraph buildFromFile(String filename) throws IOException {
|
||||
System.out.println("\n\tBuilding CFG from " + filename);
|
||||
|
||||
// Parse the file
|
||||
CharStream input = CharStreams.fromFileName(filename);
|
||||
Java1_4Lexer lexer = new Java1_4Lexer(input);
|
||||
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
||||
Java1_4Parser parser = new Java1_4Parser(tokens);
|
||||
|
||||
parser.removeErrorListeners();
|
||||
|
||||
ParseTree tree = parser.compilationUnit();
|
||||
|
||||
// build CFG using professor's NodeBuilder
|
||||
NodeBuilder builder = new NodeBuilder();
|
||||
builder.visit(tree);
|
||||
|
||||
List<ControlFlowGraph> cfgs = builder.getCFGs();
|
||||
|
||||
if (cfgs.isEmpty()) {
|
||||
throw new RuntimeException("No methods found in file");
|
||||
}
|
||||
|
||||
if (cfgs.size() > 1) {
|
||||
System.out.println("Note: File has " + cfgs.size() + " methods, using first method");
|
||||
}
|
||||
|
||||
ControlFlowGraph cfg = cfgs.get(0);
|
||||
|
||||
System.out.println("CFG built: " + cfg.nodes().size() + " nodes, " + cfg.edges().size() + " edges");
|
||||
|
||||
return cfg;
|
||||
}
|
||||
|
||||
public int getLineNumber(Node node) {
|
||||
return node.getLineNumber();
|
||||
}
|
||||
|
||||
public List<Node> findNodesAtLine(ControlFlowGraph cfg, int lineNumber) {
|
||||
List<Node> result = new ArrayList<>();
|
||||
for (Node node : cfg.nodes()) {
|
||||
if (getLineNumber(node) == lineNumber) {
|
||||
result.add(node);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void printLineMapping(ControlFlowGraph cfg) {
|
||||
System.out.println("\n Line Number Mapping");
|
||||
Map<Integer, List<String>> lineToNodes = new TreeMap<>();
|
||||
|
||||
for (Node node : cfg.nodes()) {
|
||||
int line = getLineNumber(node);
|
||||
if (line > 0) {
|
||||
lineToNodes.putIfAbsent(line, new ArrayList<>());
|
||||
lineToNodes.get(line).add(node.label());
|
||||
}
|
||||
}
|
||||
|
||||
for (Map.Entry<Integer, List<String>> entry : lineToNodes.entrySet()) {
|
||||
System.out.println("Line " + entry.getKey() + ":");
|
||||
for (String label : entry.getValue()) {
|
||||
System.out.println(" " + label);
|
||||
}
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
106
src/CIA.java
Normal file
106
src/CIA.java
Normal file
@@ -0,0 +1,106 @@
|
||||
import org.lsmr.cfg.*;
|
||||
import pdg.PDG;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* PDG Tool: Change Impact Analysis
|
||||
* Usage: java PDGTool <java-file> [line-number]
|
||||
*/
|
||||
public class CIA {
|
||||
|
||||
public static void main(String[] args) {
|
||||
if (args.length < 1) {
|
||||
System.err.println("Usage: java PDGTool <java-file> [line-number]");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
String filename = args[0];
|
||||
Integer targetLine = args.length > 1 ? Integer.parseInt(args[1]) : null;
|
||||
|
||||
try {
|
||||
analyzePDG(filename, targetLine);
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
private static void analyzePDG(String filename, Integer targetLine) throws IOException {
|
||||
System.out.println("PDG Analysis Tool");
|
||||
System.out.println("File: " + filename);
|
||||
if (targetLine != null) {
|
||||
System.out.println("Target line: " + targetLine);
|
||||
}
|
||||
|
||||
// Step 1: Build CFG
|
||||
CFGBuilder cfgBuilder = new CFGBuilder();
|
||||
ControlFlowGraph cfg = cfgBuilder.buildFromFile(filename);
|
||||
|
||||
// Step 2: Build PDG
|
||||
PDG pdg = new PDG(cfg);
|
||||
|
||||
// Step 3: Show results
|
||||
System.out.println("\n=== Available Lines ===");
|
||||
List<Integer> lines = cfg.getAllLineNumbers();
|
||||
System.out.println("Lines with statements: " + lines);
|
||||
|
||||
// If specific line requested, compute impact
|
||||
if (targetLine != null) {
|
||||
computeImpact(cfg, pdg, cfgBuilder, targetLine);
|
||||
} else {
|
||||
// Show all dependencies
|
||||
System.out.println("\n=== All Dependencies ===");
|
||||
pdg.printPDG();
|
||||
cfgBuilder.printLineMapping(cfg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void computeImpact(ControlFlowGraph cfg, PDG pdg,
|
||||
CFGBuilder cfgBuilder, int targetLine) {
|
||||
System.out.println("\n=== Impact Analysis for Line " + targetLine + " ===");
|
||||
|
||||
// Find nodes at target line
|
||||
List<Node> nodesAtLine = cfgBuilder.findNodesAtLine(cfg, targetLine);
|
||||
|
||||
if (nodesAtLine.isEmpty()) {
|
||||
System.out.println("WARNING: No executable statement at line " + targetLine);
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println("\nStatement(s) at line " + targetLine + ":");
|
||||
for (Node node : nodesAtLine) {
|
||||
System.out.println(" " + node.label());
|
||||
}
|
||||
|
||||
// Compute forward slice
|
||||
Set<String> allImpacted = new HashSet<>();
|
||||
for (Node node : nodesAtLine) {
|
||||
Set<String> impacted = pdg.computeForwardSlice(node.label());
|
||||
allImpacted.addAll(impacted);
|
||||
}
|
||||
|
||||
// Convert to line numbers
|
||||
Set<Integer> impactedLines = new TreeSet<>();
|
||||
for (Node node : cfg.nodes()) {
|
||||
if (allImpacted.contains(node.label())) {
|
||||
int line = cfgBuilder.getLineNumber(node);
|
||||
if (line > 0) {
|
||||
impactedLines.add(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("\n=== IMPACTED LINES ===");
|
||||
if (impactedLines.isEmpty()) {
|
||||
System.out.println(" (none)");
|
||||
} else {
|
||||
for (int line : impactedLines) {
|
||||
System.out.println(" Line " + line);
|
||||
}
|
||||
System.out.println("\nTotal: " + impactedLines.size() + " lines impacted");
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/org/.DS_Store
vendored
Normal file
BIN
src/org/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
src/org/lsmr/.DS_Store
vendored
Normal file
BIN
src/org/lsmr/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
src/org/lsmr/cfg/.DS_Store
vendored
Normal file
BIN
src/org/lsmr/cfg/.DS_Store
vendored
Normal file
Binary file not shown.
312
src/org/lsmr/cfg/ControlFlowGraph.java
Normal file
312
src/org/lsmr/cfg/ControlFlowGraph.java
Normal file
@@ -0,0 +1,312 @@
|
||||
package org.lsmr.cfg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.antlr.v4.runtime.tree.ParseTree;
|
||||
import org.lsmr.cfg.Edge.EdgeLabel;
|
||||
import org.lsmr.cfg.Java1_4Parser.StatementContext;
|
||||
|
||||
/**
|
||||
* Represents mathematical graphs. Each graph contains a set of nodes, each of
|
||||
* which will refer to this graph as its container, and a set of edges, each of
|
||||
* which will refer to this graph as its container and to two nodes that must be
|
||||
* in this graph. To guarantee that these constraints be met, nodes and edges
|
||||
* are read-only and have to be created indirectly from the graph in which they
|
||||
* exist.
|
||||
*/
|
||||
public class ControlFlowGraph {
|
||||
/**
|
||||
* Represents the entry point of this CFG. This will have no in-edges, but at
|
||||
* least one out-edge.
|
||||
*/
|
||||
public Node entry;
|
||||
|
||||
/**
|
||||
* Represents the exit point of this CFG for normal returns. This will have no
|
||||
* out-edges, but at least one in-edge.
|
||||
*/
|
||||
public Node normalExit;
|
||||
|
||||
/**
|
||||
* Represents the exit point of this CFG for exception throws. This will have no
|
||||
* out-edges, but at least one in-edge.
|
||||
*/
|
||||
public Node abruptExit;
|
||||
|
||||
private Map<String, List<Node>> nodes = new HashMap<>();
|
||||
private List<Edge> edges = new ArrayList<>();
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* Determines if this CFG contains the indicated node, using the
|
||||
* {@link Node#equals(Object)} method.
|
||||
*
|
||||
* @param n
|
||||
* The node to look for.
|
||||
* @return true if this CFG contains the indicated node; otherwise, false.
|
||||
*/
|
||||
public boolean containsNode(Node n) {
|
||||
String label = n.label();
|
||||
List<Node> list = nodes.get(label);
|
||||
|
||||
return list.contains(n);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param name
|
||||
* The name of the graph. Cannot be null or empty.
|
||||
* @throws IllegalArgumentException
|
||||
* If the name is null or empty.
|
||||
*/
|
||||
public ControlFlowGraph(String name) {
|
||||
if (name == null || name.length() < 1)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
this.name = name;
|
||||
|
||||
String entryLabel = "*ENTRY*";
|
||||
entry = new Node(entryLabel);
|
||||
entry.setGraph(this);
|
||||
nodes.put(entryLabel, new ArrayList<>(Arrays.asList(entry)));
|
||||
|
||||
String exitLabel = "*EXIT*";
|
||||
normalExit = new Node(exitLabel);
|
||||
normalExit.setGraph(this);
|
||||
nodes.put(exitLabel, new ArrayList<>(Arrays.asList(normalExit)));
|
||||
|
||||
String abruptExitLabel = "*THROWN*";
|
||||
abruptExit = new Node(abruptExitLabel);
|
||||
abruptExit.setGraph(this);
|
||||
nodes.put(abruptExitLabel, new ArrayList<>(Arrays.asList(abruptExit)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Accesses the set of nodes defined on this graph.
|
||||
*
|
||||
* @return An immutable set of all nodes defined on this graph.
|
||||
*/
|
||||
public List<Node> nodes() {
|
||||
ArrayList<Node> result = new ArrayList<>();
|
||||
|
||||
for (List<Node> list : nodes.values())
|
||||
result.addAll(list);
|
||||
|
||||
return Collections.unmodifiableList(result);
|
||||
}
|
||||
|
||||
public List<Integer> getAllLineNumbers() {
|
||||
List<Integer> lineNumbers = new ArrayList<>();
|
||||
|
||||
for (List<Node> listNodes : this.nodes.values()) {
|
||||
for (Node n : listNodes) {
|
||||
lineNumbers.add(n.getLineNumber());
|
||||
}
|
||||
}
|
||||
return lineNumbers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accesses the set of edges defined on this graph.
|
||||
*
|
||||
* @return An immutable set of all edges defined on this graph.
|
||||
*/
|
||||
public List<Edge> edges() {
|
||||
return Collections.unmodifiableList(edges);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accesses the first node with label as its label.
|
||||
*
|
||||
* @param label
|
||||
* The label to locate. Must not be null.
|
||||
* @return The first node with the indicated label, or null if nonesuch exists.
|
||||
*/
|
||||
public Node findNode(String label) {
|
||||
List<Node> list = nodes.get(label);
|
||||
|
||||
if (list != null && list.size() > 0)
|
||||
return list.get(0);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accesses the first node with label as its label.
|
||||
*
|
||||
* @param label
|
||||
* The label to locate. Must not be null.
|
||||
* @return The first node with the indicated label, or null if nonesuch exists.
|
||||
*/
|
||||
public List<Node> findNodes(String label) {
|
||||
List<Node> list = nodes.get(label);
|
||||
|
||||
if (list != null)
|
||||
return Collections.unmodifiableList(list);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a node on this graph with the indicated label.
|
||||
*
|
||||
* @param label
|
||||
* A label for the new node that may be used in identifying it.
|
||||
* Cannot be null or empty.
|
||||
* @return The newly created node.
|
||||
* @throws IllegalArgumentException
|
||||
* If the label is null or empty.
|
||||
*/
|
||||
public Node buildNode(String label) {
|
||||
if (label == null || label.length() < 1)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
Node node = new Node(label);
|
||||
List<Node> list;
|
||||
|
||||
if (nodes.containsKey(label))
|
||||
list = nodes.get(label);
|
||||
else {
|
||||
list = new ArrayList<>();
|
||||
nodes.put(label, list);
|
||||
}
|
||||
|
||||
list.add(node);
|
||||
node.setGraph(this);
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds an edge on this graph with the indicated label.
|
||||
*
|
||||
* @param source
|
||||
* The source node. Cannot be null.
|
||||
* @param target
|
||||
* The target node. Cannot be null.
|
||||
* @param label
|
||||
* A label for the new edge that may be used in identifying it.
|
||||
* Cannot be null or empty.
|
||||
* @return The newly created edge.
|
||||
* @throws IllegalArgumentException
|
||||
* If the label is null or empty or either of
|
||||
* the indicated nodes is
|
||||
* null.
|
||||
*/
|
||||
public Edge buildEdge(Node source, Node target, EdgeLabel label) {
|
||||
if (source == null || label == null)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
Edge edge = new Edge(source, target, label);
|
||||
|
||||
edges.add(edge);
|
||||
edge.setGraph(this);
|
||||
source.addOutEdge(edge);
|
||||
|
||||
if (target != null)
|
||||
target.addInEdge(edge);
|
||||
|
||||
return edge;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds an edge on this graph with the indicated label.
|
||||
*
|
||||
* @param source
|
||||
* The source node. Cannot be null.
|
||||
* @param target
|
||||
* The target node. Cannot be null.
|
||||
* @param label
|
||||
* A label for the new edge that may be used in identifying
|
||||
* it.
|
||||
* Cannot be null or empty.
|
||||
* @param extendedLabel
|
||||
* An extension to the label for the new edge that may be
|
||||
* used in
|
||||
* identifying it.
|
||||
* @return The newly created edge.
|
||||
* @throws IllegalArgumentException
|
||||
* If the label is null or empty or either of
|
||||
* the indicated nodes is
|
||||
* null.
|
||||
*/
|
||||
public Edge buildEdge(Node source, Node target, EdgeLabel label, String extendedLabel) {
|
||||
if (source == null || label == null)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
Edge edge = new Edge(source, target, label, extendedLabel);
|
||||
|
||||
edges.add(edge);
|
||||
edge.setGraph(this);
|
||||
source.addOutEdge(edge);
|
||||
|
||||
if (target != null)
|
||||
target.addInEdge(edge);
|
||||
|
||||
return edge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (!(obj instanceof ControlFlowGraph))
|
||||
return false;
|
||||
|
||||
ControlFlowGraph other = (ControlFlowGraph) obj;
|
||||
|
||||
return areEqual(nodes, other.nodes) && areEqual(edges, other.edges);
|
||||
}
|
||||
|
||||
private static boolean areEqual(Map<String, List<Node>> nodes1, Map<String, List<Node>> nodes2) {
|
||||
List<Node> list1 = new ArrayList<>();
|
||||
List<Node> list2 = new ArrayList<>();
|
||||
|
||||
for (List<Node> nodeList : nodes1.values())
|
||||
list1.addAll(nodeList);
|
||||
|
||||
for (List<Node> nodeList : nodes2.values())
|
||||
list2.addAll(nodeList);
|
||||
|
||||
if (list1.size() != list2.size())
|
||||
return false;
|
||||
|
||||
for (Node n : list1)
|
||||
if (!list2.contains(n))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean areEqual(List<Edge> edges1, List<Edge> edges2) {
|
||||
if (edges1.size() != edges2.size())
|
||||
return false;
|
||||
|
||||
for (Edge edge : edges1) {
|
||||
if (!edges2.contains(edge))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append("graph ");
|
||||
sb.append(name);
|
||||
sb.append(": nodes [");
|
||||
sb.append(nodes.toString());
|
||||
sb.append("], edges [");
|
||||
sb.append(edges.toString());
|
||||
sb.append("]");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
207
src/org/lsmr/cfg/Edge.java
Normal file
207
src/org/lsmr/cfg/Edge.java
Normal file
@@ -0,0 +1,207 @@
|
||||
package org.lsmr.cfg;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Represents an edge in a graph. During construction of a graph, it can be that
|
||||
* edges are not fully initialized on a first pass.
|
||||
*/
|
||||
public class Edge {
|
||||
|
||||
/**
|
||||
* The legal labels to use on edges.
|
||||
*/
|
||||
public static enum EdgeLabel {
|
||||
/**
|
||||
* Represents a default edge without no label to test for branching.
|
||||
*/
|
||||
BLANK,
|
||||
/**
|
||||
* Represents a true branch.
|
||||
*/
|
||||
TRUE,
|
||||
/**
|
||||
* Represents a false branch.
|
||||
*/
|
||||
FALSE,
|
||||
/**
|
||||
* Represents a branch taken when an exception is thrown.
|
||||
*/
|
||||
THROWN,
|
||||
/**
|
||||
* Represents a branch taken when an exception is thrown but delayed for completion in a finally block.
|
||||
*/
|
||||
THROWN_DELAYED,
|
||||
/**
|
||||
* Represents a branch taken when an exception is definitively caught.
|
||||
*/
|
||||
CAUGHT,
|
||||
/**
|
||||
* Represents a branch taken when the corresponding extended label is matched.
|
||||
*/
|
||||
CASE;
|
||||
|
||||
public String toString() {
|
||||
switch(this) {
|
||||
case BLANK:
|
||||
return "";
|
||||
|
||||
default:
|
||||
return super.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Node source;
|
||||
Node target;
|
||||
private EdgeLabel label;
|
||||
private String extendedLabel;
|
||||
private ControlFlowGraph graph;
|
||||
|
||||
Edge(Node source, Node target, EdgeLabel label) {
|
||||
this(source, target, label, "");
|
||||
}
|
||||
|
||||
Edge(Node source, Node target, EdgeLabel label, String extendedLabel) {
|
||||
if(source == null || label == null)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
this.source = source;
|
||||
this.target = target;
|
||||
this.label = label;
|
||||
this.extendedLabel = extendedLabel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the source node for this edge.
|
||||
*
|
||||
* @return The source node. Should not be null.
|
||||
*/
|
||||
public Node source() {
|
||||
return source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the target node for this edge.
|
||||
*
|
||||
* @return The target node. May be null if it has not been fully initialized.
|
||||
*/
|
||||
public Node target() {
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the kind of edge represented: BLANK if default.
|
||||
*
|
||||
* @return The label of this edge. Should not be null.
|
||||
*/
|
||||
public EdgeLabel label() {
|
||||
return label;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the extended label for edges whose labels cannot be purely
|
||||
* represented via an enum constant.
|
||||
*
|
||||
* @return The extended label of this edge. Should not be null; may be empty.
|
||||
*/
|
||||
public String extendedLabel() {
|
||||
return extendedLabel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the graph in which this edge occurs.
|
||||
*
|
||||
* @return The graph in which this edge occurs. Should not be null unless the
|
||||
* edge is not fully initialized.
|
||||
*/
|
||||
public ControlFlowGraph graph() {
|
||||
return graph;
|
||||
}
|
||||
|
||||
void setTarget(Node target) {
|
||||
if(target == null || target.graph() != graph)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
this.target = target;
|
||||
|
||||
if(target != null)
|
||||
target.addInEdge(this);
|
||||
}
|
||||
|
||||
void setGraph(ControlFlowGraph graph) {
|
||||
if(this.graph != null) {
|
||||
if(graph == null)
|
||||
this.graph = null;
|
||||
else
|
||||
throw new IllegalStateException("Non-null graph cannot be swapped to another. Erase it first");
|
||||
}
|
||||
else if(graph == null)
|
||||
throw new IllegalStateException("Null graph should not be set to null again");
|
||||
else
|
||||
this.graph = graph;
|
||||
|
||||
if(!graph.containsNode(source))
|
||||
throw new IllegalStateException("Edge source not member of graph");
|
||||
|
||||
if(target != null && !graph.containsNode(target))
|
||||
throw new IllegalStateException("Edge target not member of graph");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = 17;
|
||||
|
||||
result = 31 * result + source.hashCode();
|
||||
result = 31 * result + (target != null ? target.hashCode() : 0);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if(obj instanceof Edge) {
|
||||
Edge other = (Edge)obj;
|
||||
|
||||
if(label != null)
|
||||
return label.equals(other.label);
|
||||
|
||||
if(source.equals(other.source)) {
|
||||
if(target == null) {
|
||||
if(other.target == null)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return target.equals(other.target);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append("edge");
|
||||
|
||||
String ls = label.toString();
|
||||
|
||||
if(ls != "") {
|
||||
sb.append(" ");
|
||||
sb.append(ls);
|
||||
|
||||
if(extendedLabel != null) {
|
||||
sb.append(" ");
|
||||
sb.append(extendedLabel);
|
||||
}
|
||||
}
|
||||
|
||||
sb.append(": (");
|
||||
sb.append(source.label());
|
||||
sb.append(", ");
|
||||
sb.append(target == null ? "null" : target.label());
|
||||
sb.append(")");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
891
src/org/lsmr/cfg/Java1_4Lexer.java
Normal file
891
src/org/lsmr/cfg/Java1_4Lexer.java
Normal file
@@ -0,0 +1,891 @@
|
||||
// Generated from Java1_4Lexer.g4 by ANTLR 4.13.2
|
||||
|
||||
package org.lsmr.cfg;
|
||||
|
||||
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", "CheckReturnValue", "this-escape"})
|
||||
public class Java1_4Lexer extends Lexer {
|
||||
static { RuntimeMetaData.checkVersion("4.13.2", RuntimeMetaData.VERSION); }
|
||||
|
||||
protected static final DFA[] _decisionToDFA;
|
||||
protected static final PredictionContextCache _sharedContextCache =
|
||||
new PredictionContextCache();
|
||||
public static final int
|
||||
ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8,
|
||||
CLASS=9, CONTINUE=10, DEFAULT=11, DO=12, DOUBLE=13, ELSE=14, EXTENDS=15,
|
||||
FINAL=16, FINALLY=17, FLOAT=18, FOR=19, IF=20, IMPLEMENTS=21, IMPORT=22,
|
||||
INSTANCEOF=23, INT=24, INTERFACE=25, LONG=26, NATIVE=27, NEW=28, PACKAGE=29,
|
||||
PRIVATE=30, PROTECTED=31, PUBLIC=32, RETURN=33, SHORT=34, STATIC=35, STRICTFP=36,
|
||||
SUPER=37, SWITCH=38, SYNCHRONIZED=39, THIS=40, THROW=41, THROWS=42, TRANSIENT=43,
|
||||
TRY=44, VOID=45, VOLATILE=46, WHILE=47, SEMICOLON=48, COMMA=49, PERIOD=50,
|
||||
OPEN_PARENTHESIS=51, CLOSE_PARENTHESIS=52, OPEN_BRACE=53, CLOSE_BRACE=54,
|
||||
OPEN_BRACKET=55, CLOSE_BRACKET=56, COLON=57, QUESTION=58, EQUALS=59, PLUS=60,
|
||||
MINUS=61, ASTERISK=62, SLASH=63, PERCENT=64, DOUBLE_PLUS=65, DOUBLE_MINUS=66,
|
||||
EXCLAMATION=67, TILDE=68, DOUBLE_EQUALS=69, EXCLAMATION_EQUALS=70, LESS_THAN=71,
|
||||
GREATER_THAN=72, LESS_THAN_OR_EQUALS=73, GREATER_THAN_OR_EQUALS=74, DOUBLE_AMPERSAND=75,
|
||||
DOUBLE_PIPE=76, AMPERSAND=77, PIPE=78, CARET=79, DOUBLE_LESS_THAN=80,
|
||||
DOUBLE_GREATER_THAN=81, TRIPLE_GREATER_THAN=82, PLUS_EQUALS=83, MINUS_EQUALS=84,
|
||||
ASTERISK_EQUALS=85, SLASH_EQUALS=86, AMPERSAND_EQUALS=87, PIPE_EQUALS=88,
|
||||
CARET_EQUALS=89, PERCENT_EQUALS=90, DOUBLE_LESS_THAN_EQUALS=91, DOUBLE_GREATER_THAN_EQUALS=92,
|
||||
TRIPLE_GREATER_THAN_EQUALS=93, Identifier=94, IntegerLiteral=95, FloatingPointLiteral=96,
|
||||
CharacterLiteral=97, StringLiteral=98, BooleanLiteral=99, NullLiteral=100,
|
||||
WHITESPACE=101, LINE_COMMENT=102, COMMENT=103;
|
||||
public static String[] channelNames = {
|
||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||
};
|
||||
|
||||
public static String[] modeNames = {
|
||||
"DEFAULT_MODE"
|
||||
};
|
||||
|
||||
private static String[] makeRuleNames() {
|
||||
return new String[] {
|
||||
"ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR",
|
||||
"CLASS", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "EXTENDS", "FINAL",
|
||||
"FINALLY", "FLOAT", "FOR", "IF", "IMPLEMENTS", "IMPORT", "INSTANCEOF",
|
||||
"INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", "PROTECTED",
|
||||
"PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH",
|
||||
"SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID",
|
||||
"VOLATILE", "WHILE", "SEMICOLON", "COMMA", "PERIOD", "OPEN_PARENTHESIS",
|
||||
"CLOSE_PARENTHESIS", "OPEN_BRACE", "CLOSE_BRACE", "OPEN_BRACKET", "CLOSE_BRACKET",
|
||||
"COLON", "QUESTION", "EQUALS", "PLUS", "MINUS", "ASTERISK", "SLASH",
|
||||
"PERCENT", "DOUBLE_PLUS", "DOUBLE_MINUS", "EXCLAMATION", "TILDE", "DOUBLE_EQUALS",
|
||||
"EXCLAMATION_EQUALS", "LESS_THAN", "GREATER_THAN", "LESS_THAN_OR_EQUALS",
|
||||
"GREATER_THAN_OR_EQUALS", "DOUBLE_AMPERSAND", "DOUBLE_PIPE", "AMPERSAND",
|
||||
"PIPE", "CARET", "DOUBLE_LESS_THAN", "DOUBLE_GREATER_THAN", "TRIPLE_GREATER_THAN",
|
||||
"PLUS_EQUALS", "MINUS_EQUALS", "ASTERISK_EQUALS", "SLASH_EQUALS", "AMPERSAND_EQUALS",
|
||||
"PIPE_EQUALS", "CARET_EQUALS", "PERCENT_EQUALS", "DOUBLE_LESS_THAN_EQUALS",
|
||||
"DOUBLE_GREATER_THAN_EQUALS", "TRIPLE_GREATER_THAN_EQUALS", "Identifier",
|
||||
"JavaLetter", "JavaLetterOrDigit", "IntegerLiteral", "FloatingPointLiteral",
|
||||
"CharacterLiteral", "StringLiteral", "BooleanLiteral", "NullLiteral",
|
||||
"WHITESPACE", "LINE_COMMENT", "COMMENT"
|
||||
};
|
||||
}
|
||||
public static final String[] ruleNames = makeRuleNames();
|
||||
|
||||
private static String[] makeLiteralNames() {
|
||||
return new String[] {
|
||||
null, "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'",
|
||||
"'catch'", "'char'", "'class'", "'continue'", "'default'", "'do'", "'double'",
|
||||
"'else'", "'extends'", "'final'", "'finally'", "'float'", "'for'", "'if'",
|
||||
"'implements'", "'import'", "'instanceof'", "'int'", "'interface'", "'long'",
|
||||
"'native'", "'new'", "'package'", "'private'", "'protected'", "'public'",
|
||||
"'return'", "'short'", "'static'", "'strictfp'", "'super'", "'switch'",
|
||||
"'synchronized'", "'this'", "'throw'", "'throws'", "'transient'", "'try'",
|
||||
"'void'", "'volatile'", "'while'", "';'", "','", "'.'", "'('", "')'",
|
||||
"'{'", "'}'", "'['", "']'", "':'", "'?'", "'='", "'+'", "'-'", "'*'",
|
||||
"'/'", "'%'", "'++'", "'--'", "'!'", "'~'", "'=='", "'!='", "'<'", "'>'",
|
||||
"'<='", "'>='", "'&&'", "'||'", "'&'", "'|'", "'^'", "'<<'", "'>>'",
|
||||
"'>>>'", "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='",
|
||||
"'<<='", "'>>='", "'>>>='", null, null, null, null, null, null, "'null'"
|
||||
};
|
||||
}
|
||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||
private static String[] makeSymbolicNames() {
|
||||
return new String[] {
|
||||
null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH",
|
||||
"CHAR", "CLASS", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "EXTENDS",
|
||||
"FINAL", "FINALLY", "FLOAT", "FOR", "IF", "IMPLEMENTS", "IMPORT", "INSTANCEOF",
|
||||
"INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", "PROTECTED",
|
||||
"PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH",
|
||||
"SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID",
|
||||
"VOLATILE", "WHILE", "SEMICOLON", "COMMA", "PERIOD", "OPEN_PARENTHESIS",
|
||||
"CLOSE_PARENTHESIS", "OPEN_BRACE", "CLOSE_BRACE", "OPEN_BRACKET", "CLOSE_BRACKET",
|
||||
"COLON", "QUESTION", "EQUALS", "PLUS", "MINUS", "ASTERISK", "SLASH",
|
||||
"PERCENT", "DOUBLE_PLUS", "DOUBLE_MINUS", "EXCLAMATION", "TILDE", "DOUBLE_EQUALS",
|
||||
"EXCLAMATION_EQUALS", "LESS_THAN", "GREATER_THAN", "LESS_THAN_OR_EQUALS",
|
||||
"GREATER_THAN_OR_EQUALS", "DOUBLE_AMPERSAND", "DOUBLE_PIPE", "AMPERSAND",
|
||||
"PIPE", "CARET", "DOUBLE_LESS_THAN", "DOUBLE_GREATER_THAN", "TRIPLE_GREATER_THAN",
|
||||
"PLUS_EQUALS", "MINUS_EQUALS", "ASTERISK_EQUALS", "SLASH_EQUALS", "AMPERSAND_EQUALS",
|
||||
"PIPE_EQUALS", "CARET_EQUALS", "PERCENT_EQUALS", "DOUBLE_LESS_THAN_EQUALS",
|
||||
"DOUBLE_GREATER_THAN_EQUALS", "TRIPLE_GREATER_THAN_EQUALS", "Identifier",
|
||||
"IntegerLiteral", "FloatingPointLiteral", "CharacterLiteral", "StringLiteral",
|
||||
"BooleanLiteral", "NullLiteral", "WHITESPACE", "LINE_COMMENT", "COMMENT"
|
||||
};
|
||||
}
|
||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||
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] = "<INVALID>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public String[] getTokenNames() {
|
||||
return tokenNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
public Vocabulary getVocabulary() {
|
||||
return VOCABULARY;
|
||||
}
|
||||
|
||||
|
||||
public Java1_4Lexer(CharStream input) {
|
||||
super(input);
|
||||
_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGrammarFileName() { return "Java1_4Lexer.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; }
|
||||
|
||||
public static final String _serializedATN =
|
||||
"\u0004\u0000g\u02ef\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
||||
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
||||
"\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
|
||||
"\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
||||
"\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+
|
||||
"\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+
|
||||
"\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+
|
||||
"\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+
|
||||
"\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+
|
||||
"\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+
|
||||
"\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+
|
||||
"!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+
|
||||
"&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+
|
||||
"+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+
|
||||
"0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u0007"+
|
||||
"5\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007"+
|
||||
":\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007"+
|
||||
"?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007"+
|
||||
"D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007"+
|
||||
"I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007"+
|
||||
"N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007"+
|
||||
"S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007"+
|
||||
"X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007"+
|
||||
"]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007"+
|
||||
"b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007"+
|
||||
"g\u0002h\u0007h\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
|
||||
"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001"+
|
||||
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
|
||||
"\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+
|
||||
"\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001"+
|
||||
"\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
|
||||
"\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+
|
||||
"\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+
|
||||
"\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b"+
|
||||
"\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+
|
||||
"\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
|
||||
"\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f"+
|
||||
"\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001"+
|
||||
"\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+
|
||||
"\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001"+
|
||||
"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001"+
|
||||
"\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+
|
||||
"\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+
|
||||
"\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001"+
|
||||
"\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+
|
||||
"\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+
|
||||
"\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+
|
||||
"\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
|
||||
"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
|
||||
"\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001"+
|
||||
"\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+
|
||||
"\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+
|
||||
"\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+
|
||||
"\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+
|
||||
"\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+
|
||||
"\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+
|
||||
"\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001"+
|
||||
"\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001"+
|
||||
"\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+
|
||||
"\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001"+
|
||||
" \u0001 \u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001"+
|
||||
"\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0001#"+
|
||||
"\u0001#\u0001#\u0001#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+
|
||||
"$\u0001%\u0001%\u0001%\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001"+
|
||||
"&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+
|
||||
"&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001("+
|
||||
"\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+
|
||||
"*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+
|
||||
"+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001,\u0001-\u0001"+
|
||||
"-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001"+
|
||||
".\u0001.\u0001.\u0001.\u0001/\u0001/\u00010\u00010\u00011\u00011\u0001"+
|
||||
"2\u00012\u00013\u00013\u00014\u00014\u00015\u00015\u00016\u00016\u0001"+
|
||||
"7\u00017\u00018\u00018\u00019\u00019\u0001:\u0001:\u0001;\u0001;\u0001"+
|
||||
"<\u0001<\u0001=\u0001=\u0001>\u0001>\u0001?\u0001?\u0001@\u0001@\u0001"+
|
||||
"@\u0001A\u0001A\u0001A\u0001B\u0001B\u0001C\u0001C\u0001D\u0001D\u0001"+
|
||||
"D\u0001E\u0001E\u0001E\u0001F\u0001F\u0001G\u0001G\u0001H\u0001H\u0001"+
|
||||
"H\u0001I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001"+
|
||||
"L\u0001L\u0001M\u0001M\u0001N\u0001N\u0001O\u0001O\u0001O\u0001P\u0001"+
|
||||
"P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001S\u0001"+
|
||||
"S\u0001S\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001V\u0001V\u0001"+
|
||||
"V\u0001W\u0001W\u0001W\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001"+
|
||||
"Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001\\\u0001\\\u0001"+
|
||||
"\\\u0001\\\u0001\\\u0001]\u0001]\u0005]\u0290\b]\n]\f]\u0293\t]\u0001"+
|
||||
"^\u0003^\u0296\b^\u0001_\u0001_\u0003_\u029a\b_\u0001`\u0004`\u029d\b"+
|
||||
"`\u000b`\f`\u029e\u0001a\u0004a\u02a2\ba\u000ba\fa\u02a3\u0001a\u0001"+
|
||||
"a\u0005a\u02a8\ba\na\fa\u02ab\ta\u0001b\u0001b\u0001b\u0001b\u0003b\u02b1"+
|
||||
"\bb\u0001b\u0001b\u0001c\u0001c\u0001c\u0001c\u0005c\u02b9\bc\nc\fc\u02bc"+
|
||||
"\tc\u0001c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001"+
|
||||
"d\u0001d\u0003d\u02c9\bd\u0001e\u0001e\u0001e\u0001e\u0001e\u0001f\u0004"+
|
||||
"f\u02d1\bf\u000bf\ff\u02d2\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0005"+
|
||||
"g\u02db\bg\ng\fg\u02de\tg\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0005"+
|
||||
"h\u02e6\bh\nh\fh\u02e9\th\u0001h\u0001h\u0001h\u0001h\u0001h\u0001\u02e7"+
|
||||
"\u0000i\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b"+
|
||||
"\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b"+
|
||||
"\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016"+
|
||||
"-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? A!C\""+
|
||||
"E#G$I%K&M\'O(Q)S*U+W,Y-[.]/_0a1c2e3g4i5k6m7o8q9s:u;w<y={>}?\u007f@\u0081"+
|
||||
"A\u0083B\u0085C\u0087D\u0089E\u008bF\u008dG\u008fH\u0091I\u0093J\u0095"+
|
||||
"K\u0097L\u0099M\u009bN\u009dO\u009fP\u00a1Q\u00a3R\u00a5S\u00a7T\u00a9"+
|
||||
"U\u00abV\u00adW\u00afX\u00b1Y\u00b3Z\u00b5[\u00b7\\\u00b9]\u00bb^\u00bd"+
|
||||
"\u0000\u00bf\u0000\u00c1_\u00c3`\u00c5a\u00c7b\u00c9c\u00cbd\u00cde\u00cf"+
|
||||
"f\u00d1g\u0001\u0000\u0007\u0294\u0000$$AZ__az\u00a2\u00a5\u00aa\u00aa"+
|
||||
"\u00b5\u00b5\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6\u00f8\u02af\u0370\u0373"+
|
||||
"\u0376\u0377\u037b\u037d\u037f\u037f\u0386\u0386\u0388\u038a\u038c\u038c"+
|
||||
"\u038e\u03a1\u03a3\u03f5\u03f7\u0481\u048a\u052f\u0531\u0556\u0560\u0588"+
|
||||
"\u058f\u058f\u05d0\u05ea\u05ef\u05f2\u060b\u060b\u0620\u063f\u0641\u064a"+
|
||||
"\u066e\u066f\u0671\u06d3\u06d5\u06d5\u06ee\u06ef\u06fa\u06fc\u06ff\u06ff"+
|
||||
"\u0710\u0710\u0712\u072f\u074d\u07a5\u07b1\u07b1\u07ca\u07ea\u07fe\u0815"+
|
||||
"\u0840\u0858\u0860\u086a\u0870\u0887\u0889\u088e\u08a0\u08c8\u0904\u0939"+
|
||||
"\u093d\u093d\u0950\u0950\u0958\u0961\u0972\u0980\u0985\u098c\u098f\u0990"+
|
||||
"\u0993\u09a8\u09aa\u09b0\u09b2\u09b2\u09b6\u09b9\u09bd\u09bd\u09ce\u09ce"+
|
||||
"\u09dc\u09dd\u09df\u09e1\u09f0\u09f3\u09fb\u09fc\u0a05\u0a0a\u0a0f\u0a10"+
|
||||
"\u0a13\u0a28\u0a2a\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59\u0a5c"+
|
||||
"\u0a5e\u0a5e\u0a72\u0a74\u0a85\u0a8d\u0a8f\u0a91\u0a93\u0aa8\u0aaa\u0ab0"+
|
||||
"\u0ab2\u0ab3\u0ab5\u0ab9\u0abd\u0abd\u0ad0\u0ad0\u0ae0\u0ae1\u0af1\u0af1"+
|
||||
"\u0af9\u0af9\u0b05\u0b0c\u0b0f\u0b10\u0b13\u0b28\u0b2a\u0b30\u0b32\u0b33"+
|
||||
"\u0b35\u0b39\u0b3d\u0b3d\u0b5c\u0b5d\u0b5f\u0b61\u0b71\u0b71\u0b83\u0b83"+
|
||||
"\u0b85\u0b8a\u0b8e\u0b90\u0b92\u0b95\u0b99\u0b9a\u0b9c\u0b9c\u0b9e\u0b9f"+
|
||||
"\u0ba3\u0ba4\u0ba8\u0baa\u0bae\u0bb9\u0bd0\u0bd0\u0bf9\u0bf9\u0c05\u0c0c"+
|
||||
"\u0c0e\u0c10\u0c12\u0c28\u0c2a\u0c39\u0c3d\u0c3d\u0c58\u0c5a\u0c5d\u0c5d"+
|
||||
"\u0c60\u0c61\u0c80\u0c80\u0c85\u0c8c\u0c8e\u0c90\u0c92\u0ca8\u0caa\u0cb3"+
|
||||
"\u0cb5\u0cb9\u0cbd\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04\u0d0c"+
|
||||
"\u0d0e\u0d10\u0d12\u0d3a\u0d3d\u0d3d\u0d4e\u0d4e\u0d54\u0d56\u0d5f\u0d61"+
|
||||
"\u0d7a\u0d7f\u0d85\u0d96\u0d9a\u0db1\u0db3\u0dbb\u0dbd\u0dbd\u0dc0\u0dc6"+
|
||||
"\u0e01\u0e30\u0e32\u0e33\u0e3f\u0e45\u0e81\u0e82\u0e84\u0e84\u0e86\u0e8a"+
|
||||
"\u0e8c\u0ea3\u0ea5\u0ea5\u0ea7\u0eb0\u0eb2\u0eb3\u0ebd\u0ebd\u0ec0\u0ec4"+
|
||||
"\u0edc\u0edf\u0f00\u0f00\u0f40\u0f47\u0f49\u0f6c\u0f88\u0f8c\u1000\u102a"+
|
||||
"\u103f\u103f\u1050\u1055\u105a\u105d\u1061\u1061\u1065\u1066\u106e\u1070"+
|
||||
"\u1075\u1081\u108e\u108e\u10a0\u10c5\u10c7\u10c7\u10cd\u10cd\u10d0\u10fa"+
|
||||
"\u10fd\u1248\u124a\u124d\u1250\u1256\u1258\u1258\u125a\u125d\u1260\u1288"+
|
||||
"\u128a\u128d\u1290\u12b0\u12b2\u12b5\u12b8\u12be\u12c0\u12c0\u12c2\u12c5"+
|
||||
"\u12c8\u12d6\u12d8\u1310\u1312\u1315\u1318\u135a\u1380\u138f\u13a0\u13f5"+
|
||||
"\u13f8\u13fd\u1401\u166c\u166f\u167f\u1681\u169a\u16a0\u16ea\u16ee\u16f8"+
|
||||
"\u1700\u1711\u171f\u1731\u1740\u1751\u1760\u176c\u176e\u1770\u1780\u17b3"+
|
||||
"\u17db\u17dc\u1820\u1842\u1844\u1878\u1880\u1884\u1887\u18a8\u18aa\u18aa"+
|
||||
"\u18b0\u18f5\u1900\u191e\u1950\u196d\u1970\u1974\u1980\u19ab\u19b0\u19c9"+
|
||||
"\u1a00\u1a16\u1a20\u1a54\u1b05\u1b33\u1b45\u1b4c\u1b83\u1ba0\u1bae\u1baf"+
|
||||
"\u1bba\u1be5\u1c00\u1c23\u1c4d\u1c4f\u1c5a\u1c77\u1c80\u1c88\u1c90\u1cba"+
|
||||
"\u1cbd\u1cbf\u1ce9\u1cec\u1cee\u1cf3\u1cf5\u1cf6\u1cfa\u1cfa\u1d00\u1d2b"+
|
||||
"\u1d6b\u1d77\u1d79\u1d9a\u1e00\u1f15\u1f18\u1f1d\u1f20\u1f45\u1f48\u1f4d"+
|
||||
"\u1f50\u1f57\u1f59\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f7d\u1f80\u1fb4"+
|
||||
"\u1fb6\u1fbc\u1fbe\u1fbe\u1fc2\u1fc4\u1fc6\u1fcc\u1fd0\u1fd3\u1fd6\u1fdb"+
|
||||
"\u1fe0\u1fec\u1ff2\u1ff4\u1ff6\u1ffc\u203f\u2040\u2054\u2054\u20a0\u20c0"+
|
||||
"\u2102\u2102\u2107\u2107\u210a\u2113\u2115\u2115\u2119\u211d\u2124\u2124"+
|
||||
"\u2126\u2126\u2128\u2128\u212a\u212d\u212f\u2139\u213c\u213f\u2145\u2149"+
|
||||
"\u214e\u214e\u2160\u2188\u2c00\u2c7b\u2c7e\u2ce4\u2ceb\u2cee\u2cf2\u2cf3"+
|
||||
"\u2d00\u2d25\u2d27\u2d27\u2d2d\u2d2d\u2d30\u2d67\u2d80\u2d96\u2da0\u2da6"+
|
||||
"\u2da8\u2dae\u2db0\u2db6\u2db8\u2dbe\u2dc0\u2dc6\u2dc8\u2dce\u2dd0\u2dd6"+
|
||||
"\u2dd8\u2dde\u3006\u3007\u3021\u3029\u3038\u303a\u303c\u303c\u3041\u3096"+
|
||||
"\u309f\u309f\u30a1\u30fa\u30ff\u30ff\u3105\u312f\u3131\u318e\u31a0\u31bf"+
|
||||
"\u31f0\u31ff\u3400\u4dbf\u4e00\u8000\ua014\u8000\ua016\u8000\ua48c\u8000"+
|
||||
"\ua4d0\u8000\ua4f7\u8000\ua500\u8000\ua60b\u8000\ua610\u8000\ua61f\u8000"+
|
||||
"\ua62a\u8000\ua62b\u8000\ua640\u8000\ua66e\u8000\ua680\u8000\ua69b\u8000"+
|
||||
"\ua6a0\u8000\ua6ef\u8000\ua722\u8000\ua76f\u8000\ua771\u8000\ua787\u8000"+
|
||||
"\ua78b\u8000\ua7ca\u8000\ua7d0\u8000\ua7d1\u8000\ua7d3\u8000\ua7d3\u8000"+
|
||||
"\ua7d5\u8000\ua7d9\u8000\ua7f5\u8000\ua7f7\u8000\ua7fa\u8000\ua801\u8000"+
|
||||
"\ua803\u8000\ua805\u8000\ua807\u8000\ua80a\u8000\ua80c\u8000\ua822\u8000"+
|
||||
"\ua838\u8000\ua838\u8000\ua840\u8000\ua873\u8000\ua882\u8000\ua8b3\u8000"+
|
||||
"\ua8f2\u8000\ua8f7\u8000\ua8fb\u8000\ua8fb\u8000\ua8fd\u8000\ua8fe\u8000"+
|
||||
"\ua90a\u8000\ua925\u8000\ua930\u8000\ua946\u8000\ua960\u8000\ua97c\u8000"+
|
||||
"\ua984\u8000\ua9b2\u8000\ua9e0\u8000\ua9e4\u8000\ua9e7\u8000\ua9ef\u8000"+
|
||||
"\ua9fa\u8000\ua9fe\u8000\uaa00\u8000\uaa28\u8000\uaa40\u8000\uaa42\u8000"+
|
||||
"\uaa44\u8000\uaa4b\u8000\uaa60\u8000\uaa6f\u8000\uaa71\u8000\uaa76\u8000"+
|
||||
"\uaa7a\u8000\uaa7a\u8000\uaa7e\u8000\uaaaf\u8000\uaab1\u8000\uaab1\u8000"+
|
||||
"\uaab5\u8000\uaab6\u8000\uaab9\u8000\uaabd\u8000\uaac0\u8000\uaac0\u8000"+
|
||||
"\uaac2\u8000\uaac2\u8000\uaadb\u8000\uaadc\u8000\uaae0\u8000\uaaea\u8000"+
|
||||
"\uaaf2\u8000\uaaf2\u8000\uab01\u8000\uab06\u8000\uab09\u8000\uab0e\u8000"+
|
||||
"\uab11\u8000\uab16\u8000\uab20\u8000\uab26\u8000\uab28\u8000\uab2e\u8000"+
|
||||
"\uab30\u8000\uab5a\u8000\uab60\u8000\uab68\u8000\uab70\u8000\uabe2\u8000"+
|
||||
"\uac00\u8000\ud7a3\u8000\ud7b0\u8000\ud7c6\u8000\ud7cb\u8000\ud7fb\u8000"+
|
||||
"\uf900\u8000\ufa6d\u8000\ufa70\u8000\ufad9\u8000\ufb00\u8000\ufb06\u8000"+
|
||||
"\ufb13\u8000\ufb17\u8000\ufb1d\u8000\ufb1d\u8000\ufb1f\u8000\ufb28\u8000"+
|
||||
"\ufb2a\u8000\ufb36\u8000\ufb38\u8000\ufb3c\u8000\ufb3e\u8000\ufb3e\u8000"+
|
||||
"\ufb40\u8000\ufb41\u8000\ufb43\u8000\ufb44\u8000\ufb46\u8000\ufbb1\u8000"+
|
||||
"\ufbd3\u8000\ufd3d\u8000\ufd50\u8000\ufd8f\u8000\ufd92\u8000\ufdc7\u8000"+
|
||||
"\ufdf0\u8000\ufdfc\u8000\ufe33\u8000\ufe34\u8000\ufe4d\u8000\ufe4f\u8000"+
|
||||
"\ufe69\u8000\ufe69\u8000\ufe70\u8000\ufe74\u8000\ufe76\u8000\ufefc\u8000"+
|
||||
"\uff04\u8000\uff04\u8000\uff21\u8000\uff3a\u8000\uff3f\u8000\uff3f\u8000"+
|
||||
"\uff41\u8000\uff5a\u8000\uff66\u8000\uff6f\u8000\uff71\u8000\uff9d\u8000"+
|
||||
"\uffa0\u8000\uffbe\u8000\uffc2\u8000\uffc7\u8000\uffca\u8000\uffcf\u8000"+
|
||||
"\uffd2\u8000\uffd7\u8000\uffda\u8000\uffdc\u8000\uffe0\u8000\uffe1\u8000"+
|
||||
"\uffe5\u8000\uffe6\u8001\u0000\u8001\u000b\u8001\r\u8001&\u8001(\u8001"+
|
||||
":\u8001<\u8001=\u8001?\u8001M\u8001P\u8001]\u8001\u0080\u8001\u00fa\u8001"+
|
||||
"\u0140\u8001\u0174\u8001\u0280\u8001\u029c\u8001\u02a0\u8001\u02d0\u8001"+
|
||||
"\u0300\u8001\u031f\u8001\u032d\u8001\u034a\u8001\u0350\u8001\u0375\u8001"+
|
||||
"\u0380\u8001\u039d\u8001\u03a0\u8001\u03c3\u8001\u03c8\u8001\u03cf\u8001"+
|
||||
"\u03d1\u8001\u03d5\u8001\u0400\u8001\u049d\u8001\u04b0\u8001\u04d3\u8001"+
|
||||
"\u04d8\u8001\u04fb\u8001\u0500\u8001\u0527\u8001\u0530\u8001\u0563\u8001"+
|
||||
"\u0570\u8001\u057a\u8001\u057c\u8001\u058a\u8001\u058c\u8001\u0592\u8001"+
|
||||
"\u0594\u8001\u0595\u8001\u0597\u8001\u05a1\u8001\u05a3\u8001\u05b1\u8001"+
|
||||
"\u05b3\u8001\u05b9\u8001\u05bb\u8001\u05bc\u8001\u0600\u8001\u0736\u8001"+
|
||||
"\u0740\u8001\u0755\u8001\u0760\u8001\u0767\u8001\u0800\u8001\u0805\u8001"+
|
||||
"\u0808\u8001\u0808\u8001\u080a\u8001\u0835\u8001\u0837\u8001\u0838\u8001"+
|
||||
"\u083c\u8001\u083c\u8001\u083f\u8001\u0855\u8001\u0860\u8001\u0876\u8001"+
|
||||
"\u0880\u8001\u089e\u8001\u08e0\u8001\u08f2\u8001\u08f4\u8001\u08f5\u8001"+
|
||||
"\u0900\u8001\u0915\u8001\u0920\u8001\u0939\u8001\u0980\u8001\u09b7\u8001"+
|
||||
"\u09be\u8001\u09bf\u8001\u0a00\u8001\u0a00\u8001\u0a10\u8001\u0a13\u8001"+
|
||||
"\u0a15\u8001\u0a17\u8001\u0a19\u8001\u0a35\u8001\u0a60\u8001\u0a7c\u8001"+
|
||||
"\u0a80\u8001\u0a9c\u8001\u0ac0\u8001\u0ac7\u8001\u0ac9\u8001\u0ae4\u8001"+
|
||||
"\u0b00\u8001\u0b35\u8001\u0b40\u8001\u0b55\u8001\u0b60\u8001\u0b72\u8001"+
|
||||
"\u0b80\u8001\u0b91\u8001\u0c00\u8001\u0c48\u8001\u0c80\u8001\u0cb2\u8001"+
|
||||
"\u0cc0\u8001\u0cf2\u8001\u0d00\u8001\u0d23\u8001\u0e80\u8001\u0ea9\u8001"+
|
||||
"\u0eb0\u8001\u0eb1\u8001\u0f00\u8001\u0f1c\u8001\u0f27\u8001\u0f27\u8001"+
|
||||
"\u0f30\u8001\u0f45\u8001\u0f70\u8001\u0f81\u8001\u0fb0\u8001\u0fc4\u8001"+
|
||||
"\u0fe0\u8001\u0ff6\u8001\u1003\u8001\u1037\u8001\u1071\u8001\u1072\u8001"+
|
||||
"\u1075\u8001\u1075\u8001\u1083\u8001\u10af\u8001\u10d0\u8001\u10e8\u8001"+
|
||||
"\u1103\u8001\u1126\u8001\u1144\u8001\u1144\u8001\u1147\u8001\u1147\u8001"+
|
||||
"\u1150\u8001\u1172\u8001\u1176\u8001\u1176\u8001\u1183\u8001\u11b2\u8001"+
|
||||
"\u11c1\u8001\u11c4\u8001\u11da\u8001\u11da\u8001\u11dc\u8001\u11dc\u8001"+
|
||||
"\u1200\u8001\u1211\u8001\u1213\u8001\u122b\u8001\u123f\u8001\u1240\u8001"+
|
||||
"\u1280\u8001\u1286\u8001\u1288\u8001\u1288\u8001\u128a\u8001\u128d\u8001"+
|
||||
"\u128f\u8001\u129d\u8001\u129f\u8001\u12a8\u8001\u12b0\u8001\u12de\u8001"+
|
||||
"\u1305\u8001\u130c\u8001\u130f\u8001\u1310\u8001\u1313\u8001\u1328\u8001"+
|
||||
"\u132a\u8001\u1330\u8001\u1332\u8001\u1333\u8001\u1335\u8001\u1339\u8001"+
|
||||
"\u133d\u8001\u133d\u8001\u1350\u8001\u1350\u8001\u135d\u8001\u1361\u8001"+
|
||||
"\u1400\u8001\u1434\u8001\u1447\u8001\u144a\u8001\u145f\u8001\u1461\u8001"+
|
||||
"\u1480\u8001\u14af\u8001\u14c4\u8001\u14c5\u8001\u14c7\u8001\u14c7\u8001"+
|
||||
"\u1580\u8001\u15ae\u8001\u15d8\u8001\u15db\u8001\u1600\u8001\u162f\u8001"+
|
||||
"\u1644\u8001\u1644\u8001\u1680\u8001\u16aa\u8001\u16b8\u8001\u16b8\u8001"+
|
||||
"\u1700\u8001\u171a\u8001\u1740\u8001\u1746\u8001\u1800\u8001\u182b\u8001"+
|
||||
"\u18a0\u8001\u18df\u8001\u18ff\u8001\u1906\u8001\u1909\u8001\u1909\u8001"+
|
||||
"\u190c\u8001\u1913\u8001\u1915\u8001\u1916\u8001\u1918\u8001\u192f\u8001"+
|
||||
"\u193f\u8001\u193f\u8001\u1941\u8001\u1941\u8001\u19a0\u8001\u19a7\u8001"+
|
||||
"\u19aa\u8001\u19d0\u8001\u19e1\u8001\u19e1\u8001\u19e3\u8001\u19e3\u8001"+
|
||||
"\u1a00\u8001\u1a00\u8001\u1a0b\u8001\u1a32\u8001\u1a3a\u8001\u1a3a\u8001"+
|
||||
"\u1a50\u8001\u1a50\u8001\u1a5c\u8001\u1a89\u8001\u1a9d\u8001\u1a9d\u8001"+
|
||||
"\u1ab0\u8001\u1af8\u8001\u1c00\u8001\u1c08\u8001\u1c0a\u8001\u1c2e\u8001"+
|
||||
"\u1c40\u8001\u1c40\u8001\u1c72\u8001\u1c8f\u8001\u1d00\u8001\u1d06\u8001"+
|
||||
"\u1d08\u8001\u1d09\u8001\u1d0b\u8001\u1d30\u8001\u1d46\u8001\u1d46\u8001"+
|
||||
"\u1d60\u8001\u1d65\u8001\u1d67\u8001\u1d68\u8001\u1d6a\u8001\u1d89\u8001"+
|
||||
"\u1d98\u8001\u1d98\u8001\u1ee0\u8001\u1ef2\u8001\u1f02\u8001\u1f02\u8001"+
|
||||
"\u1f04\u8001\u1f10\u8001\u1f12\u8001\u1f33\u8001\u1fb0\u8001\u1fb0\u8001"+
|
||||
"\u1fdd\u8001\u1fe0\u8001\u2000\u8001\u2399\u8001\u2400\u8001\u246e\u8001"+
|
||||
"\u2480\u8001\u2543\u8001\u2f90\u8001\u2ff0\u8001\u3000\u8001\u342f\u8001"+
|
||||
"\u3441\u8001\u3446\u8001\u4400\u8001\u4646\u8001\u6800\u8001\u6a38\u8001"+
|
||||
"\u6a40\u8001\u6a5e\u8001\u6a70\u8001\u6abe\u8001\u6ad0\u8001\u6aed\u8001"+
|
||||
"\u6b00\u8001\u6b2f\u8001\u6b63\u8001\u6b77\u8001\u6b7d\u8001\u6b8f\u8001"+
|
||||
"\u6e40\u8001\u6e7f\u8001\u6f00\u8001\u6f4a\u8001\u6f50\u8001\u6f50\u8001"+
|
||||
"\u7000\u8001\u87f7\u8001\u8800\u8001\u8cd5\u8001\u8d00\u8001\u8d08\u8001"+
|
||||
"\ub000\u8001\ub122\u8001\ub132\u8001\ub132\u8001\ub150\u8001\ub152\u8001"+
|
||||
"\ub155\u8001\ub155\u8001\ub164\u8001\ub167\u8001\ub170\u8001\ub2fb\u8001"+
|
||||
"\ubc00\u8001\ubc6a\u8001\ubc70\u8001\ubc7c\u8001\ubc80\u8001\ubc88\u8001"+
|
||||
"\ubc90\u8001\ubc99\u8001\ud400\u8001\ud454\u8001\ud456\u8001\ud49c\u8001"+
|
||||
"\ud49e\u8001\ud49f\u8001\ud4a2\u8001\ud4a2\u8001\ud4a5\u8001\ud4a6\u8001"+
|
||||
"\ud4a9\u8001\ud4ac\u8001\ud4ae\u8001\ud4b9\u8001\ud4bb\u8001\ud4bb\u8001"+
|
||||
"\ud4bd\u8001\ud4c3\u8001\ud4c5\u8001\ud505\u8001\ud507\u8001\ud50a\u8001"+
|
||||
"\ud50d\u8001\ud514\u8001\ud516\u8001\ud51c\u8001\ud51e\u8001\ud539\u8001"+
|
||||
"\ud53b\u8001\ud53e\u8001\ud540\u8001\ud544\u8001\ud546\u8001\ud546\u8001"+
|
||||
"\ud54a\u8001\ud550\u8001\ud552\u8001\ud6a5\u8001\ud6a8\u8001\ud6c0\u8001"+
|
||||
"\ud6c2\u8001\ud6da\u8001\ud6dc\u8001\ud6fa\u8001\ud6fc\u8001\ud714\u8001"+
|
||||
"\ud716\u8001\ud734\u8001\ud736\u8001\ud74e\u8001\ud750\u8001\ud76e\u8001"+
|
||||
"\ud770\u8001\ud788\u8001\ud78a\u8001\ud7a8\u8001\ud7aa\u8001\ud7c2\u8001"+
|
||||
"\ud7c4\u8001\ud7cb\u8001\udf00\u8001\udf1e\u8001\udf25\u8001\udf2a\u8001"+
|
||||
"\ue100\u8001\ue12c\u8001\ue14e\u8001\ue14e\u8001\ue290\u8001\ue2ad\u8001"+
|
||||
"\ue2c0\u8001\ue2eb\u8001\ue2ff\u8001\ue2ff\u8001\ue4d0\u8001\ue4ea\u8001"+
|
||||
"\ue7e0\u8001\ue7e6\u8001\ue7e8\u8001\ue7eb\u8001\ue7ed\u8001\ue7ee\u8001"+
|
||||
"\ue7f0\u8001\ue7fe\u8001\ue800\u8001\ue8c4\u8001\ue900\u8001\ue943\u8001"+
|
||||
"\uecb0\u8001\uecb0\u8001\uee00\u8001\uee03\u8001\uee05\u8001\uee1f\u8001"+
|
||||
"\uee21\u8001\uee22\u8001\uee24\u8001\uee24\u8001\uee27\u8001\uee27\u8001"+
|
||||
"\uee29\u8001\uee32\u8001\uee34\u8001\uee37\u8001\uee39\u8001\uee39\u8001"+
|
||||
"\uee3b\u8001\uee3b\u8001\uee42\u8001\uee42\u8001\uee47\u8001\uee47\u8001"+
|
||||
"\uee49\u8001\uee49\u8001\uee4b\u8001\uee4b\u8001\uee4d\u8001\uee4f\u8001"+
|
||||
"\uee51\u8001\uee52\u8001\uee54\u8001\uee54\u8001\uee57\u8001\uee57\u8001"+
|
||||
"\uee59\u8001\uee59\u8001\uee5b\u8001\uee5b\u8001\uee5d\u8001\uee5d\u8001"+
|
||||
"\uee5f\u8001\uee5f\u8001\uee61\u8001\uee62\u8001\uee64\u8001\uee64\u8001"+
|
||||
"\uee67\u8001\uee6a\u8001\uee6c\u8001\uee72\u8001\uee74\u8001\uee77\u8001"+
|
||||
"\uee79\u8001\uee7c\u8001\uee7e\u8001\uee7e\u8001\uee80\u8001\uee89\u8001"+
|
||||
"\uee8b\u8001\uee9b\u8001\ueea1\u8001\ueea3\u8001\ueea5\u8001\ueea9\u8001"+
|
||||
"\ueeab\u8001\ueebb\u8002\u0000\u8002\ua6df\u8002\ua700\u8002\ub739\u8002"+
|
||||
"\ub740\u8002\ub81d\u8002\ub820\u8002\ucea1\u8002\uceb0\u8002\uebe0\u8002"+
|
||||
"\uf800\u8002\ufa1d\u8003\u0000\u8003\u134a\u8003\u1350\u8003\u23af\u017b"+
|
||||
"\u000009\u00ad\u00ad\u0300\u036f\u0483\u0487\u0591\u05bd\u05bf\u05bf\u05c1"+
|
||||
"\u05c2\u05c4\u05c5\u05c7\u05c7\u0600\u0605\u0610\u061a\u061c\u061c\u064b"+
|
||||
"\u0669\u0670\u0670\u06d6\u06dd\u06df\u06e4\u06e7\u06e8\u06ea\u06ed\u06f0"+
|
||||
"\u06f9\u070f\u070f\u0711\u0711\u0730\u074a\u07a6\u07b0\u07c0\u07c9\u07eb"+
|
||||
"\u07f3\u07fd\u07fd\u0816\u0819\u081b\u0823\u0825\u0827\u0829\u082d\u0859"+
|
||||
"\u085b\u0890\u0891\u0898\u089f\u08ca\u0903\u093a\u093c\u093e\u094f\u0951"+
|
||||
"\u0957\u0962\u0963\u0966\u096f\u0981\u0983\u09bc\u09bc\u09be\u09c4\u09c7"+
|
||||
"\u09c8\u09cb\u09cd\u09d7\u09d7\u09e2\u09e3\u09e6\u09ef\u09fe\u09fe\u0a01"+
|
||||
"\u0a03\u0a3c\u0a3c\u0a3e\u0a42\u0a47\u0a48\u0a4b\u0a4d\u0a51\u0a51\u0a66"+
|
||||
"\u0a71\u0a75\u0a75\u0a81\u0a83\u0abc\u0abc\u0abe\u0ac5\u0ac7\u0ac9\u0acb"+
|
||||
"\u0acd\u0ae2\u0ae3\u0ae6\u0aef\u0afa\u0aff\u0b01\u0b03\u0b3c\u0b3c\u0b3e"+
|
||||
"\u0b44\u0b47\u0b48\u0b4b\u0b4d\u0b55\u0b57\u0b62\u0b63\u0b66\u0b6f\u0b82"+
|
||||
"\u0b82\u0bbe\u0bc2\u0bc6\u0bc8\u0bca\u0bcd\u0bd7\u0bd7\u0be6\u0bef\u0c00"+
|
||||
"\u0c04\u0c3c\u0c3c\u0c3e\u0c44\u0c46\u0c48\u0c4a\u0c4d\u0c55\u0c56\u0c62"+
|
||||
"\u0c63\u0c66\u0c6f\u0c81\u0c83\u0cbc\u0cbc\u0cbe\u0cc4\u0cc6\u0cc8\u0cca"+
|
||||
"\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6\u0cef\u0cf3\u0cf3\u0d00\u0d03\u0d3b"+
|
||||
"\u0d3c\u0d3e\u0d44\u0d46\u0d48\u0d4a\u0d4d\u0d57\u0d57\u0d62\u0d63\u0d66"+
|
||||
"\u0d6f\u0d81\u0d83\u0dca\u0dca\u0dcf\u0dd4\u0dd6\u0dd6\u0dd8\u0ddf\u0de6"+
|
||||
"\u0def\u0df2\u0df3\u0e31\u0e31\u0e34\u0e3a\u0e47\u0e4e\u0e50\u0e59\u0eb1"+
|
||||
"\u0eb1\u0eb4\u0ebc\u0ec8\u0ece\u0ed0\u0ed9\u0f18\u0f19\u0f20\u0f29\u0f35"+
|
||||
"\u0f35\u0f37\u0f37\u0f39\u0f39\u0f3e\u0f3f\u0f71\u0f84\u0f86\u0f87\u0f8d"+
|
||||
"\u0f97\u0f99\u0fbc\u0fc6\u0fc6\u102b\u103e\u1040\u1049\u1056\u1059\u105e"+
|
||||
"\u1060\u1062\u1064\u1067\u106d\u1071\u1074\u1082\u108d\u108f\u109d\u135d"+
|
||||
"\u135f\u1712\u1715\u1732\u1734\u1752\u1753\u1772\u1773\u17b4\u17d3\u17dd"+
|
||||
"\u17dd\u17e0\u17e9\u180b\u1819\u1885\u1886\u18a9\u18a9\u1920\u192b\u1930"+
|
||||
"\u193b\u1946\u194f\u19d0\u19d9\u1a17\u1a1b\u1a55\u1a5e\u1a60\u1a7c\u1a7f"+
|
||||
"\u1a89\u1a90\u1a99\u1ab0\u1abd\u1abf\u1ace\u1b00\u1b04\u1b34\u1b44\u1b50"+
|
||||
"\u1b59\u1b6b\u1b73\u1b80\u1b82\u1ba1\u1bad\u1bb0\u1bb9\u1be6\u1bf3\u1c24"+
|
||||
"\u1c37\u1c40\u1c49\u1c50\u1c59\u1cd0\u1cd2\u1cd4\u1ce8\u1ced\u1ced\u1cf4"+
|
||||
"\u1cf4\u1cf7\u1cf9\u1dc0\u1dff\u200b\u200f\u202a\u202e\u2060\u2064\u2066"+
|
||||
"\u206f\u20d0\u20dc\u20e1\u20e1\u20e5\u20f0\u2cef\u2cf1\u2d7f\u2d7f\u2de0"+
|
||||
"\u2dff\u302a\u302f\u3099\u309a\u8000\ua620\u8000\ua629\u8000\ua66f\u8000"+
|
||||
"\ua66f\u8000\ua674\u8000\ua67d\u8000\ua69e\u8000\ua69f\u8000\ua6f0\u8000"+
|
||||
"\ua6f1\u8000\ua802\u8000\ua802\u8000\ua806\u8000\ua806\u8000\ua80b\u8000"+
|
||||
"\ua80b\u8000\ua823\u8000\ua827\u8000\ua82c\u8000\ua82c\u8000\ua880\u8000"+
|
||||
"\ua881\u8000\ua8b4\u8000\ua8c5\u8000\ua8d0\u8000\ua8d9\u8000\ua8e0\u8000"+
|
||||
"\ua8f1\u8000\ua8ff\u8000\ua909\u8000\ua926\u8000\ua92d\u8000\ua947\u8000"+
|
||||
"\ua953\u8000\ua980\u8000\ua983\u8000\ua9b3\u8000\ua9c0\u8000\ua9d0\u8000"+
|
||||
"\ua9d9\u8000\ua9e5\u8000\ua9e5\u8000\ua9f0\u8000\ua9f9\u8000\uaa29\u8000"+
|
||||
"\uaa36\u8000\uaa43\u8000\uaa43\u8000\uaa4c\u8000\uaa4d\u8000\uaa50\u8000"+
|
||||
"\uaa59\u8000\uaa7b\u8000\uaa7d\u8000\uaab0\u8000\uaab0\u8000\uaab2\u8000"+
|
||||
"\uaab4\u8000\uaab7\u8000\uaab8\u8000\uaabe\u8000\uaabf\u8000\uaac1\u8000"+
|
||||
"\uaac1\u8000\uaaeb\u8000\uaaef\u8000\uaaf5\u8000\uaaf6\u8000\uabe3\u8000"+
|
||||
"\uabea\u8000\uabec\u8000\uabed\u8000\uabf0\u8000\uabf9\u8000\ufb1e\u8000"+
|
||||
"\ufb1e\u8000\ufe00\u8000\ufe0f\u8000\ufe20\u8000\ufe2f\u8000\ufeff\u8000"+
|
||||
"\ufeff\u8000\uff10\u8000\uff19\u8000\ufff9\u8000\ufffb\u8001\u01fd\u8001"+
|
||||
"\u01fd\u8001\u02e0\u8001\u02e0\u8001\u0376\u8001\u037a\u8001\u04a0\u8001"+
|
||||
"\u04a9\u8001\u0a01\u8001\u0a03\u8001\u0a05\u8001\u0a06\u8001\u0a0c\u8001"+
|
||||
"\u0a0f\u8001\u0a38\u8001\u0a3a\u8001\u0a3f\u8001\u0a3f\u8001\u0ae5\u8001"+
|
||||
"\u0ae6\u8001\u0d24\u8001\u0d27\u8001\u0d30\u8001\u0d39\u8001\u0eab\u8001"+
|
||||
"\u0eac\u8001\u0efd\u8001\u0eff\u8001\u0f46\u8001\u0f50\u8001\u0f82\u8001"+
|
||||
"\u0f85\u8001\u1000\u8001\u1002\u8001\u1038\u8001\u1046\u8001\u1066\u8001"+
|
||||
"\u1070\u8001\u1073\u8001\u1074\u8001\u107f\u8001\u1082\u8001\u10b0\u8001"+
|
||||
"\u10ba\u8001\u10bd\u8001\u10bd\u8001\u10c2\u8001\u10c2\u8001\u10cd\u8001"+
|
||||
"\u10cd\u8001\u10f0\u8001\u10f9\u8001\u1100\u8001\u1102\u8001\u1127\u8001"+
|
||||
"\u1134\u8001\u1136\u8001\u113f\u8001\u1145\u8001\u1146\u8001\u1173\u8001"+
|
||||
"\u1173\u8001\u1180\u8001\u1182\u8001\u11b3\u8001\u11c0\u8001\u11c9\u8001"+
|
||||
"\u11cc\u8001\u11ce\u8001\u11d9\u8001\u122c\u8001\u1237\u8001\u123e\u8001"+
|
||||
"\u123e\u8001\u1241\u8001\u1241\u8001\u12df\u8001\u12ea\u8001\u12f0\u8001"+
|
||||
"\u12f9\u8001\u1300\u8001\u1303\u8001\u133b\u8001\u133c\u8001\u133e\u8001"+
|
||||
"\u1344\u8001\u1347\u8001\u1348\u8001\u134b\u8001\u134d\u8001\u1357\u8001"+
|
||||
"\u1357\u8001\u1362\u8001\u1363\u8001\u1366\u8001\u136c\u8001\u1370\u8001"+
|
||||
"\u1374\u8001\u1435\u8001\u1446\u8001\u1450\u8001\u1459\u8001\u145e\u8001"+
|
||||
"\u145e\u8001\u14b0\u8001\u14c3\u8001\u14d0\u8001\u14d9\u8001\u15af\u8001"+
|
||||
"\u15b5\u8001\u15b8\u8001\u15c0\u8001\u15dc\u8001\u15dd\u8001\u1630\u8001"+
|
||||
"\u1640\u8001\u1650\u8001\u1659\u8001\u16ab\u8001\u16b7\u8001\u16c0\u8001"+
|
||||
"\u16c9\u8001\u171d\u8001\u172b\u8001\u1730\u8001\u1739\u8001\u182c\u8001"+
|
||||
"\u183a\u8001\u18e0\u8001\u18e9\u8001\u1930\u8001\u1935\u8001\u1937\u8001"+
|
||||
"\u1938\u8001\u193b\u8001\u193e\u8001\u1940\u8001\u1940\u8001\u1942\u8001"+
|
||||
"\u1943\u8001\u1950\u8001\u1959\u8001\u19d1\u8001\u19d7\u8001\u19da\u8001"+
|
||||
"\u19e0\u8001\u19e4\u8001\u19e4\u8001\u1a01\u8001\u1a0a\u8001\u1a33\u8001"+
|
||||
"\u1a39\u8001\u1a3b\u8001\u1a3e\u8001\u1a47\u8001\u1a47\u8001\u1a51\u8001"+
|
||||
"\u1a5b\u8001\u1a8a\u8001\u1a99\u8001\u1c2f\u8001\u1c36\u8001\u1c38\u8001"+
|
||||
"\u1c3f\u8001\u1c50\u8001\u1c59\u8001\u1c92\u8001\u1ca7\u8001\u1ca9\u8001"+
|
||||
"\u1cb6\u8001\u1d31\u8001\u1d36\u8001\u1d3a\u8001\u1d3a\u8001\u1d3c\u8001"+
|
||||
"\u1d3d\u8001\u1d3f\u8001\u1d45\u8001\u1d47\u8001\u1d47\u8001\u1d50\u8001"+
|
||||
"\u1d59\u8001\u1d8a\u8001\u1d8e\u8001\u1d90\u8001\u1d91\u8001\u1d93\u8001"+
|
||||
"\u1d97\u8001\u1da0\u8001\u1da9\u8001\u1ef3\u8001\u1ef6\u8001\u1f00\u8001"+
|
||||
"\u1f01\u8001\u1f03\u8001\u1f03\u8001\u1f34\u8001\u1f3a\u8001\u1f3e\u8001"+
|
||||
"\u1f42\u8001\u1f50\u8001\u1f59\u8001\u3430\u8001\u3440\u8001\u3447\u8001"+
|
||||
"\u3455\u8001\u6a60\u8001\u6a69\u8001\u6ac0\u8001\u6ac9\u8001\u6af0\u8001"+
|
||||
"\u6af4\u8001\u6b30\u8001\u6b36\u8001\u6b50\u8001\u6b59\u8001\u6f4f\u8001"+
|
||||
"\u6f4f\u8001\u6f51\u8001\u6f87\u8001\u6f8f\u8001\u6f92\u8001\u6fe4\u8001"+
|
||||
"\u6fe4\u8001\u6ff0\u8001\u6ff1\u8001\ubc9d\u8001\ubc9e\u8001\ubca0\u8001"+
|
||||
"\ubca3\u8001\ucf00\u8001\ucf2d\u8001\ucf30\u8001\ucf46\u8001\ud165\u8001"+
|
||||
"\ud169\u8001\ud16d\u8001\ud182\u8001\ud185\u8001\ud18b\u8001\ud1aa\u8001"+
|
||||
"\ud1ad\u8001\ud242\u8001\ud244\u8001\ud7ce\u8001\ud7ff\u8001\uda00\u8001"+
|
||||
"\uda36\u8001\uda3b\u8001\uda6c\u8001\uda75\u8001\uda75\u8001\uda84\u8001"+
|
||||
"\uda84\u8001\uda9b\u8001\uda9f\u8001\udaa1\u8001\udaaf\u8001\ue000\u8001"+
|
||||
"\ue006\u8001\ue008\u8001\ue018\u8001\ue01b\u8001\ue021\u8001\ue023\u8001"+
|
||||
"\ue024\u8001\ue026\u8001\ue02a\u8001\ue08f\u8001\ue08f\u8001\ue130\u8001"+
|
||||
"\ue136\u8001\ue140\u8001\ue149\u8001\ue2ae\u8001\ue2ae\u8001\ue2ec\u8001"+
|
||||
"\ue2f9\u8001\ue4ec\u8001\ue4f9\u8001\ue8d0\u8001\ue8d6\u8001\ue944\u8001"+
|
||||
"\ue94a\u8001\ue950\u8001\ue959\u8001\ufbf0\u8001\ufbf9\u800e\u0001\u800e"+
|
||||
"\u0001\u800e \u800e\u007f\u800e\u0100\u800e\u01ef\u0001\u000009\u0002"+
|
||||
"\u0000\'\'\\\\\u0002\u0000\"\"\\\\\u0003\u0000\t\n\f\r \u0002\u0000\n"+
|
||||
"\n\r\r\u02f8\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000"+
|
||||
"\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000"+
|
||||
"\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000"+
|
||||
"\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000"+
|
||||
"\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000"+
|
||||
"\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%"+
|
||||
"\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000)\u0001"+
|
||||
"\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001\u0000\u0000"+
|
||||
"\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000\u0000\u0000"+
|
||||
"3\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u00007\u0001"+
|
||||
"\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001\u0000\u0000"+
|
||||
"\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000\u0000\u0000"+
|
||||
"A\u0001\u0000\u0000\u0000\u0000C\u0001\u0000\u0000\u0000\u0000E\u0001"+
|
||||
"\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001\u0000\u0000"+
|
||||
"\u0000\u0000K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0000"+
|
||||
"O\u0001\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000\u0000S\u0001"+
|
||||
"\u0000\u0000\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W\u0001\u0000\u0000"+
|
||||
"\u0000\u0000Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000\u0000\u0000\u0000"+
|
||||
"]\u0001\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000\u0000a\u0001"+
|
||||
"\u0000\u0000\u0000\u0000c\u0001\u0000\u0000\u0000\u0000e\u0001\u0000\u0000"+
|
||||
"\u0000\u0000g\u0001\u0000\u0000\u0000\u0000i\u0001\u0000\u0000\u0000\u0000"+
|
||||
"k\u0001\u0000\u0000\u0000\u0000m\u0001\u0000\u0000\u0000\u0000o\u0001"+
|
||||
"\u0000\u0000\u0000\u0000q\u0001\u0000\u0000\u0000\u0000s\u0001\u0000\u0000"+
|
||||
"\u0000\u0000u\u0001\u0000\u0000\u0000\u0000w\u0001\u0000\u0000\u0000\u0000"+
|
||||
"y\u0001\u0000\u0000\u0000\u0000{\u0001\u0000\u0000\u0000\u0000}\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u007f\u0001\u0000\u0000\u0000\u0000\u0081\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u0083\u0001\u0000\u0000\u0000\u0000\u0085\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u0087\u0001\u0000\u0000\u0000\u0000\u0089\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u008b\u0001\u0000\u0000\u0000\u0000\u008d\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u008f\u0001\u0000\u0000\u0000\u0000\u0091\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u0093\u0001\u0000\u0000\u0000\u0000\u0095\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u0097\u0001\u0000\u0000\u0000\u0000\u0099\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u009b\u0001\u0000\u0000\u0000\u0000\u009d\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u009f\u0001\u0000\u0000\u0000\u0000\u00a1\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00a3\u0001\u0000\u0000\u0000\u0000\u00a5\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00a7\u0001\u0000\u0000\u0000\u0000\u00a9\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00ab\u0001\u0000\u0000\u0000\u0000\u00ad\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00af\u0001\u0000\u0000\u0000\u0000\u00b1\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00b3\u0001\u0000\u0000\u0000\u0000\u00b5\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00b7\u0001\u0000\u0000\u0000\u0000\u00b9\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00bb\u0001\u0000\u0000\u0000\u0000\u00c1\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00c3\u0001\u0000\u0000\u0000\u0000\u00c5\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00c7\u0001\u0000\u0000\u0000\u0000\u00c9\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00cb\u0001\u0000\u0000\u0000\u0000\u00cd\u0001"+
|
||||
"\u0000\u0000\u0000\u0000\u00cf\u0001\u0000\u0000\u0000\u0000\u00d1\u0001"+
|
||||
"\u0000\u0000\u0000\u0001\u00d3\u0001\u0000\u0000\u0000\u0003\u00dc\u0001"+
|
||||
"\u0000\u0000\u0000\u0005\u00e3\u0001\u0000\u0000\u0000\u0007\u00eb\u0001"+
|
||||
"\u0000\u0000\u0000\t\u00f1\u0001\u0000\u0000\u0000\u000b\u00f6\u0001\u0000"+
|
||||
"\u0000\u0000\r\u00fb\u0001\u0000\u0000\u0000\u000f\u0101\u0001\u0000\u0000"+
|
||||
"\u0000\u0011\u0106\u0001\u0000\u0000\u0000\u0013\u010c\u0001\u0000\u0000"+
|
||||
"\u0000\u0015\u0115\u0001\u0000\u0000\u0000\u0017\u011d\u0001\u0000\u0000"+
|
||||
"\u0000\u0019\u0120\u0001\u0000\u0000\u0000\u001b\u0127\u0001\u0000\u0000"+
|
||||
"\u0000\u001d\u012c\u0001\u0000\u0000\u0000\u001f\u0134\u0001\u0000\u0000"+
|
||||
"\u0000!\u013a\u0001\u0000\u0000\u0000#\u0142\u0001\u0000\u0000\u0000%"+
|
||||
"\u0148\u0001\u0000\u0000\u0000\'\u014c\u0001\u0000\u0000\u0000)\u014f"+
|
||||
"\u0001\u0000\u0000\u0000+\u015a\u0001\u0000\u0000\u0000-\u0161\u0001\u0000"+
|
||||
"\u0000\u0000/\u016c\u0001\u0000\u0000\u00001\u0170\u0001\u0000\u0000\u0000"+
|
||||
"3\u017a\u0001\u0000\u0000\u00005\u017f\u0001\u0000\u0000\u00007\u0186"+
|
||||
"\u0001\u0000\u0000\u00009\u018a\u0001\u0000\u0000\u0000;\u0192\u0001\u0000"+
|
||||
"\u0000\u0000=\u019a\u0001\u0000\u0000\u0000?\u01a4\u0001\u0000\u0000\u0000"+
|
||||
"A\u01ab\u0001\u0000\u0000\u0000C\u01b2\u0001\u0000\u0000\u0000E\u01b8"+
|
||||
"\u0001\u0000\u0000\u0000G\u01bf\u0001\u0000\u0000\u0000I\u01c8\u0001\u0000"+
|
||||
"\u0000\u0000K\u01ce\u0001\u0000\u0000\u0000M\u01d5\u0001\u0000\u0000\u0000"+
|
||||
"O\u01e2\u0001\u0000\u0000\u0000Q\u01e7\u0001\u0000\u0000\u0000S\u01ed"+
|
||||
"\u0001\u0000\u0000\u0000U\u01f4\u0001\u0000\u0000\u0000W\u01fe\u0001\u0000"+
|
||||
"\u0000\u0000Y\u0202\u0001\u0000\u0000\u0000[\u0207\u0001\u0000\u0000\u0000"+
|
||||
"]\u0210\u0001\u0000\u0000\u0000_\u0216\u0001\u0000\u0000\u0000a\u0218"+
|
||||
"\u0001\u0000\u0000\u0000c\u021a\u0001\u0000\u0000\u0000e\u021c\u0001\u0000"+
|
||||
"\u0000\u0000g\u021e\u0001\u0000\u0000\u0000i\u0220\u0001\u0000\u0000\u0000"+
|
||||
"k\u0222\u0001\u0000\u0000\u0000m\u0224\u0001\u0000\u0000\u0000o\u0226"+
|
||||
"\u0001\u0000\u0000\u0000q\u0228\u0001\u0000\u0000\u0000s\u022a\u0001\u0000"+
|
||||
"\u0000\u0000u\u022c\u0001\u0000\u0000\u0000w\u022e\u0001\u0000\u0000\u0000"+
|
||||
"y\u0230\u0001\u0000\u0000\u0000{\u0232\u0001\u0000\u0000\u0000}\u0234"+
|
||||
"\u0001\u0000\u0000\u0000\u007f\u0236\u0001\u0000\u0000\u0000\u0081\u0238"+
|
||||
"\u0001\u0000\u0000\u0000\u0083\u023b\u0001\u0000\u0000\u0000\u0085\u023e"+
|
||||
"\u0001\u0000\u0000\u0000\u0087\u0240\u0001\u0000\u0000\u0000\u0089\u0242"+
|
||||
"\u0001\u0000\u0000\u0000\u008b\u0245\u0001\u0000\u0000\u0000\u008d\u0248"+
|
||||
"\u0001\u0000\u0000\u0000\u008f\u024a\u0001\u0000\u0000\u0000\u0091\u024c"+
|
||||
"\u0001\u0000\u0000\u0000\u0093\u024f\u0001\u0000\u0000\u0000\u0095\u0252"+
|
||||
"\u0001\u0000\u0000\u0000\u0097\u0255\u0001\u0000\u0000\u0000\u0099\u0258"+
|
||||
"\u0001\u0000\u0000\u0000\u009b\u025a\u0001\u0000\u0000\u0000\u009d\u025c"+
|
||||
"\u0001\u0000\u0000\u0000\u009f\u025e\u0001\u0000\u0000\u0000\u00a1\u0261"+
|
||||
"\u0001\u0000\u0000\u0000\u00a3\u0264\u0001\u0000\u0000\u0000\u00a5\u0268"+
|
||||
"\u0001\u0000\u0000\u0000\u00a7\u026b\u0001\u0000\u0000\u0000\u00a9\u026e"+
|
||||
"\u0001\u0000\u0000\u0000\u00ab\u0271\u0001\u0000\u0000\u0000\u00ad\u0274"+
|
||||
"\u0001\u0000\u0000\u0000\u00af\u0277\u0001\u0000\u0000\u0000\u00b1\u027a"+
|
||||
"\u0001\u0000\u0000\u0000\u00b3\u027d\u0001\u0000\u0000\u0000\u00b5\u0280"+
|
||||
"\u0001\u0000\u0000\u0000\u00b7\u0284\u0001\u0000\u0000\u0000\u00b9\u0288"+
|
||||
"\u0001\u0000\u0000\u0000\u00bb\u028d\u0001\u0000\u0000\u0000\u00bd\u0295"+
|
||||
"\u0001\u0000\u0000\u0000\u00bf\u0299\u0001\u0000\u0000\u0000\u00c1\u029c"+
|
||||
"\u0001\u0000\u0000\u0000\u00c3\u02a1\u0001\u0000\u0000\u0000\u00c5\u02ac"+
|
||||
"\u0001\u0000\u0000\u0000\u00c7\u02b4\u0001\u0000\u0000\u0000\u00c9\u02c8"+
|
||||
"\u0001\u0000\u0000\u0000\u00cb\u02ca\u0001\u0000\u0000\u0000\u00cd\u02d0"+
|
||||
"\u0001\u0000\u0000\u0000\u00cf\u02d6\u0001\u0000\u0000\u0000\u00d1\u02e1"+
|
||||
"\u0001\u0000\u0000\u0000\u00d3\u00d4\u0005a\u0000\u0000\u00d4\u00d5\u0005"+
|
||||
"b\u0000\u0000\u00d5\u00d6\u0005s\u0000\u0000\u00d6\u00d7\u0005t\u0000"+
|
||||
"\u0000\u00d7\u00d8\u0005r\u0000\u0000\u00d8\u00d9\u0005a\u0000\u0000\u00d9"+
|
||||
"\u00da\u0005c\u0000\u0000\u00da\u00db\u0005t\u0000\u0000\u00db\u0002\u0001"+
|
||||
"\u0000\u0000\u0000\u00dc\u00dd\u0005a\u0000\u0000\u00dd\u00de\u0005s\u0000"+
|
||||
"\u0000\u00de\u00df\u0005s\u0000\u0000\u00df\u00e0\u0005e\u0000\u0000\u00e0"+
|
||||
"\u00e1\u0005r\u0000\u0000\u00e1\u00e2\u0005t\u0000\u0000\u00e2\u0004\u0001"+
|
||||
"\u0000\u0000\u0000\u00e3\u00e4\u0005b\u0000\u0000\u00e4\u00e5\u0005o\u0000"+
|
||||
"\u0000\u00e5\u00e6\u0005o\u0000\u0000\u00e6\u00e7\u0005l\u0000\u0000\u00e7"+
|
||||
"\u00e8\u0005e\u0000\u0000\u00e8\u00e9\u0005a\u0000\u0000\u00e9\u00ea\u0005"+
|
||||
"n\u0000\u0000\u00ea\u0006\u0001\u0000\u0000\u0000\u00eb\u00ec\u0005b\u0000"+
|
||||
"\u0000\u00ec\u00ed\u0005r\u0000\u0000\u00ed\u00ee\u0005e\u0000\u0000\u00ee"+
|
||||
"\u00ef\u0005a\u0000\u0000\u00ef\u00f0\u0005k\u0000\u0000\u00f0\b\u0001"+
|
||||
"\u0000\u0000\u0000\u00f1\u00f2\u0005b\u0000\u0000\u00f2\u00f3\u0005y\u0000"+
|
||||
"\u0000\u00f3\u00f4\u0005t\u0000\u0000\u00f4\u00f5\u0005e\u0000\u0000\u00f5"+
|
||||
"\n\u0001\u0000\u0000\u0000\u00f6\u00f7\u0005c\u0000\u0000\u00f7\u00f8"+
|
||||
"\u0005a\u0000\u0000\u00f8\u00f9\u0005s\u0000\u0000\u00f9\u00fa\u0005e"+
|
||||
"\u0000\u0000\u00fa\f\u0001\u0000\u0000\u0000\u00fb\u00fc\u0005c\u0000"+
|
||||
"\u0000\u00fc\u00fd\u0005a\u0000\u0000\u00fd\u00fe\u0005t\u0000\u0000\u00fe"+
|
||||
"\u00ff\u0005c\u0000\u0000\u00ff\u0100\u0005h\u0000\u0000\u0100\u000e\u0001"+
|
||||
"\u0000\u0000\u0000\u0101\u0102\u0005c\u0000\u0000\u0102\u0103\u0005h\u0000"+
|
||||
"\u0000\u0103\u0104\u0005a\u0000\u0000\u0104\u0105\u0005r\u0000\u0000\u0105"+
|
||||
"\u0010\u0001\u0000\u0000\u0000\u0106\u0107\u0005c\u0000\u0000\u0107\u0108"+
|
||||
"\u0005l\u0000\u0000\u0108\u0109\u0005a\u0000\u0000\u0109\u010a\u0005s"+
|
||||
"\u0000\u0000\u010a\u010b\u0005s\u0000\u0000\u010b\u0012\u0001\u0000\u0000"+
|
||||
"\u0000\u010c\u010d\u0005c\u0000\u0000\u010d\u010e\u0005o\u0000\u0000\u010e"+
|
||||
"\u010f\u0005n\u0000\u0000\u010f\u0110\u0005t\u0000\u0000\u0110\u0111\u0005"+
|
||||
"i\u0000\u0000\u0111\u0112\u0005n\u0000\u0000\u0112\u0113\u0005u\u0000"+
|
||||
"\u0000\u0113\u0114\u0005e\u0000\u0000\u0114\u0014\u0001\u0000\u0000\u0000"+
|
||||
"\u0115\u0116\u0005d\u0000\u0000\u0116\u0117\u0005e\u0000\u0000\u0117\u0118"+
|
||||
"\u0005f\u0000\u0000\u0118\u0119\u0005a\u0000\u0000\u0119\u011a\u0005u"+
|
||||
"\u0000\u0000\u011a\u011b\u0005l\u0000\u0000\u011b\u011c\u0005t\u0000\u0000"+
|
||||
"\u011c\u0016\u0001\u0000\u0000\u0000\u011d\u011e\u0005d\u0000\u0000\u011e"+
|
||||
"\u011f\u0005o\u0000\u0000\u011f\u0018\u0001\u0000\u0000\u0000\u0120\u0121"+
|
||||
"\u0005d\u0000\u0000\u0121\u0122\u0005o\u0000\u0000\u0122\u0123\u0005u"+
|
||||
"\u0000\u0000\u0123\u0124\u0005b\u0000\u0000\u0124\u0125\u0005l\u0000\u0000"+
|
||||
"\u0125\u0126\u0005e\u0000\u0000\u0126\u001a\u0001\u0000\u0000\u0000\u0127"+
|
||||
"\u0128\u0005e\u0000\u0000\u0128\u0129\u0005l\u0000\u0000\u0129\u012a\u0005"+
|
||||
"s\u0000\u0000\u012a\u012b\u0005e\u0000\u0000\u012b\u001c\u0001\u0000\u0000"+
|
||||
"\u0000\u012c\u012d\u0005e\u0000\u0000\u012d\u012e\u0005x\u0000\u0000\u012e"+
|
||||
"\u012f\u0005t\u0000\u0000\u012f\u0130\u0005e\u0000\u0000\u0130\u0131\u0005"+
|
||||
"n\u0000\u0000\u0131\u0132\u0005d\u0000\u0000\u0132\u0133\u0005s\u0000"+
|
||||
"\u0000\u0133\u001e\u0001\u0000\u0000\u0000\u0134\u0135\u0005f\u0000\u0000"+
|
||||
"\u0135\u0136\u0005i\u0000\u0000\u0136\u0137\u0005n\u0000\u0000\u0137\u0138"+
|
||||
"\u0005a\u0000\u0000\u0138\u0139\u0005l\u0000\u0000\u0139 \u0001\u0000"+
|
||||
"\u0000\u0000\u013a\u013b\u0005f\u0000\u0000\u013b\u013c\u0005i\u0000\u0000"+
|
||||
"\u013c\u013d\u0005n\u0000\u0000\u013d\u013e\u0005a\u0000\u0000\u013e\u013f"+
|
||||
"\u0005l\u0000\u0000\u013f\u0140\u0005l\u0000\u0000\u0140\u0141\u0005y"+
|
||||
"\u0000\u0000\u0141\"\u0001\u0000\u0000\u0000\u0142\u0143\u0005f\u0000"+
|
||||
"\u0000\u0143\u0144\u0005l\u0000\u0000\u0144\u0145\u0005o\u0000\u0000\u0145"+
|
||||
"\u0146\u0005a\u0000\u0000\u0146\u0147\u0005t\u0000\u0000\u0147$\u0001"+
|
||||
"\u0000\u0000\u0000\u0148\u0149\u0005f\u0000\u0000\u0149\u014a\u0005o\u0000"+
|
||||
"\u0000\u014a\u014b\u0005r\u0000\u0000\u014b&\u0001\u0000\u0000\u0000\u014c"+
|
||||
"\u014d\u0005i\u0000\u0000\u014d\u014e\u0005f\u0000\u0000\u014e(\u0001"+
|
||||
"\u0000\u0000\u0000\u014f\u0150\u0005i\u0000\u0000\u0150\u0151\u0005m\u0000"+
|
||||
"\u0000\u0151\u0152\u0005p\u0000\u0000\u0152\u0153\u0005l\u0000\u0000\u0153"+
|
||||
"\u0154\u0005e\u0000\u0000\u0154\u0155\u0005m\u0000\u0000\u0155\u0156\u0005"+
|
||||
"e\u0000\u0000\u0156\u0157\u0005n\u0000\u0000\u0157\u0158\u0005t\u0000"+
|
||||
"\u0000\u0158\u0159\u0005s\u0000\u0000\u0159*\u0001\u0000\u0000\u0000\u015a"+
|
||||
"\u015b\u0005i\u0000\u0000\u015b\u015c\u0005m\u0000\u0000\u015c\u015d\u0005"+
|
||||
"p\u0000\u0000\u015d\u015e\u0005o\u0000\u0000\u015e\u015f\u0005r\u0000"+
|
||||
"\u0000\u015f\u0160\u0005t\u0000\u0000\u0160,\u0001\u0000\u0000\u0000\u0161"+
|
||||
"\u0162\u0005i\u0000\u0000\u0162\u0163\u0005n\u0000\u0000\u0163\u0164\u0005"+
|
||||
"s\u0000\u0000\u0164\u0165\u0005t\u0000\u0000\u0165\u0166\u0005a\u0000"+
|
||||
"\u0000\u0166\u0167\u0005n\u0000\u0000\u0167\u0168\u0005c\u0000\u0000\u0168"+
|
||||
"\u0169\u0005e\u0000\u0000\u0169\u016a\u0005o\u0000\u0000\u016a\u016b\u0005"+
|
||||
"f\u0000\u0000\u016b.\u0001\u0000\u0000\u0000\u016c\u016d\u0005i\u0000"+
|
||||
"\u0000\u016d\u016e\u0005n\u0000\u0000\u016e\u016f\u0005t\u0000\u0000\u016f"+
|
||||
"0\u0001\u0000\u0000\u0000\u0170\u0171\u0005i\u0000\u0000\u0171\u0172\u0005"+
|
||||
"n\u0000\u0000\u0172\u0173\u0005t\u0000\u0000\u0173\u0174\u0005e\u0000"+
|
||||
"\u0000\u0174\u0175\u0005r\u0000\u0000\u0175\u0176\u0005f\u0000\u0000\u0176"+
|
||||
"\u0177\u0005a\u0000\u0000\u0177\u0178\u0005c\u0000\u0000\u0178\u0179\u0005"+
|
||||
"e\u0000\u0000\u01792\u0001\u0000\u0000\u0000\u017a\u017b\u0005l\u0000"+
|
||||
"\u0000\u017b\u017c\u0005o\u0000\u0000\u017c\u017d\u0005n\u0000\u0000\u017d"+
|
||||
"\u017e\u0005g\u0000\u0000\u017e4\u0001\u0000\u0000\u0000\u017f\u0180\u0005"+
|
||||
"n\u0000\u0000\u0180\u0181\u0005a\u0000\u0000\u0181\u0182\u0005t\u0000"+
|
||||
"\u0000\u0182\u0183\u0005i\u0000\u0000\u0183\u0184\u0005v\u0000\u0000\u0184"+
|
||||
"\u0185\u0005e\u0000\u0000\u01856\u0001\u0000\u0000\u0000\u0186\u0187\u0005"+
|
||||
"n\u0000\u0000\u0187\u0188\u0005e\u0000\u0000\u0188\u0189\u0005w\u0000"+
|
||||
"\u0000\u01898\u0001\u0000\u0000\u0000\u018a\u018b\u0005p\u0000\u0000\u018b"+
|
||||
"\u018c\u0005a\u0000\u0000\u018c\u018d\u0005c\u0000\u0000\u018d\u018e\u0005"+
|
||||
"k\u0000\u0000\u018e\u018f\u0005a\u0000\u0000\u018f\u0190\u0005g\u0000"+
|
||||
"\u0000\u0190\u0191\u0005e\u0000\u0000\u0191:\u0001\u0000\u0000\u0000\u0192"+
|
||||
"\u0193\u0005p\u0000\u0000\u0193\u0194\u0005r\u0000\u0000\u0194\u0195\u0005"+
|
||||
"i\u0000\u0000\u0195\u0196\u0005v\u0000\u0000\u0196\u0197\u0005a\u0000"+
|
||||
"\u0000\u0197\u0198\u0005t\u0000\u0000\u0198\u0199\u0005e\u0000\u0000\u0199"+
|
||||
"<\u0001\u0000\u0000\u0000\u019a\u019b\u0005p\u0000\u0000\u019b\u019c\u0005"+
|
||||
"r\u0000\u0000\u019c\u019d\u0005o\u0000\u0000\u019d\u019e\u0005t\u0000"+
|
||||
"\u0000\u019e\u019f\u0005e\u0000\u0000\u019f\u01a0\u0005c\u0000\u0000\u01a0"+
|
||||
"\u01a1\u0005t\u0000\u0000\u01a1\u01a2\u0005e\u0000\u0000\u01a2\u01a3\u0005"+
|
||||
"d\u0000\u0000\u01a3>\u0001\u0000\u0000\u0000\u01a4\u01a5\u0005p\u0000"+
|
||||
"\u0000\u01a5\u01a6\u0005u\u0000\u0000\u01a6\u01a7\u0005b\u0000\u0000\u01a7"+
|
||||
"\u01a8\u0005l\u0000\u0000\u01a8\u01a9\u0005i\u0000\u0000\u01a9\u01aa\u0005"+
|
||||
"c\u0000\u0000\u01aa@\u0001\u0000\u0000\u0000\u01ab\u01ac\u0005r\u0000"+
|
||||
"\u0000\u01ac\u01ad\u0005e\u0000\u0000\u01ad\u01ae\u0005t\u0000\u0000\u01ae"+
|
||||
"\u01af\u0005u\u0000\u0000\u01af\u01b0\u0005r\u0000\u0000\u01b0\u01b1\u0005"+
|
||||
"n\u0000\u0000\u01b1B\u0001\u0000\u0000\u0000\u01b2\u01b3\u0005s\u0000"+
|
||||
"\u0000\u01b3\u01b4\u0005h\u0000\u0000\u01b4\u01b5\u0005o\u0000\u0000\u01b5"+
|
||||
"\u01b6\u0005r\u0000\u0000\u01b6\u01b7\u0005t\u0000\u0000\u01b7D\u0001"+
|
||||
"\u0000\u0000\u0000\u01b8\u01b9\u0005s\u0000\u0000\u01b9\u01ba\u0005t\u0000"+
|
||||
"\u0000\u01ba\u01bb\u0005a\u0000\u0000\u01bb\u01bc\u0005t\u0000\u0000\u01bc"+
|
||||
"\u01bd\u0005i\u0000\u0000\u01bd\u01be\u0005c\u0000\u0000\u01beF\u0001"+
|
||||
"\u0000\u0000\u0000\u01bf\u01c0\u0005s\u0000\u0000\u01c0\u01c1\u0005t\u0000"+
|
||||
"\u0000\u01c1\u01c2\u0005r\u0000\u0000\u01c2\u01c3\u0005i\u0000\u0000\u01c3"+
|
||||
"\u01c4\u0005c\u0000\u0000\u01c4\u01c5\u0005t\u0000\u0000\u01c5\u01c6\u0005"+
|
||||
"f\u0000\u0000\u01c6\u01c7\u0005p\u0000\u0000\u01c7H\u0001\u0000\u0000"+
|
||||
"\u0000\u01c8\u01c9\u0005s\u0000\u0000\u01c9\u01ca\u0005u\u0000\u0000\u01ca"+
|
||||
"\u01cb\u0005p\u0000\u0000\u01cb\u01cc\u0005e\u0000\u0000\u01cc\u01cd\u0005"+
|
||||
"r\u0000\u0000\u01cdJ\u0001\u0000\u0000\u0000\u01ce\u01cf\u0005s\u0000"+
|
||||
"\u0000\u01cf\u01d0\u0005w\u0000\u0000\u01d0\u01d1\u0005i\u0000\u0000\u01d1"+
|
||||
"\u01d2\u0005t\u0000\u0000\u01d2\u01d3\u0005c\u0000\u0000\u01d3\u01d4\u0005"+
|
||||
"h\u0000\u0000\u01d4L\u0001\u0000\u0000\u0000\u01d5\u01d6\u0005s\u0000"+
|
||||
"\u0000\u01d6\u01d7\u0005y\u0000\u0000\u01d7\u01d8\u0005n\u0000\u0000\u01d8"+
|
||||
"\u01d9\u0005c\u0000\u0000\u01d9\u01da\u0005h\u0000\u0000\u01da\u01db\u0005"+
|
||||
"r\u0000\u0000\u01db\u01dc\u0005o\u0000\u0000\u01dc\u01dd\u0005n\u0000"+
|
||||
"\u0000\u01dd\u01de\u0005i\u0000\u0000\u01de\u01df\u0005z\u0000\u0000\u01df"+
|
||||
"\u01e0\u0005e\u0000\u0000\u01e0\u01e1\u0005d\u0000\u0000\u01e1N\u0001"+
|
||||
"\u0000\u0000\u0000\u01e2\u01e3\u0005t\u0000\u0000\u01e3\u01e4\u0005h\u0000"+
|
||||
"\u0000\u01e4\u01e5\u0005i\u0000\u0000\u01e5\u01e6\u0005s\u0000\u0000\u01e6"+
|
||||
"P\u0001\u0000\u0000\u0000\u01e7\u01e8\u0005t\u0000\u0000\u01e8\u01e9\u0005"+
|
||||
"h\u0000\u0000\u01e9\u01ea\u0005r\u0000\u0000\u01ea\u01eb\u0005o\u0000"+
|
||||
"\u0000\u01eb\u01ec\u0005w\u0000\u0000\u01ecR\u0001\u0000\u0000\u0000\u01ed"+
|
||||
"\u01ee\u0005t\u0000\u0000\u01ee\u01ef\u0005h\u0000\u0000\u01ef\u01f0\u0005"+
|
||||
"r\u0000\u0000\u01f0\u01f1\u0005o\u0000\u0000\u01f1\u01f2\u0005w\u0000"+
|
||||
"\u0000\u01f2\u01f3\u0005s\u0000\u0000\u01f3T\u0001\u0000\u0000\u0000\u01f4"+
|
||||
"\u01f5\u0005t\u0000\u0000\u01f5\u01f6\u0005r\u0000\u0000\u01f6\u01f7\u0005"+
|
||||
"a\u0000\u0000\u01f7\u01f8\u0005n\u0000\u0000\u01f8\u01f9\u0005s\u0000"+
|
||||
"\u0000\u01f9\u01fa\u0005i\u0000\u0000\u01fa\u01fb\u0005e\u0000\u0000\u01fb"+
|
||||
"\u01fc\u0005n\u0000\u0000\u01fc\u01fd\u0005t\u0000\u0000\u01fdV\u0001"+
|
||||
"\u0000\u0000\u0000\u01fe\u01ff\u0005t\u0000\u0000\u01ff\u0200\u0005r\u0000"+
|
||||
"\u0000\u0200\u0201\u0005y\u0000\u0000\u0201X\u0001\u0000\u0000\u0000\u0202"+
|
||||
"\u0203\u0005v\u0000\u0000\u0203\u0204\u0005o\u0000\u0000\u0204\u0205\u0005"+
|
||||
"i\u0000\u0000\u0205\u0206\u0005d\u0000\u0000\u0206Z\u0001\u0000\u0000"+
|
||||
"\u0000\u0207\u0208\u0005v\u0000\u0000\u0208\u0209\u0005o\u0000\u0000\u0209"+
|
||||
"\u020a\u0005l\u0000\u0000\u020a\u020b\u0005a\u0000\u0000\u020b\u020c\u0005"+
|
||||
"t\u0000\u0000\u020c\u020d\u0005i\u0000\u0000\u020d\u020e\u0005l\u0000"+
|
||||
"\u0000\u020e\u020f\u0005e\u0000\u0000\u020f\\\u0001\u0000\u0000\u0000"+
|
||||
"\u0210\u0211\u0005w\u0000\u0000\u0211\u0212\u0005h\u0000\u0000\u0212\u0213"+
|
||||
"\u0005i\u0000\u0000\u0213\u0214\u0005l\u0000\u0000\u0214\u0215\u0005e"+
|
||||
"\u0000\u0000\u0215^\u0001\u0000\u0000\u0000\u0216\u0217\u0005;\u0000\u0000"+
|
||||
"\u0217`\u0001\u0000\u0000\u0000\u0218\u0219\u0005,\u0000\u0000\u0219b"+
|
||||
"\u0001\u0000\u0000\u0000\u021a\u021b\u0005.\u0000\u0000\u021bd\u0001\u0000"+
|
||||
"\u0000\u0000\u021c\u021d\u0005(\u0000\u0000\u021df\u0001\u0000\u0000\u0000"+
|
||||
"\u021e\u021f\u0005)\u0000\u0000\u021fh\u0001\u0000\u0000\u0000\u0220\u0221"+
|
||||
"\u0005{\u0000\u0000\u0221j\u0001\u0000\u0000\u0000\u0222\u0223\u0005}"+
|
||||
"\u0000\u0000\u0223l\u0001\u0000\u0000\u0000\u0224\u0225\u0005[\u0000\u0000"+
|
||||
"\u0225n\u0001\u0000\u0000\u0000\u0226\u0227\u0005]\u0000\u0000\u0227p"+
|
||||
"\u0001\u0000\u0000\u0000\u0228\u0229\u0005:\u0000\u0000\u0229r\u0001\u0000"+
|
||||
"\u0000\u0000\u022a\u022b\u0005?\u0000\u0000\u022bt\u0001\u0000\u0000\u0000"+
|
||||
"\u022c\u022d\u0005=\u0000\u0000\u022dv\u0001\u0000\u0000\u0000\u022e\u022f"+
|
||||
"\u0005+\u0000\u0000\u022fx\u0001\u0000\u0000\u0000\u0230\u0231\u0005-"+
|
||||
"\u0000\u0000\u0231z\u0001\u0000\u0000\u0000\u0232\u0233\u0005*\u0000\u0000"+
|
||||
"\u0233|\u0001\u0000\u0000\u0000\u0234\u0235\u0005/\u0000\u0000\u0235~"+
|
||||
"\u0001\u0000\u0000\u0000\u0236\u0237\u0005%\u0000\u0000\u0237\u0080\u0001"+
|
||||
"\u0000\u0000\u0000\u0238\u0239\u0005+\u0000\u0000\u0239\u023a\u0005+\u0000"+
|
||||
"\u0000\u023a\u0082\u0001\u0000\u0000\u0000\u023b\u023c\u0005-\u0000\u0000"+
|
||||
"\u023c\u023d\u0005-\u0000\u0000\u023d\u0084\u0001\u0000\u0000\u0000\u023e"+
|
||||
"\u023f\u0005!\u0000\u0000\u023f\u0086\u0001\u0000\u0000\u0000\u0240\u0241"+
|
||||
"\u0005~\u0000\u0000\u0241\u0088\u0001\u0000\u0000\u0000\u0242\u0243\u0005"+
|
||||
"=\u0000\u0000\u0243\u0244\u0005=\u0000\u0000\u0244\u008a\u0001\u0000\u0000"+
|
||||
"\u0000\u0245\u0246\u0005!\u0000\u0000\u0246\u0247\u0005=\u0000\u0000\u0247"+
|
||||
"\u008c\u0001\u0000\u0000\u0000\u0248\u0249\u0005<\u0000\u0000\u0249\u008e"+
|
||||
"\u0001\u0000\u0000\u0000\u024a\u024b\u0005>\u0000\u0000\u024b\u0090\u0001"+
|
||||
"\u0000\u0000\u0000\u024c\u024d\u0005<\u0000\u0000\u024d\u024e\u0005=\u0000"+
|
||||
"\u0000\u024e\u0092\u0001\u0000\u0000\u0000\u024f\u0250\u0005>\u0000\u0000"+
|
||||
"\u0250\u0251\u0005=\u0000\u0000\u0251\u0094\u0001\u0000\u0000\u0000\u0252"+
|
||||
"\u0253\u0005&\u0000\u0000\u0253\u0254\u0005&\u0000\u0000\u0254\u0096\u0001"+
|
||||
"\u0000\u0000\u0000\u0255\u0256\u0005|\u0000\u0000\u0256\u0257\u0005|\u0000"+
|
||||
"\u0000\u0257\u0098\u0001\u0000\u0000\u0000\u0258\u0259\u0005&\u0000\u0000"+
|
||||
"\u0259\u009a\u0001\u0000\u0000\u0000\u025a\u025b\u0005|\u0000\u0000\u025b"+
|
||||
"\u009c\u0001\u0000\u0000\u0000\u025c\u025d\u0005^\u0000\u0000\u025d\u009e"+
|
||||
"\u0001\u0000\u0000\u0000\u025e\u025f\u0005<\u0000\u0000\u025f\u0260\u0005"+
|
||||
"<\u0000\u0000\u0260\u00a0\u0001\u0000\u0000\u0000\u0261\u0262\u0005>\u0000"+
|
||||
"\u0000\u0262\u0263\u0005>\u0000\u0000\u0263\u00a2\u0001\u0000\u0000\u0000"+
|
||||
"\u0264\u0265\u0005>\u0000\u0000\u0265\u0266\u0005>\u0000\u0000\u0266\u0267"+
|
||||
"\u0005>\u0000\u0000\u0267\u00a4\u0001\u0000\u0000\u0000\u0268\u0269\u0005"+
|
||||
"+\u0000\u0000\u0269\u026a\u0005=\u0000\u0000\u026a\u00a6\u0001\u0000\u0000"+
|
||||
"\u0000\u026b\u026c\u0005-\u0000\u0000\u026c\u026d\u0005=\u0000\u0000\u026d"+
|
||||
"\u00a8\u0001\u0000\u0000\u0000\u026e\u026f\u0005*\u0000\u0000\u026f\u0270"+
|
||||
"\u0005=\u0000\u0000\u0270\u00aa\u0001\u0000\u0000\u0000\u0271\u0272\u0005"+
|
||||
"/\u0000\u0000\u0272\u0273\u0005=\u0000\u0000\u0273\u00ac\u0001\u0000\u0000"+
|
||||
"\u0000\u0274\u0275\u0005&\u0000\u0000\u0275\u0276\u0005=\u0000\u0000\u0276"+
|
||||
"\u00ae\u0001\u0000\u0000\u0000\u0277\u0278\u0005|\u0000\u0000\u0278\u0279"+
|
||||
"\u0005=\u0000\u0000\u0279\u00b0\u0001\u0000\u0000\u0000\u027a\u027b\u0005"+
|
||||
"^\u0000\u0000\u027b\u027c\u0005=\u0000\u0000\u027c\u00b2\u0001\u0000\u0000"+
|
||||
"\u0000\u027d\u027e\u0005%\u0000\u0000\u027e\u027f\u0005=\u0000\u0000\u027f"+
|
||||
"\u00b4\u0001\u0000\u0000\u0000\u0280\u0281\u0005<\u0000\u0000\u0281\u0282"+
|
||||
"\u0005<\u0000\u0000\u0282\u0283\u0005=\u0000\u0000\u0283\u00b6\u0001\u0000"+
|
||||
"\u0000\u0000\u0284\u0285\u0005>\u0000\u0000\u0285\u0286\u0005>\u0000\u0000"+
|
||||
"\u0286\u0287\u0005=\u0000\u0000\u0287\u00b8\u0001\u0000\u0000\u0000\u0288"+
|
||||
"\u0289\u0005>\u0000\u0000\u0289\u028a\u0005>\u0000\u0000\u028a\u028b\u0005"+
|
||||
">\u0000\u0000\u028b\u028c\u0005=\u0000\u0000\u028c\u00ba\u0001\u0000\u0000"+
|
||||
"\u0000\u028d\u0291\u0003\u00bd^\u0000\u028e\u0290\u0003\u00bf_\u0000\u028f"+
|
||||
"\u028e\u0001\u0000\u0000\u0000\u0290\u0293\u0001\u0000\u0000\u0000\u0291"+
|
||||
"\u028f\u0001\u0000\u0000\u0000\u0291\u0292\u0001\u0000\u0000\u0000\u0292"+
|
||||
"\u00bc\u0001\u0000\u0000\u0000\u0293\u0291\u0001\u0000\u0000\u0000\u0294"+
|
||||
"\u0296\u0007\u0000\u0000\u0000\u0295\u0294\u0001\u0000\u0000\u0000\u0296"+
|
||||
"\u00be\u0001\u0000\u0000\u0000\u0297\u029a\u0003\u00bd^\u0000\u0298\u029a"+
|
||||
"\u0007\u0001\u0000\u0000\u0299\u0297\u0001\u0000\u0000\u0000\u0299\u0298"+
|
||||
"\u0001\u0000\u0000\u0000\u029a\u00c0\u0001\u0000\u0000\u0000\u029b\u029d"+
|
||||
"\u0007\u0002\u0000\u0000\u029c\u029b\u0001\u0000\u0000\u0000\u029d\u029e"+
|
||||
"\u0001\u0000\u0000\u0000\u029e\u029c\u0001\u0000\u0000\u0000\u029e\u029f"+
|
||||
"\u0001\u0000\u0000\u0000\u029f\u00c2\u0001\u0000\u0000\u0000\u02a0\u02a2"+
|
||||
"\u0007\u0002\u0000\u0000\u02a1\u02a0\u0001\u0000\u0000\u0000\u02a2\u02a3"+
|
||||
"\u0001\u0000\u0000\u0000\u02a3\u02a1\u0001\u0000\u0000\u0000\u02a3\u02a4"+
|
||||
"\u0001\u0000\u0000\u0000\u02a4\u02a5\u0001\u0000\u0000\u0000\u02a5\u02a9"+
|
||||
"\u0005.\u0000\u0000\u02a6\u02a8\u0007\u0002\u0000\u0000\u02a7\u02a6\u0001"+
|
||||
"\u0000\u0000\u0000\u02a8\u02ab\u0001\u0000\u0000\u0000\u02a9\u02a7\u0001"+
|
||||
"\u0000\u0000\u0000\u02a9\u02aa\u0001\u0000\u0000\u0000\u02aa\u00c4\u0001"+
|
||||
"\u0000\u0000\u0000\u02ab\u02a9\u0001\u0000\u0000\u0000\u02ac\u02b0\u0005"+
|
||||
"\'\u0000\u0000\u02ad\u02b1\b\u0003\u0000\u0000\u02ae\u02af\u0005\\\u0000"+
|
||||
"\u0000\u02af\u02b1\t\u0000\u0000\u0000\u02b0\u02ad\u0001\u0000\u0000\u0000"+
|
||||
"\u02b0\u02ae\u0001\u0000\u0000\u0000\u02b1\u02b2\u0001\u0000\u0000\u0000"+
|
||||
"\u02b2\u02b3\u0005\'\u0000\u0000\u02b3\u00c6\u0001\u0000\u0000\u0000\u02b4"+
|
||||
"\u02ba\u0005\"\u0000\u0000\u02b5\u02b9\b\u0004\u0000\u0000\u02b6\u02b7"+
|
||||
"\u0005\\\u0000\u0000\u02b7\u02b9\t\u0000\u0000\u0000\u02b8\u02b5\u0001"+
|
||||
"\u0000\u0000\u0000\u02b8\u02b6\u0001\u0000\u0000\u0000\u02b9\u02bc\u0001"+
|
||||
"\u0000\u0000\u0000\u02ba\u02b8\u0001\u0000\u0000\u0000\u02ba\u02bb\u0001"+
|
||||
"\u0000\u0000\u0000\u02bb\u02bd\u0001\u0000\u0000\u0000\u02bc\u02ba\u0001"+
|
||||
"\u0000\u0000\u0000\u02bd\u02be\u0005\"\u0000\u0000\u02be\u00c8\u0001\u0000"+
|
||||
"\u0000\u0000\u02bf\u02c0\u0005t\u0000\u0000\u02c0\u02c1\u0005r\u0000\u0000"+
|
||||
"\u02c1\u02c2\u0005u\u0000\u0000\u02c2\u02c9\u0005e\u0000\u0000\u02c3\u02c4"+
|
||||
"\u0005f\u0000\u0000\u02c4\u02c5\u0005a\u0000\u0000\u02c5\u02c6\u0005l"+
|
||||
"\u0000\u0000\u02c6\u02c7\u0005s\u0000\u0000\u02c7\u02c9\u0005e\u0000\u0000"+
|
||||
"\u02c8\u02bf\u0001\u0000\u0000\u0000\u02c8\u02c3\u0001\u0000\u0000\u0000"+
|
||||
"\u02c9\u00ca\u0001\u0000\u0000\u0000\u02ca\u02cb\u0005n\u0000\u0000\u02cb"+
|
||||
"\u02cc\u0005u\u0000\u0000\u02cc\u02cd\u0005l\u0000\u0000\u02cd\u02ce\u0005"+
|
||||
"l\u0000\u0000\u02ce\u00cc\u0001\u0000\u0000\u0000\u02cf\u02d1\u0007\u0005"+
|
||||
"\u0000\u0000\u02d0\u02cf\u0001\u0000\u0000\u0000\u02d1\u02d2\u0001\u0000"+
|
||||
"\u0000\u0000\u02d2\u02d0\u0001\u0000\u0000\u0000\u02d2\u02d3\u0001\u0000"+
|
||||
"\u0000\u0000\u02d3\u02d4\u0001\u0000\u0000\u0000\u02d4\u02d5\u0006f\u0000"+
|
||||
"\u0000\u02d5\u00ce\u0001\u0000\u0000\u0000\u02d6\u02d7\u0005/\u0000\u0000"+
|
||||
"\u02d7\u02d8\u0005/\u0000\u0000\u02d8\u02dc\u0001\u0000\u0000\u0000\u02d9"+
|
||||
"\u02db\b\u0006\u0000\u0000\u02da\u02d9\u0001\u0000\u0000\u0000\u02db\u02de"+
|
||||
"\u0001\u0000\u0000\u0000\u02dc\u02da\u0001\u0000\u0000\u0000\u02dc\u02dd"+
|
||||
"\u0001\u0000\u0000\u0000\u02dd\u02df\u0001\u0000\u0000\u0000\u02de\u02dc"+
|
||||
"\u0001\u0000\u0000\u0000\u02df\u02e0\u0006g\u0000\u0000\u02e0\u00d0\u0001"+
|
||||
"\u0000\u0000\u0000\u02e1\u02e2\u0005/\u0000\u0000\u02e2\u02e3\u0005*\u0000"+
|
||||
"\u0000\u02e3\u02e7\u0001\u0000\u0000\u0000\u02e4\u02e6\t\u0000\u0000\u0000"+
|
||||
"\u02e5\u02e4\u0001\u0000\u0000\u0000\u02e6\u02e9\u0001\u0000\u0000\u0000"+
|
||||
"\u02e7\u02e8\u0001\u0000\u0000\u0000\u02e7\u02e5\u0001\u0000\u0000\u0000"+
|
||||
"\u02e8\u02ea\u0001\u0000\u0000\u0000\u02e9\u02e7\u0001\u0000\u0000\u0000"+
|
||||
"\u02ea\u02eb\u0005*\u0000\u0000\u02eb\u02ec\u0005/\u0000\u0000\u02ec\u02ed"+
|
||||
"\u0001\u0000\u0000\u0000\u02ed\u02ee\u0006h\u0000\u0000\u02ee\u00d2\u0001"+
|
||||
"\u0000\u0000\u0000\u000e\u0000\u0291\u0295\u0299\u029e\u02a3\u02a9\u02b0"+
|
||||
"\u02b8\u02ba\u02c8\u02d2\u02dc\u02e7\u0001\u0006\u0000\u0000";
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
6775
src/org/lsmr/cfg/Java1_4Parser.java
Normal file
6775
src/org/lsmr/cfg/Java1_4Parser.java
Normal file
File diff suppressed because it is too large
Load Diff
668
src/org/lsmr/cfg/Java1_4ParserBaseVisitor.java
Normal file
668
src/org/lsmr/cfg/Java1_4ParserBaseVisitor.java
Normal file
@@ -0,0 +1,668 @@
|
||||
// Generated from Java1_4Parser.g4 by ANTLR 4.13.2
|
||||
|
||||
package org.lsmr.cfg;
|
||||
|
||||
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
|
||||
|
||||
/**
|
||||
* This class provides an empty implementation of {@link Java1_4ParserVisitor},
|
||||
* which can be extended to create a visitor which only needs to handle a subset
|
||||
* of the available methods.
|
||||
*
|
||||
* @param <T> The return type of the visit operation. Use {@link Void} for
|
||||
* operations with no return type.
|
||||
*/
|
||||
@SuppressWarnings("CheckReturnValue")
|
||||
public class Java1_4ParserBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements Java1_4ParserVisitor<T> {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitIdentifier(Java1_4Parser.IdentifierContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitQualifiedIdentifier(Java1_4Parser.QualifiedIdentifierContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitLiteral(Java1_4Parser.LiteralContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitType(Java1_4Parser.TypeContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitBasicType(Java1_4Parser.BasicTypeContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitDims(Java1_4Parser.DimsContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExpression(Java1_4Parser.ExpressionContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitAssignmentOperator(Java1_4Parser.AssignmentOperatorContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExpression1(Java1_4Parser.Expression1Context ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExpression1Rest(Java1_4Parser.Expression1RestContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExpression2(Java1_4Parser.Expression2Context ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExpression2Rest(Java1_4Parser.Expression2RestContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitInfixOp(Java1_4Parser.InfixOpContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExpression3(Java1_4Parser.Expression3Context ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitPrefixOp(Java1_4Parser.PrefixOpContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitPostfixOp(Java1_4Parser.PostfixOpContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitPrimary(Java1_4Parser.PrimaryContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitIdentifierSuffix(Java1_4Parser.IdentifierSuffixContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitSelector(Java1_4Parser.SelectorContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitSuperSuffix(Java1_4Parser.SuperSuffixContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitArguments(Java1_4Parser.ArgumentsContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitCreator(Java1_4Parser.CreatorContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitInnerCreator(Java1_4Parser.InnerCreatorContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitArrayCreatorRest(Java1_4Parser.ArrayCreatorRestContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitClassCreatorRest(Java1_4Parser.ClassCreatorRestContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitArrayInitializer(Java1_4Parser.ArrayInitializerContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitVariableInitializer(Java1_4Parser.VariableInitializerContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitParenthesizedExpression(Java1_4Parser.ParenthesizedExpressionContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitBlock(Java1_4Parser.BlockContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitBlockStatement(Java1_4Parser.BlockStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitLocalVariableDeclarationStatement(Java1_4Parser.LocalVariableDeclarationStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitStatement(Java1_4Parser.StatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitIfStatement(Java1_4Parser.IfStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitElseClause(Java1_4Parser.ElseClauseContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitForStatement(Java1_4Parser.ForStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitWhileStatement(Java1_4Parser.WhileStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitDoStatement(Java1_4Parser.DoStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitTryStatement(Java1_4Parser.TryStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitSwitchStatement(Java1_4Parser.SwitchStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitSynchronizedStatement(Java1_4Parser.SynchronizedStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitReturnStatement(Java1_4Parser.ReturnStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitThrowStatement(Java1_4Parser.ThrowStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitBreakStatement(Java1_4Parser.BreakStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitContinueStatement(Java1_4Parser.ContinueStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitEmptyStatement(Java1_4Parser.EmptyStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExpressionStatement(Java1_4Parser.ExpressionStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitAssertStatement(Java1_4Parser.AssertStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitLabeledStatement(Java1_4Parser.LabeledStatementContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitStatementExpression(Java1_4Parser.StatementExpressionContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitConstantExpression(Java1_4Parser.ConstantExpressionContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitCatches(Java1_4Parser.CatchesContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitCatchClause(Java1_4Parser.CatchClauseContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitFinallyClause(Java1_4Parser.FinallyClauseContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitSwitchBlockStatementGroup(Java1_4Parser.SwitchBlockStatementGroupContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitSwitchLabel(Java1_4Parser.SwitchLabelContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitForInit(Java1_4Parser.ForInitContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitForUpdate(Java1_4Parser.ForUpdateContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitModifier(Java1_4Parser.ModifierContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitVariableDeclarators(Java1_4Parser.VariableDeclaratorsContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitVariableDeclarator(Java1_4Parser.VariableDeclaratorContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitVariableDeclaratorId(Java1_4Parser.VariableDeclaratorIdContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitConstantDeclarator(Java1_4Parser.ConstantDeclaratorContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitCompilationUnit(Java1_4Parser.CompilationUnitContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitImportDeclaration(Java1_4Parser.ImportDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitTypeDeclaration(Java1_4Parser.TypeDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitClassOrInterfaceDeclaration(Java1_4Parser.ClassOrInterfaceDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitClassDeclaration(Java1_4Parser.ClassDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitSuperclass(Java1_4Parser.SuperclassContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitSuperinterfaces(Java1_4Parser.SuperinterfacesContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitInterfaceDeclaration(Java1_4Parser.InterfaceDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExtendsInterfaces(Java1_4Parser.ExtendsInterfacesContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitTypeList(Java1_4Parser.TypeListContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitClassBody(Java1_4Parser.ClassBodyContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitInterfaceBody(Java1_4Parser.InterfaceBodyContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitClassBodyDeclaration(Java1_4Parser.ClassBodyDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitEmptyDeclaration(Java1_4Parser.EmptyDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitInitializer(Java1_4Parser.InitializerContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitStaticInitializer(Java1_4Parser.StaticInitializerContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitMemberDeclaration(Java1_4Parser.MemberDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitMethodDeclaration(Java1_4Parser.MethodDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitResult(Java1_4Parser.ResultContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitThrows_(Java1_4Parser.Throws_Context ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitFieldDeclaration(Java1_4Parser.FieldDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitConstructorDeclaration(Java1_4Parser.ConstructorDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitConstructorBody(Java1_4Parser.ConstructorBodyContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitExplicitConstructorInvocation(Java1_4Parser.ExplicitConstructorInvocationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitInterfaceBodyDeclaration(Java1_4Parser.InterfaceBodyDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitInterfaceMemberDeclaration(Java1_4Parser.InterfaceMemberDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitInterfaceMethodDeclaration(Java1_4Parser.InterfaceMethodDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitConstantDeclaration(Java1_4Parser.ConstantDeclarationContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitQualifiedIdentifiers(Java1_4Parser.QualifiedIdentifiersContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitFormalParameters(Java1_4Parser.FormalParametersContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitFormalParameter(Java1_4Parser.FormalParameterContext ctx) { return visitChildren(ctx); }
|
||||
}
|
||||
573
src/org/lsmr/cfg/Java1_4ParserVisitor.java
Normal file
573
src/org/lsmr/cfg/Java1_4ParserVisitor.java
Normal file
@@ -0,0 +1,573 @@
|
||||
// Generated from Java1_4Parser.g4 by ANTLR 4.13.2
|
||||
|
||||
package org.lsmr.cfg;
|
||||
|
||||
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
|
||||
|
||||
/**
|
||||
* This interface defines a complete generic visitor for a parse tree produced
|
||||
* by {@link Java1_4Parser}.
|
||||
*
|
||||
* @param <T> The return type of the visit operation. Use {@link Void} for
|
||||
* operations with no return type.
|
||||
*/
|
||||
public interface Java1_4ParserVisitor<T> extends ParseTreeVisitor<T> {
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#identifier}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitIdentifier(Java1_4Parser.IdentifierContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#qualifiedIdentifier}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitQualifiedIdentifier(Java1_4Parser.QualifiedIdentifierContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#literal}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitLiteral(Java1_4Parser.LiteralContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#type}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitType(Java1_4Parser.TypeContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#basicType}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitBasicType(Java1_4Parser.BasicTypeContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#dims}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitDims(Java1_4Parser.DimsContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#expression}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExpression(Java1_4Parser.ExpressionContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#assignmentOperator}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitAssignmentOperator(Java1_4Parser.AssignmentOperatorContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#expression1}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExpression1(Java1_4Parser.Expression1Context ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#expression1Rest}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExpression1Rest(Java1_4Parser.Expression1RestContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#expression2}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExpression2(Java1_4Parser.Expression2Context ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#expression2Rest}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExpression2Rest(Java1_4Parser.Expression2RestContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#infixOp}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitInfixOp(Java1_4Parser.InfixOpContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#expression3}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExpression3(Java1_4Parser.Expression3Context ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#prefixOp}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitPrefixOp(Java1_4Parser.PrefixOpContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#postfixOp}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitPostfixOp(Java1_4Parser.PostfixOpContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#primary}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitPrimary(Java1_4Parser.PrimaryContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#identifierSuffix}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitIdentifierSuffix(Java1_4Parser.IdentifierSuffixContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#selector}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitSelector(Java1_4Parser.SelectorContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#superSuffix}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitSuperSuffix(Java1_4Parser.SuperSuffixContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#arguments}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitArguments(Java1_4Parser.ArgumentsContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#creator}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitCreator(Java1_4Parser.CreatorContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#innerCreator}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitInnerCreator(Java1_4Parser.InnerCreatorContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#arrayCreatorRest}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitArrayCreatorRest(Java1_4Parser.ArrayCreatorRestContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#classCreatorRest}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitClassCreatorRest(Java1_4Parser.ClassCreatorRestContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#arrayInitializer}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitArrayInitializer(Java1_4Parser.ArrayInitializerContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#variableInitializer}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitVariableInitializer(Java1_4Parser.VariableInitializerContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#parenthesizedExpression}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitParenthesizedExpression(Java1_4Parser.ParenthesizedExpressionContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#block}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitBlock(Java1_4Parser.BlockContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#blockStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitBlockStatement(Java1_4Parser.BlockStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#localVariableDeclarationStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitLocalVariableDeclarationStatement(Java1_4Parser.LocalVariableDeclarationStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#statement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitStatement(Java1_4Parser.StatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#ifStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitIfStatement(Java1_4Parser.IfStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#elseClause}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitElseClause(Java1_4Parser.ElseClauseContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#forStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitForStatement(Java1_4Parser.ForStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#whileStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitWhileStatement(Java1_4Parser.WhileStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#doStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitDoStatement(Java1_4Parser.DoStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#tryStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitTryStatement(Java1_4Parser.TryStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#switchStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitSwitchStatement(Java1_4Parser.SwitchStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#synchronizedStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitSynchronizedStatement(Java1_4Parser.SynchronizedStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#returnStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitReturnStatement(Java1_4Parser.ReturnStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#throwStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitThrowStatement(Java1_4Parser.ThrowStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#breakStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitBreakStatement(Java1_4Parser.BreakStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#continueStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitContinueStatement(Java1_4Parser.ContinueStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#emptyStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitEmptyStatement(Java1_4Parser.EmptyStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#expressionStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExpressionStatement(Java1_4Parser.ExpressionStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#assertStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitAssertStatement(Java1_4Parser.AssertStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#labeledStatement}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitLabeledStatement(Java1_4Parser.LabeledStatementContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#statementExpression}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitStatementExpression(Java1_4Parser.StatementExpressionContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#constantExpression}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitConstantExpression(Java1_4Parser.ConstantExpressionContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#catches}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitCatches(Java1_4Parser.CatchesContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#catchClause}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitCatchClause(Java1_4Parser.CatchClauseContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#finallyClause}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitFinallyClause(Java1_4Parser.FinallyClauseContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#switchBlockStatementGroup}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitSwitchBlockStatementGroup(Java1_4Parser.SwitchBlockStatementGroupContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#switchLabel}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitSwitchLabel(Java1_4Parser.SwitchLabelContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#forInit}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitForInit(Java1_4Parser.ForInitContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#forUpdate}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitForUpdate(Java1_4Parser.ForUpdateContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#modifier}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitModifier(Java1_4Parser.ModifierContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#variableDeclarators}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitVariableDeclarators(Java1_4Parser.VariableDeclaratorsContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#variableDeclarator}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitVariableDeclarator(Java1_4Parser.VariableDeclaratorContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#variableDeclaratorId}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitVariableDeclaratorId(Java1_4Parser.VariableDeclaratorIdContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#constantDeclarator}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitConstantDeclarator(Java1_4Parser.ConstantDeclaratorContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#compilationUnit}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitCompilationUnit(Java1_4Parser.CompilationUnitContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#importDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitImportDeclaration(Java1_4Parser.ImportDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#typeDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitTypeDeclaration(Java1_4Parser.TypeDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#classOrInterfaceDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitClassOrInterfaceDeclaration(Java1_4Parser.ClassOrInterfaceDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#classDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitClassDeclaration(Java1_4Parser.ClassDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#superclass}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitSuperclass(Java1_4Parser.SuperclassContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#superinterfaces}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitSuperinterfaces(Java1_4Parser.SuperinterfacesContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#interfaceDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitInterfaceDeclaration(Java1_4Parser.InterfaceDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#extendsInterfaces}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExtendsInterfaces(Java1_4Parser.ExtendsInterfacesContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#typeList}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitTypeList(Java1_4Parser.TypeListContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#classBody}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitClassBody(Java1_4Parser.ClassBodyContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#interfaceBody}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitInterfaceBody(Java1_4Parser.InterfaceBodyContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#classBodyDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitClassBodyDeclaration(Java1_4Parser.ClassBodyDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#emptyDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitEmptyDeclaration(Java1_4Parser.EmptyDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#initializer}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitInitializer(Java1_4Parser.InitializerContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#staticInitializer}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitStaticInitializer(Java1_4Parser.StaticInitializerContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#memberDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitMemberDeclaration(Java1_4Parser.MemberDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#methodDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitMethodDeclaration(Java1_4Parser.MethodDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#result}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitResult(Java1_4Parser.ResultContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#throws_}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitThrows_(Java1_4Parser.Throws_Context ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#fieldDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitFieldDeclaration(Java1_4Parser.FieldDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#constructorDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitConstructorDeclaration(Java1_4Parser.ConstructorDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#constructorBody}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitConstructorBody(Java1_4Parser.ConstructorBodyContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#explicitConstructorInvocation}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitExplicitConstructorInvocation(Java1_4Parser.ExplicitConstructorInvocationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#interfaceBodyDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitInterfaceBodyDeclaration(Java1_4Parser.InterfaceBodyDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#interfaceMemberDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitInterfaceMemberDeclaration(Java1_4Parser.InterfaceMemberDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#interfaceMethodDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitInterfaceMethodDeclaration(Java1_4Parser.InterfaceMethodDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#constantDeclaration}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitConstantDeclaration(Java1_4Parser.ConstantDeclarationContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#qualifiedIdentifiers}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitQualifiedIdentifiers(Java1_4Parser.QualifiedIdentifiersContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#formalParameters}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitFormalParameters(Java1_4Parser.FormalParametersContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by {@link Java1_4Parser#formalParameter}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitFormalParameter(Java1_4Parser.FormalParameterContext ctx);
|
||||
}
|
||||
182
src/org/lsmr/cfg/Node.java
Normal file
182
src/org/lsmr/cfg/Node.java
Normal file
@@ -0,0 +1,182 @@
|
||||
package org.lsmr.cfg;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Represents nodes in a CFG. Each node is expected to have a non-null,
|
||||
* non-empty label. A node is tightly connected to a specific graph, so the
|
||||
* creation of nodes is permitted only via
|
||||
* {@link ControlFlowGraph#buildNode(String)}.
|
||||
*/
|
||||
public class Node {
|
||||
private ControlFlowGraph graph;
|
||||
private Set<Edge> inEdges = new HashSet<>();
|
||||
private Set<Edge> outEdges = new HashSet<>();
|
||||
private String label;
|
||||
|
||||
private int lineNumber;
|
||||
|
||||
Node(String label) {
|
||||
if (label == null || label.length() < 1)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public void setLineNumber(int lineNumber) {
|
||||
this.lineNumber = lineNumber;
|
||||
}
|
||||
|
||||
public int getLineNumber() {
|
||||
return this.lineNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accesses the label for this node.
|
||||
*
|
||||
* @return The label for this node. Should not be null; should not be empty.
|
||||
*/
|
||||
public String label() {
|
||||
return label;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accesses the parent graph for this node.
|
||||
*
|
||||
* @return The parent graph for this node. Should not be null.
|
||||
*/
|
||||
public ControlFlowGraph graph() {
|
||||
return graph;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accesses the out-edges of this node as an unmodifiable set.
|
||||
*
|
||||
* @return An unmodifiable set of the out-edges of this node.
|
||||
*/
|
||||
public Set<Edge> outEdges() {
|
||||
return Collections.unmodifiableSet(outEdges);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accesses the in-edges of this node as an unmodifiable set.
|
||||
*
|
||||
* @return An unmodifiable set of the in-edges of this node.
|
||||
*/
|
||||
public Set<Edge> inEdges() {
|
||||
return Collections.unmodifiableSet(inEdges);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the indicated edge to this node as an in-edge.
|
||||
*
|
||||
* @param edge
|
||||
* The edge to be added as an in-edge
|
||||
* @throws IllegalArgumentException
|
||||
* If the edge is null.
|
||||
* @throws IllegalStateException
|
||||
* If the target node of the edge is not
|
||||
* identical to this node.
|
||||
*/
|
||||
public void addInEdge(Edge edge) {
|
||||
if (edge == null)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
if (edge.target() != this)
|
||||
throw new IllegalStateException();
|
||||
|
||||
if (edge.source().graph() == null || edge.target().graph() == null)
|
||||
throw new IllegalStateException();
|
||||
|
||||
inEdges.add(edge);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the indicated edge to this node as an out-edge.
|
||||
*
|
||||
* @param edge
|
||||
* The edge to be added as an out-edge
|
||||
* @throws IllegalArgumentException
|
||||
* If the edge is null.
|
||||
* @throws IllegalStateException
|
||||
* If the source node of the edge is not
|
||||
* identical to this node.
|
||||
*/
|
||||
public void addOutEdge(Edge edge) {
|
||||
if (edge == null)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
if (edge.source() != this)
|
||||
throw new IllegalStateException();
|
||||
|
||||
if (edge.source().graph() == null || (edge.target() != null && edge.target().graph() == null))
|
||||
throw new IllegalStateException();
|
||||
|
||||
outEdges.add(edge);
|
||||
}
|
||||
|
||||
void setGraph(ControlFlowGraph graph) {
|
||||
if (this.graph != null) {
|
||||
if (graph == null)
|
||||
this.graph = null;
|
||||
} else if (graph == null)
|
||||
throw new IllegalArgumentException();
|
||||
else
|
||||
this.graph = graph;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return label.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof Node) {
|
||||
Node other = (Node) obj;
|
||||
|
||||
return label.equals(other.label);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append("node ");
|
||||
sb.append(label);
|
||||
sb.append(": in-edges [");
|
||||
|
||||
boolean start = true;
|
||||
|
||||
for (Edge edge : inEdges) {
|
||||
if (start)
|
||||
start = false;
|
||||
else
|
||||
sb.append(", ");
|
||||
|
||||
sb.append(edge.toString());
|
||||
}
|
||||
|
||||
sb.append("]; out-edges [");
|
||||
|
||||
start = true;
|
||||
|
||||
for (Edge edge : outEdges) {
|
||||
if (start)
|
||||
start = false;
|
||||
else
|
||||
sb.append(", ");
|
||||
|
||||
sb.append(edge.toString());
|
||||
}
|
||||
|
||||
sb.append("]");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
1403
src/org/lsmr/cfg/NodeBuilder.java
Normal file
1403
src/org/lsmr/cfg/NodeBuilder.java
Normal file
File diff suppressed because it is too large
Load Diff
607
src/org/lsmr/cfg/TreePrinter.java
Normal file
607
src/org/lsmr/cfg/TreePrinter.java
Normal file
@@ -0,0 +1,607 @@
|
||||
package org.lsmr.cfg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Stack;
|
||||
|
||||
import org.antlr.v4.runtime.tree.ErrorNode;
|
||||
import org.antlr.v4.runtime.tree.ParseTree;
|
||||
import org.antlr.v4.runtime.tree.RuleNode;
|
||||
import org.antlr.v4.runtime.tree.TerminalNode;
|
||||
import org.lsmr.cfg.Edge.EdgeLabel;
|
||||
import org.lsmr.cfg.Java1_4Parser.ArgumentsContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ArrayCreatorRestContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ArrayInitializerContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.AssertStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.AssignmentOperatorContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.BasicTypeContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.BlockContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.BlockStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.BreakStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.CatchClauseContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.CatchesContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ClassBodyContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ClassBodyDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ClassCreatorRestContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ClassDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ClassOrInterfaceDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.CompilationUnitContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ConstantDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ConstantDeclaratorContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ConstantExpressionContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ConstructorBodyContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ConstructorDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ContinueStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.CreatorContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.DimsContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.DoStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ElseClauseContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.EmptyDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.EmptyStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ExplicitConstructorInvocationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.Expression1Context;
|
||||
import org.lsmr.cfg.Java1_4Parser.Expression1RestContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.Expression2Context;
|
||||
import org.lsmr.cfg.Java1_4Parser.Expression2RestContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.Expression3Context;
|
||||
import org.lsmr.cfg.Java1_4Parser.ExpressionContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ExpressionStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ExtendsInterfacesContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.FieldDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.FinallyClauseContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ForInitContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ForStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ForUpdateContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.FormalParameterContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.FormalParametersContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.IdentifierContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.IdentifierSuffixContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.IfStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ImportDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.InfixOpContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.InitializerContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.InnerCreatorContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.InterfaceBodyContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.InterfaceBodyDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.InterfaceDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.InterfaceMemberDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.InterfaceMethodDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.LabeledStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.LiteralContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.LocalVariableDeclarationStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.MemberDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.MethodDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ModifierContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ParenthesizedExpressionContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.PostfixOpContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.PrefixOpContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.PrimaryContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.QualifiedIdentifierContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.QualifiedIdentifiersContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ResultContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ReturnStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.SelectorContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.StatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.StatementExpressionContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.StaticInitializerContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.SuperSuffixContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.SuperclassContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.SuperinterfacesContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.SwitchBlockStatementGroupContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.SwitchLabelContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.SwitchStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.SynchronizedStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.ThrowStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.Throws_Context;
|
||||
import org.lsmr.cfg.Java1_4Parser.TryStatementContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.TypeContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.TypeDeclarationContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.TypeListContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.VariableDeclaratorContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.VariableDeclaratorIdContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.VariableDeclaratorsContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.VariableInitializerContext;
|
||||
import org.lsmr.cfg.Java1_4Parser.WhileStatementContext;
|
||||
|
||||
/**
|
||||
* This class will visit the nodes in a parse tree to print the resulting code.
|
||||
*/
|
||||
public class TreePrinter implements Java1_4ParserVisitor<String> {
|
||||
@Override
|
||||
public String visit(ParseTree arg0) {
|
||||
return arg0.accept(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitChildren(RuleNode arg0) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int childCount = arg0.getChildCount();
|
||||
|
||||
for(int i = 0; i < childCount; i++) {
|
||||
sb.append(visit(arg0.getChild(i)));
|
||||
|
||||
if(sb.charAt(sb.length() - 1) != ' ')
|
||||
sb.append(" ");
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitErrorNode(ErrorNode arg0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitTerminal(TerminalNode arg0) {
|
||||
return arg0.getText();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitIdentifier(IdentifierContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitQualifiedIdentifier(QualifiedIdentifierContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitLiteral(LiteralContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitType(TypeContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitBasicType(BasicTypeContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExpression(ExpressionContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitAssignmentOperator(AssignmentOperatorContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExpression1(Expression1Context ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExpression1Rest(Expression1RestContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExpression2(Expression2Context ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExpression2Rest(Expression2RestContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitInfixOp(InfixOpContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExpression3(Expression3Context ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitPrefixOp(PrefixOpContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitPostfixOp(PostfixOpContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitPrimary(PrimaryContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitIdentifierSuffix(IdentifierSuffixContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitSelector(SelectorContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitSuperSuffix(SuperSuffixContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitArguments(ArgumentsContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitCreator(CreatorContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitInnerCreator(InnerCreatorContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitArrayCreatorRest(ArrayCreatorRestContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitClassCreatorRest(ClassCreatorRestContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitArrayInitializer(ArrayInitializerContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitVariableInitializer(VariableInitializerContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitBlock(BlockContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitBlockStatement(BlockStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitLocalVariableDeclarationStatement(LocalVariableDeclarationStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitAssertStatement(AssertStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitBreakStatement(BreakStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitContinueStatement(ContinueStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitDoStatement(DoStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitIfStatement(IfStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitTryStatement(TryStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitForStatement(ForStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitWhileStatement(WhileStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitSwitchStatement(SwitchStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitSynchronizedStatement(SynchronizedStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitReturnStatement(ReturnStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitThrowStatement(ThrowStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitEmptyStatement(EmptyStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExpressionStatement(ExpressionStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitStatementExpression(StatementExpressionContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitConstantExpression(ConstantExpressionContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitCatches(CatchesContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitCatchClause(CatchClauseContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitSwitchBlockStatementGroup(SwitchBlockStatementGroupContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitSwitchLabel(SwitchLabelContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitForInit(ForInitContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitForUpdate(ForUpdateContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitModifier(ModifierContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitVariableDeclarators(VariableDeclaratorsContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitVariableDeclarator(VariableDeclaratorContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitVariableDeclaratorId(VariableDeclaratorIdContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitConstantDeclarator(ConstantDeclaratorContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitCompilationUnit(CompilationUnitContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitImportDeclaration(ImportDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitTypeDeclaration(TypeDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitClassOrInterfaceDeclaration(ClassOrInterfaceDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitClassDeclaration(ClassDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitInterfaceDeclaration(InterfaceDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitTypeList(TypeListContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitClassBody(ClassBodyContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitInterfaceBody(InterfaceBodyContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitClassBodyDeclaration(ClassBodyDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitMemberDeclaration(MemberDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitMethodDeclaration(MethodDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitInterfaceBodyDeclaration(InterfaceBodyDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitFormalParameters(FormalParametersContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitFormalParameter(FormalParameterContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitDims(DimsContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitParenthesizedExpression(ParenthesizedExpressionContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitStatement(StatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitSuperclass(SuperclassContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitSuperinterfaces(SuperinterfacesContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExtendsInterfaces(ExtendsInterfacesContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitEmptyDeclaration(EmptyDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitInitializer(InitializerContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitStaticInitializer(StaticInitializerContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitResult(ResultContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitThrows_(Throws_Context ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitFieldDeclaration(FieldDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitConstructorDeclaration(ConstructorDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitConstructorBody(ConstructorBodyContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitExplicitConstructorInvocation(ExplicitConstructorInvocationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitInterfaceMemberDeclaration(InterfaceMemberDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitInterfaceMethodDeclaration(InterfaceMethodDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitConstantDeclaration(ConstantDeclarationContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitQualifiedIdentifiers(QualifiedIdentifiersContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitElseClause(ElseClauseContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitFinallyClause(FinallyClauseContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String visitLabeledStatement(LabeledStatementContext ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
}
|
||||
316
src/pdg/PDG.java
Normal file
316
src/pdg/PDG.java
Normal file
@@ -0,0 +1,316 @@
|
||||
package pdg;
|
||||
|
||||
import org.lsmr.cfg.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Simple Program Dependence Graph (PDG)
|
||||
* Computes control and data dependencies for a CFG
|
||||
*/
|
||||
public class PDG {
|
||||
|
||||
private ControlFlowGraph cfg;
|
||||
private Map<String, Set<String>> controlDeps;
|
||||
private Map<String, Set<String>> dataDeps;
|
||||
|
||||
public PDG(ControlFlowGraph cfg) {
|
||||
this.cfg = cfg;
|
||||
this.controlDeps = new HashMap<>();
|
||||
this.dataDeps = new HashMap<>();
|
||||
|
||||
System.out.println("Building PDG...");
|
||||
computeControlDependencies();
|
||||
computeDataDependencies();
|
||||
System.out.println("PDG complete!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute control dependencies using simple reachability
|
||||
*/
|
||||
private void computeControlDependencies() {
|
||||
System.out.println("\tComputing control dependencies...");
|
||||
|
||||
for (Node node : cfg.nodes()) {
|
||||
Set<String> deps = new HashSet<>();
|
||||
|
||||
for (Edge inEdge : node.inEdges()) {
|
||||
Node pred = inEdge.source();
|
||||
|
||||
if (pred.outEdges().size() > 1) {
|
||||
deps.add(pred.label());
|
||||
|
||||
if (controlDeps.containsKey(pred.label())) {
|
||||
deps.addAll(controlDeps.get(pred.label()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
controlDeps.put(node.label(), deps);
|
||||
}
|
||||
|
||||
System.out.println("\t\tFound " + countDependencies(controlDeps) + " control dependencies");
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute data dependencies using reaching definitions
|
||||
*/
|
||||
private void computeDataDependencies() {
|
||||
System.out.println(" Computing data dependencies...");
|
||||
|
||||
// 1. Find definitions and uses for each node
|
||||
Map<String, Set<String>> defs = new HashMap<>();
|
||||
Map<String, Set<String>> uses = new HashMap<>();
|
||||
|
||||
for (Node node : cfg.nodes()) {
|
||||
String label = node.label();
|
||||
defs.put(label, extractDefs(label));
|
||||
uses.put(label, extractUses(label));
|
||||
}
|
||||
|
||||
// 2. Compute reaching definitions
|
||||
Map<String, Map<String, Set<String>>> reaching = computeReachingDefinitions(defs);
|
||||
// TODO: check what happens whena node has multiple variable definitions
|
||||
|
||||
// 3. Build data dependencies
|
||||
for (Node node : cfg.nodes()) {
|
||||
String label = node.label();
|
||||
Set<String> deps = new HashSet<>();
|
||||
|
||||
for (String var : uses.get(label)) {
|
||||
if (reaching.containsKey(label) && reaching.get(label).containsKey(var)) {
|
||||
deps.addAll(reaching.get(label).get(var));
|
||||
}
|
||||
}
|
||||
|
||||
dataDeps.put(label, deps);
|
||||
}
|
||||
|
||||
System.out.println(" Found " + countDependencies(dataDeps) + " data dependencies");
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract variable definitions from a statement simple pattern matching for
|
||||
* Java 1.4
|
||||
*/
|
||||
private Set<String> extractDefs(String statement) {
|
||||
Set<String> vars = new HashSet<>();
|
||||
|
||||
// Skip special nodes
|
||||
if (statement.startsWith("*"))
|
||||
return vars;
|
||||
|
||||
if (statement.contains("=") && !statement.contains("==")) {
|
||||
String[] parts = statement.split("=");
|
||||
if (parts.length > 0) {
|
||||
String lhs = parts[0].trim();
|
||||
String[] tokens = lhs.split("\\s+");
|
||||
if (tokens.length > 0) {
|
||||
String varName = tokens[tokens.length - 1];
|
||||
varName = varName.replaceAll("[\\[\\].();,]", "");
|
||||
if (!varName.isEmpty() && Character.isJavaIdentifierStart(varName.charAt(0))) {
|
||||
vars.add(varName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (statement.contains("for") && statement.contains("(")) {
|
||||
String forPart = statement.substring(statement.indexOf("("));
|
||||
String[] forParts = forPart.split(";");
|
||||
if (forParts.length >= 3) {
|
||||
if (forParts[0].contains("=")) {
|
||||
String[] initParts = forParts[0].split("=");
|
||||
if (initParts.length > 0) {
|
||||
String var = initParts[0].trim().replaceAll("[^a-zA-Z0-9_]", "");
|
||||
if (!var.isEmpty())
|
||||
vars.add(var);
|
||||
}
|
||||
}
|
||||
String update = forParts[forParts.length - 1];
|
||||
if (update.contains("++") || update.contains("--")) {
|
||||
String var = update.replaceAll("[^a-zA-Z0-9_]", "");
|
||||
if (!var.isEmpty())
|
||||
vars.add(var);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return vars;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract variable uses from a statement
|
||||
*/
|
||||
private Set<String> extractUses(String statement) {
|
||||
Set<String> vars = new HashSet<>();
|
||||
|
||||
if (statement.startsWith("*"))
|
||||
return vars;
|
||||
String[] tokens = statement.split("[\\s+\\-*/=<>!&|(){}\\[\\];,.]");
|
||||
for (String token : tokens) {
|
||||
token = token.trim();
|
||||
if (!token.isEmpty() &&
|
||||
Character.isJavaIdentifierStart(token.charAt(0)) &&
|
||||
!isKeyword(token) &&
|
||||
!token.matches("\\d+")) {
|
||||
vars.add(token);
|
||||
}
|
||||
}
|
||||
vars.removeAll(extractDefs(statement));
|
||||
|
||||
return vars;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a word is a Java keyword
|
||||
*/
|
||||
private boolean isKeyword(String word) {
|
||||
Set<String> keywords = new HashSet<>(Arrays.asList(
|
||||
"if", "else", "while", "for", "do", "return", "break", "continue",
|
||||
"int", "double", "float", "char", "boolean", "void", "String",
|
||||
"new", "null", "true", "false", "class", "public", "private",
|
||||
"static", "final", "this", "super", "try", "catch", "throw", "throws"));
|
||||
return keywords.contains(word);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute reaching definitions using iterative data flow analysis
|
||||
*/
|
||||
private Map<String, Map<String, Set<String>>> computeReachingDefinitions(
|
||||
Map<String, Set<String>> defs) {
|
||||
|
||||
Map<String, Map<String, Set<String>>> reaching = new HashMap<>();
|
||||
for (Node node : cfg.nodes()) {
|
||||
reaching.put(node.label(), new HashMap<>());
|
||||
}
|
||||
boolean changed = true;
|
||||
int iterations = 0;
|
||||
while (changed && iterations < 100) {
|
||||
changed = false;
|
||||
iterations++;
|
||||
|
||||
for (Node node : cfg.nodes()) {
|
||||
String label = node.label();
|
||||
Map<String, Set<String>> oldReaching = new HashMap<>(reaching.get(label));
|
||||
Map<String, Set<String>> newReaching = new HashMap<>();
|
||||
for (Edge inEdge : node.inEdges()) {
|
||||
Node pred = inEdge.source();
|
||||
String predLabel = pred.label();
|
||||
if (reaching.containsKey(predLabel)) {
|
||||
for (Map.Entry<String, Set<String>> entry : reaching.get(predLabel).entrySet()) {
|
||||
String var = entry.getKey();
|
||||
newReaching.putIfAbsent(var, new HashSet<>());
|
||||
newReaching.get(var).addAll(entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
// Add predecessor's definitions
|
||||
for (String var : defs.get(predLabel)) {
|
||||
newReaching.putIfAbsent(var, new HashSet<>());
|
||||
newReaching.get(var).clear();
|
||||
newReaching.get(var).add(predLabel);
|
||||
}
|
||||
}
|
||||
|
||||
reaching.put(label, newReaching);
|
||||
|
||||
if (!mapsEqual(oldReaching, newReaching)) {
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return reaching;
|
||||
}
|
||||
|
||||
private boolean mapsEqual(Map<String, Set<String>> m1, Map<String, Set<String>> m2) {
|
||||
if (m1.size() != m2.size())
|
||||
return false;
|
||||
for (String key : m1.keySet()) {
|
||||
if (!m2.containsKey(key))
|
||||
return false;
|
||||
if (!m1.get(key).equals(m2.get(key)))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private int countDependencies(Map<String, Set<String>> deps) {
|
||||
int count = 0;
|
||||
for (Set<String> set : deps.values()) {
|
||||
count += set.size();
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
public Set<String> getDependencies(String nodeLabel) {
|
||||
Set<String> all = new HashSet<>();
|
||||
if (controlDeps.containsKey(nodeLabel)) {
|
||||
all.addAll(controlDeps.get(nodeLabel));
|
||||
}
|
||||
if (dataDeps.containsKey(nodeLabel)) {
|
||||
all.addAll(dataDeps.get(nodeLabel));
|
||||
}
|
||||
return all;
|
||||
}
|
||||
|
||||
public Set<String> computeForwardSlice(String nodeLabel) {
|
||||
Set<String> slice = new HashSet<>();
|
||||
Queue<String> worklist = new LinkedList<>();
|
||||
|
||||
slice.add(nodeLabel);
|
||||
worklist.add(nodeLabel);
|
||||
while (!worklist.isEmpty()) {
|
||||
String current = worklist.poll();
|
||||
for (String node : getAllNodes()) {
|
||||
if (!slice.contains(node)) {
|
||||
Set<String> deps = getDependencies(node);
|
||||
if (deps.contains(current)) {
|
||||
slice.add(node);
|
||||
worklist.add(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return slice;
|
||||
}
|
||||
|
||||
private Set<String> getAllNodes() {
|
||||
Set<String> nodes = new HashSet<>();
|
||||
for (Node node : cfg.nodes()) {
|
||||
nodes.add(node.label());
|
||||
}
|
||||
return nodes;
|
||||
}
|
||||
|
||||
public void printPDG() {
|
||||
System.out.println("CONTROL DEPENDENCIES:");
|
||||
for (Map.Entry<String, Set<String>> entry : controlDeps.entrySet()) {
|
||||
if (!entry.getValue().isEmpty()) {
|
||||
System.out.println(" " + entry.getKey());
|
||||
for (String dep : entry.getValue()) {
|
||||
System.out.println(" <- " + dep);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("\nDATA DEPENDENCIES:");
|
||||
for (Map.Entry<String, Set<String>> entry : dataDeps.entrySet()) {
|
||||
if (!entry.getValue().isEmpty()) {
|
||||
System.out.println(" " + entry.getKey());
|
||||
for (String dep : entry.getValue()) {
|
||||
System.out.println(" <- " + dep);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, Set<String>> getControlDependencies() {
|
||||
return new HashMap<>(controlDeps);
|
||||
}
|
||||
|
||||
public Map<String, Set<String>> getDataDependencies() {
|
||||
return new HashMap<>(dataDeps);
|
||||
}
|
||||
}
|
||||
29
tests/Example1.java
Normal file
29
tests/Example1.java
Normal file
@@ -0,0 +1,29 @@
|
||||
public class Example1 {
|
||||
public void test() {
|
||||
int x = 5;
|
||||
int y = x + 10;
|
||||
int z = y * 2;
|
||||
int result = z + x;
|
||||
}
|
||||
public void test1(int a) {
|
||||
int x = 5;
|
||||
int y = 0;
|
||||
|
||||
if (a > 10) {
|
||||
y = x + a;
|
||||
} else {
|
||||
y = x - a;
|
||||
}
|
||||
|
||||
int result = y * 2;
|
||||
}
|
||||
public void test2() {
|
||||
int sum = 0;
|
||||
int i = 0;
|
||||
|
||||
while (i < 10) {
|
||||
sum = sum + i;
|
||||
i = i + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user