📄 csharplexer.cs
字号:
// $ANTLR 2.7.2: "csharp.g" -> "CSharpLexer.cs"$
using CommonAST = antlr.CommonAST; //DDW.CSharp.Parse.LineNumberAST;
using System.Collections;
namespace DDW.CSharp.Parse
{
// Generate header specific to lexer CSharp file
using System;
using Stream = System.IO.Stream;
using TextReader = System.IO.TextReader;
using Hashtable = System.Collections.Hashtable;
using TokenStreamException = antlr.TokenStreamException;
using TokenStreamIOException = antlr.TokenStreamIOException;
using TokenStreamRecognitionException = antlr.TokenStreamRecognitionException;
using CharStreamException = antlr.CharStreamException;
using CharStreamIOException = antlr.CharStreamIOException;
using ANTLRException = antlr.ANTLRException;
using CharScanner = antlr.CharScanner;
using InputBuffer = antlr.InputBuffer;
using ByteBuffer = antlr.ByteBuffer;
using CharBuffer = antlr.CharBuffer;
using Token = antlr.Token;
using CommonToken = antlr.CommonToken;
using RecognitionException = antlr.RecognitionException;
using NoViableAltForCharException = antlr.NoViableAltForCharException;
using MismatchedCharException = antlr.MismatchedCharException;
using TokenStream = antlr.TokenStream;
using LexerSharedInputState = antlr.LexerSharedInputState;
using BitSet = antlr.collections.impl.BitSet;
public class CSharpLexer : antlr.CharScanner , TokenStream
{
public const int EOF = 1;
public const int NULL_TREE_LOOKAHEAD = 3;
public const int CompileUnit = 4;
public const int UsingNode = 5;
public const int NamespaceNode = 6;
public const int ClassNode = 7;
public const int InterfaceNode = 8;
public const int StructNode = 9;
public const int EnumNode = 10;
public const int DelegateNode = 11;
public const int BaseTypes = 12;
public const int BooleanLiteral = 13;
public const int IntegerLiteral = 14;
public const int RealLiteral = 15;
public const int CharLiteral = 16;
public const int StringLiteral = 17;
public const int NullLiteral = 18;
public const int Types = 19;
public const int Members = 20;
public const int MethodNode = 21;
public const int FieldNode = 22;
public const int PropertyNode = 23;
public const int EventNode = 24;
public const int ConstantNode = 25;
public const int IndexerNode = 26;
public const int OperatorNode = 27;
public const int ConstructorNode = 28;
public const int DestructorNode = 29;
public const int AccessorNode = 30;
public const int EnumMemberNode = 31;
public const int Ident = 32;
public const int QualIdent = 33;
public const int TypeRef = 34;
public const int BuiltInType = 35;
public const int Args = 36;
public const int Arg = 37;
public const int DeclArgs = 38;
public const int DeclArg = 39;
public const int ArgDirection = 40;
public const int Statements = 41;
public const int ExprStmt = 42;
public const int CommentNode = 43;
public const int TryCatchFinallyStmt = 44;
public const int TryStmt = 45;
public const int CatchClause = 46;
public const int FinallyStmt = 47;
public const int IfStmt = 48;
public const int SwitchStmt = 49;
public const int SwitchSection = 50;
public const int IterationStmt = 51;
public const int InitStmt = 52;
public const int IncStmt = 53;
public const int ForEachStmt = 54;
public const int GotoStmt = 55;
public const int ReturnStmt = 56;
public const int BreakStmt = 57;
public const int ContinueStmt = 58;
public const int ThrowStmt = 59;
public const int CheckedStmt = 60;
public const int UncheckedStmt = 61;
public const int LockStmt = 62;
public const int UsingStmt = 63;
public const int LabeledStmt = 64;
public const int VariableDeclStmt = 65;
public const int ConstantDeclStmt = 66;
public const int Expressions = 67;
public const int Expression = 68;
public const int PrimaryExpression = 69;
public const int SubExpr = 70;
public const int PrimitiveExpr = 71;
public const int CastExpr = 72;
public const int ThisRefExpr = 73;
public const int BaseRefExpr = 74;
public const int MemberAccessExpr = 75;
public const int AssignExpr = 76;
public const int UnaryExpr = 77;
public const int BinaryExpr = 78;
public const int TernaryExpr = 79;
public const int ArrayCreateExpr = 80;
public const int ObjectCreateExpr = 81;
public const int TypeOfExpr = 82;
public const int PostfixExpr = 83;
public const int CheckedExpr = 84;
public const int UncheckedExpr = 85;
public const int InvokeExpr = 86;
public const int IndexerExpr = 87;
public const int ArrayRankExpr = 88;
public const int ArrayInitExpr = 89;
public const int Op = 90;
public const int Declarator = 91;
public const int CustomAttributes = 92;
public const int CustomAttribute = 93;
public const int ModifierAttributes = 94;
public const int IDENTIFIER = 95;
public const int SINGLE_LINE_COMMENT = 96;
public const int DELIMITED_COMMENT = 97;
public const int INTEGER_LITERAL = 98;
public const int HEXADECIMAL_INTEGER_LITERAL = 99;
public const int REAL_LITERAL = 100;
public const int CHARACTER_LITERAL = 101;
public const int STRING_LITERAL = 102;
public const int TRUE = 103;
public const int FALSE = 104;
public const int NULL = 105;
public const int DOT = 106;
public const int OBJECT = 107;
public const int STRING = 108;
public const int BOOL = 109;
public const int DECIMAL = 110;
public const int SBYTE = 111;
public const int BYTE = 112;
public const int SHORT = 113;
public const int USHORT = 114;
public const int INT = 115;
public const int UINT = 116;
public const int LONG = 117;
public const int ULONG = 118;
public const int CHAR = 119;
public const int FLOAT = 120;
public const int DOUBLE = 121;
public const int LBRACK = 122;
public const int COMMA = 123;
public const int RBRACK = 124;
public const int LPAREN = 125;
public const int RPAREN = 126;
public const int THIS = 127;
public const int BASE = 128;
public const int INC = 129;
public const int DEC = 130;
public const int NEW = 131;
public const int TYPEOF = 132;
public const int VOID = 133;
public const int CHECKED = 134;
public const int UNCHECKED = 135;
public const int PLUS = 136;
public const int MINUS = 137;
public const int LNOT = 138;
public const int BNOT = 139;
public const int STAR = 140;
public const int DIV = 141;
public const int MOD = 142;
public const int SL = 143;
public const int SR = 144;
public const int LTHAN = 145;
public const int GTHAN = 146;
public const int LE = 147;
public const int GE = 148;
public const int IS = 149;
public const int AS = 150;
public const int EQUAL = 151;
public const int NOT_EQUAL = 152;
public const int BAND = 153;
public const int BXOR = 154;
public const int BOR = 155;
public const int LAND = 156;
public const int LOR = 157;
public const int QUESTION = 158;
public const int COLON = 159;
public const int ASSIGN = 160;
public const int PLUS_ASN = 161;
public const int MINUS_ASN = 162;
public const int STAR_ASN = 163;
public const int DIV_ASN = 164;
public const int MOD_ASN = 165;
public const int BAND_ASN = 166;
public const int BOR_ASN = 167;
public const int BXOR_ASN = 168;
public const int SL_ASN = 169;
public const int SR_ASN = 170;
public const int LBRACE = 171;
public const int RBRACE = 172;
public const int SEMI = 173;
public const int CONST = 174;
public const int IF = 175;
public const int ELSE = 176;
public const int SWITCH = 177;
public const int CASE = 178;
public const int DEFAULT = 179;
public const int WHILE = 180;
public const int DO = 181;
public const int FOR = 182;
public const int FOREACH = 183;
public const int IN = 184;
public const int BREAK = 185;
public const int CONTINUE = 186;
public const int GOTO = 187;
public const int RETURN = 188;
public const int THROW = 189;
public const int LOCK = 190;
public const int USING = 191;
public const int TRY = 192;
public const int CATCH = 193;
public const int FINALLY = 194;
public const int NAMESPACE = 195;
public const int CLASS = 196;
public const int PUBLIC = 197;
public const int PROTECTED = 198;
public const int INTERNAL = 199;
public const int PRIVATE = 200;
public const int ABSTRACT = 201;
public const int SEALED = 202;
public const int STATIC = 203;
public const int READONLY = 204;
public const int VOLATILE = 205;
public const int VIRTUAL = 206;
public const int OVERRIDE = 207;
public const int EXTERN = 208;
public const int PARAMS = 209;
public const int REF = 210;
public const int OUT = 211;
public const int EVENT = 212;
public const int OPERATOR = 213;
public const int IMPLICIT = 214;
public const int EXPLICIT = 215;
public const int STRUCT = 216;
public const int INTERFACE = 217;
public const int ENUM = 218;
public const int DELEGATE = 219;
public const int ASSEMBLY = 220;
public const int FIELD = 221;
public const int METHOD = 222;
public const int MODULE = 223;
public const int PARAM = 224;
public const int PROPERTY = 225;
public const int TYPE = 226;
public const int SIZEOF = 227;
public const int STACKALLOC = 228;
public const int FIXED = 229;
public const int UNSAFE = 230;
public const int NEW_LINE = 231;
public const int NEW_LINE_CHARACTER = 232;
public const int NOT_NEW_LINE = 233;
public const int WHITESPACE = 234;
public const int UNICODE_ESCAPE_SEQUENCE = 235;
public const int IDENTIFIER_START_CHARACTER = 236;
public const int IDENTIFIER_PART_CHARACTER = 237;
public const int NUMERIC_LITERAL = 238;
public const int DECIMAL_DIGIT = 239;
public const int INTEGER_TYPE_SUFFIX = 240;
public const int HEX_DIGIT = 241;
public const int EXPONENT_PART = 242;
public const int SIGN = 243;
public const int REAL_TYPE_SUFFIX = 244;
public const int CHARACTER = 245;
public const int SINGLE_CHARACTER = 246;
public const int SIMPLE_ESCAPE_SEQUENCE = 247;
public const int HEXADECIMAL_ESCAPE_SEQUENCE = 248;
public const int REGULAR_STRING_LITERAL = 249;
public const int REGULAR_STRING_LITERAL_CHARACTER = 250;
public const int SINGLE_REGULAR_STRING_LITERAL_CHARACTER = 251;
public const int VERBATIM_STRING_LITERAL = 252;
public const int BSR = 253;
public const int BSR_ASN = 254;
public const int HASH = 255;
public const int QUOTE = 256;
public const int PP_NEW_LINE = 257;
public const int PP_WHITESPACE = 258;
public const int PP_DIRECTIVE = 259;
public const int PP_DECLARATION = 260;
public const int PP_REGION = 261;
public const int PP_MESSAGE = 262;
public const int CONDITIONAL_SYMBOL = 263;
public const int PPT_DEFINE = 264;
public const int PPT_UNDEF = 265;
public const int PPT_REGION = 266;
public const int PPT_END_REGION = 267;
public CSharpLexer(Stream ins) : this(new ByteBuffer(ins))
{
}
public CSharpLexer(TextReader r) : this(new CharBuffer(r))
{
}
public CSharpLexer(InputBuffer ib) : this(new LexerSharedInputState(ib))
{
}
public CSharpLexer(LexerSharedInputState state) : base(state)
{
initialize();
}
private void initialize()
{
caseSensitiveLiterals = true;
setCaseSensitive(true);
literals = new Hashtable();
literals.Add("abstract", 201);
literals.Add("void", 133);
literals.Add("static", 203);
literals.Add("stackalloc", 228);
literals.Add("ref", 210);
literals.Add("break", 185);
literals.Add("readonly", 204);
literals.Add("continue", 186);
literals.Add("catch", 193);
literals.Add("for", 182);
literals.Add("else", 176);
literals.Add("is", 149);
literals.Add("byte", 112);
literals.Add("interface", 217);
literals.Add("as", 150);
literals.Add("float", 120);
literals.Add("typeof", 132);
literals.Add("foreach", 183);
literals.Add("uint", 116);
literals.Add("method", 222);
literals.Add("explicit", 215);
literals.Add("private", 200);
literals.Add("param", 224);
literals.Add("throw", 189);
literals.Add("ulong", 118);
literals.Add("short", 113);
literals.Add("long", 117);
literals.Add("try", 192);
literals.Add("in", 184);
literals.Add("internal", 199);
literals.Add("operator", 213);
literals.Add("switch", 177);
literals.Add("sbyte", 111);
literals.Add("assembly", 220);
literals.Add("virtual", 206);
literals.Add("this", 127);
literals.Add("ushort", 114);
literals.Add("null", 105);
literals.Add("decimal", 110);
literals.Add("fixed", 229);
literals.Add("object", 107);
literals.Add("public", 197);
literals.Add("delegate", 219);
literals.Add("false", 104);
literals.Add("case", 178);
literals.Add("implicit", 214);
literals.Add("true", 103);
literals.Add("bool", 109);
literals.Add("do", 181);
literals.Add("checked", 134);
literals.Add("base", 128);
literals.Add("override", 207);
literals.Add("enum", 218);
literals.Add("field", 221);
literals.Add("protected", 198);
literals.Add("finally", 194);
literals.Add("if", 175);
literals.Add("char", 119);
literals.Add("const", 174);
literals.Add("unchecked", 135);
literals.Add("string", 108);
literals.Add("module", 223);
literals.Add("return", 188);
literals.Add("default", 179);
literals.Add("new", 131);
literals.Add("event", 212);
literals.Add("int", 115);
literals.Add("unsafe", 230);
literals.Add("params", 209);
literals.Add("property", 225);
literals.Add("goto", 187);
literals.Add("using", 191);
literals.Add("class", 196);
literals.Add("sizeof", 227);
literals.Add("namespace", 195);
literals.Add("struct", 216);
literals.Add("sealed", 202);
literals.Add("while", 180);
literals.Add("extern", 208);
literals.Add("type", 226);
literals.Add("double", 121);
literals.Add("lock", 190);
literals.Add("out", 211);
}
public new Token nextToken() //throws TokenStreamException
{
Token theRetToken = null;
tryAgain:
for (;;)
{
Token _token = null;
int _ttype = Token.INVALID_TYPE;
resetText();
try // for char stream error handling
{
try // for lexical error handling
{
switch ( LA(1) )
{
case '\t': case '\n': case '\u000b': case '\u000c':
case '\r': case ' ': case '\u2028': case '\u2029':
{
mWHITESPACE(true);
theRetToken = returnToken_;
break;
}
case '\\':
{
mUNICODE_ESCAPE_SEQUENCE(true);
theRetToken = returnToken_;
break;
}
case '$': case 'A': case 'B': case 'C':
case 'D': case 'E': case 'F': case 'G':
case 'H': case 'I': case 'J': case 'K':
case 'L': case 'M': case 'N': case 'O':
case 'P': case 'Q': case 'R': case 'S':
case 'T': case 'U': case 'V': case 'W':
case 'X': case 'Y': case 'Z': case '_':
case 'a': case 'b': case 'c': case 'd':
case 'e': case 'f': case 'g': case 'h':
case 'i': case 'j': case 'k': case 'l':
case 'm': case 'n': case 'o': case 'p':
case 'q': case 'r': case 's': case 't':
case 'u': case 'v': case 'w': case 'x':
case 'y': case 'z':
{
mIDENTIFIER(true);
theRetToken = returnToken_;
break;
}
case '\'':
{
mCHARACTER_LITERAL(true);
theRetToken = returnToken_;
break;
}
case '{':
{
mLBRACE(true);
theRetToken = returnToken_;
break;
}
case '}':
{
mRBRACE(true);
theRetToken = returnToken_;
break;
}
case '[':
{
mLBRACK(true);
theRetToken = returnToken_;
break;
}
case ']':
{
mRBRACK(true);
theRetToken = returnToken_;
break;
}
case '(':
{
mLPAREN(true);
theRetToken = returnToken_;
break;
}
case ')':
{
mRPAREN(true);
theRetToken = returnToken_;
break;
}
case '~':
{
mBNOT(true);
theRetToken = returnToken_;
break;
}
case ',':
{
mCOMMA(true);
theRetToken = returnToken_;
break;
}
case ':':
{
mCOLON(true);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -