using System; using System.Collections.Generic; namespace NsQT { // Token: 0x020000A0 RID: 160 public class CQTkReader { // Token: 0x170000A7 RID: 167 // (get) Token: 0x06000480 RID: 1152 RVA: 0x00010770 File Offset: 0x0000E970 private char NOW { get { return this.Buf[this.m_iRead]; } } // Token: 0x170000A8 RID: 168 // (get) Token: 0x06000481 RID: 1153 RVA: 0x00010784 File Offset: 0x0000E984 private char AFTER { get { return (this.m_iRead + 1 < this.Buf.Length) ? this.Buf[this.m_iRead + 1] : '\0'; } } // Token: 0x06000482 RID: 1154 RVA: 0x000107B8 File Offset: 0x0000E9B8 private bool _NEXT() { this.ADD_ID(); return this.INC_READPTR; } // Token: 0x06000483 RID: 1155 RVA: 0x000107C8 File Offset: 0x0000E9C8 private bool IsEnd() { return this.m_iRead >= this.Buf.Length; } // Token: 0x06000484 RID: 1156 RVA: 0x000107E0 File Offset: 0x0000E9E0 private bool IsAfterEnd() { return this.m_iRead + 1 >= this.Buf.Length; } // Token: 0x06000485 RID: 1157 RVA: 0x000107FC File Offset: 0x0000E9FC private bool _NEXT2() { return this._NEXT() || this._NEXT(); } // Token: 0x170000A9 RID: 169 // (get) Token: 0x06000486 RID: 1158 RVA: 0x00010814 File Offset: 0x0000EA14 private bool INC_READPTR { get { this.m_iRead++; return this.IsEnd(); } } // Token: 0x06000487 RID: 1159 RVA: 0x0001082C File Offset: 0x0000EA2C private bool IsIdChar(char c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_'; } // Token: 0x06000488 RID: 1160 RVA: 0x0001087C File Offset: 0x0000EA7C protected virtual Q_TOKEN ScanNum() { this.RESET_ID(); while (char.IsDigit(this.NOW)) { if (this._NEXT()) { //IL_35: this.END_ID(); return Q_TOKEN.QTK_NUM; } } //goto IL_35; this.END_ID(); return Q_TOKEN.QTK_NUM; } // Token: 0x06000489 RID: 1161 RVA: 0x000108C8 File Offset: 0x0000EAC8 protected virtual Q_TOKEN ScanId() { this.RESET_ID(); do { char c = this.NOW; if (!this.IsIdChar(c)) { break; } if (this.m_bUpper) { c = char.ToUpper(c); } } while (!this._NEXT()); this.END_ID(); if (this.m_pKeywords.Count > 0) { for (int num = 0; num != this.m_pKeywords.Count; num++) { if (this.m_pKeywords[num] == this.m_nowIdBuff) { return (Q_TOKEN)(num + this.m_nKeywordsTopNum); } } } return Q_TOKEN.QTK_ID; } // Token: 0x0600048A RID: 1162 RVA: 0x00010978 File Offset: 0x0000EB78 protected virtual Q_TOKEN ScanWSym() { this.RESET_ID(); if (!this.m_bWSym) { char now = this.NOW; switch (now) { case '%': this._NEXT(); return Q_TOKEN.QTK_PERCENT; case '&': this._NEXT(); return Q_TOKEN.QTK_AND; default: switch (now) { case ':': this._NEXT(); return Q_TOKEN.QTK_COLON; default: if (now == '!') { this._NEXT(); return Q_TOKEN.QTK_EXCLAM; } if (now == '|') { this._NEXT(); return Q_TOKEN.QTK_OR; } break; case '<': this._NEXT(); return Q_TOKEN.QTK_LESS; case '=': this._NEXT(); return Q_TOKEN.QTK_EQU; case '>': this._NEXT(); return Q_TOKEN.QTK_GRAT; } break; case '*': this._NEXT(); return Q_TOKEN.QTK_ASTERISK; case '+': this._NEXT(); return Q_TOKEN.QTK_PLUS; case '-': this._NEXT(); return Q_TOKEN.QTK_MINUS; case '/': this._NEXT(); return Q_TOKEN.QTK_SLASH; } } else { char now = this.NOW; switch (now) { case '%': if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_PER_EQU; } this._NEXT(); return Q_TOKEN.QTK_PERCENT; case '&': if (this.AFTER == '&') { this._NEXT2(); return Q_TOKEN.QTK_W_AND; } this._NEXT(); return Q_TOKEN.QTK_AND; default: switch (now) { case ':': if (this.AFTER == ':') { this._NEXT2(); return Q_TOKEN.QTK_W_COLON; } this._NEXT(); return Q_TOKEN.QTK_COLON; default: if (now != '!') { if (now == '|') { if (this.AFTER == '|') { this._NEXT2(); return Q_TOKEN.QTK_W_OR; } this._NEXT(); return Q_TOKEN.QTK_OR; } } else { if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_NOTEQU; } this._NEXT(); return Q_TOKEN.QTK_EXCLAM; } break; case '<': if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_LESS_EQU; } this._NEXT(); return Q_TOKEN.QTK_LESS; case '=': if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_W_EQU; } this._NEXT(); return Q_TOKEN.QTK_EQU; case '>': if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_GRAT_EQU; } this._NEXT(); return Q_TOKEN.QTK_GRAT; } break; case '*': if (this.AFTER == '/') { this._NEXT2(); return Q_TOKEN.QTK_REM_R; } if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_ASTERISK_EQU; } this._NEXT(); return Q_TOKEN.QTK_ASTERISK; case '+': if (this.AFTER == '+') { this._NEXT2(); return Q_TOKEN.QTK_W_PLUS; } if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_PLUS_EQU; } this._NEXT(); return Q_TOKEN.QTK_PLUS; case '-': if (this.AFTER == '-') { this._NEXT2(); return Q_TOKEN.QTK_W_MINUS; } if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_MINUS_EQU; } this._NEXT(); return Q_TOKEN.QTK_MINUS; case '/': if (this.AFTER == '/') { this._NEXT2(); return Q_TOKEN.QTK_W_SLASH; } if (this.AFTER == '*') { this._NEXT2(); return Q_TOKEN.QTK_REM_L; } if (this.AFTER == '=') { this._NEXT2(); return Q_TOKEN.QTK_SLASH_EQU; } this._NEXT(); return Q_TOKEN.QTK_SLASH; } } return Q_TOKEN.QTK_ERROR; } // Token: 0x0600048B RID: 1163 RVA: 0x00010CF0 File Offset: 0x0000EEF0 protected virtual Q_TOKEN ScanHex() { this.RESET_ID(); for (;;) { switch (char.ToUpper(this.NOW)) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': if (!this._NEXT()) { continue; } break; } break; } this.END_ID(); return Q_TOKEN.QTK_HEXNUM; } // Token: 0x0600048C RID: 1164 RVA: 0x00010DA4 File Offset: 0x0000EFA4 public virtual void SetSource(string text) { this.Buf = text; this.m_iRead = 0; } // Token: 0x0600048D RID: 1165 RVA: 0x00010DB4 File Offset: 0x0000EFB4 public virtual void SetReadPtr(int i) { this.m_iRead = i; } // Token: 0x0600048E RID: 1166 RVA: 0x00010DC0 File Offset: 0x0000EFC0 public virtual void Enable2byteSym(bool bWSym) { this.m_bWSym = bWSym; } // Token: 0x0600048F RID: 1167 RVA: 0x00010DCC File Offset: 0x0000EFCC public virtual void EnableUpperId(bool bUpper) { this.m_bUpper = bUpper; } // Token: 0x06000490 RID: 1168 RVA: 0x00010DD8 File Offset: 0x0000EFD8 public virtual void SetKeywordList(string[] ppNames, int TopNum) { this.m_pKeywords.AddRange(ppNames); this.m_nKeywordsTopNum = TopNum; } // Token: 0x06000491 RID: 1169 RVA: 0x00010DF0 File Offset: 0x0000EFF0 public virtual List GetIdBuff() { return this.m_pIdBuff; } // Token: 0x06000492 RID: 1170 RVA: 0x00010DF8 File Offset: 0x0000EFF8 public virtual string GetTokenChar(Q_TOKEN nTk) { switch (nTk) { case Q_TOKEN.QTK_SPACE: return " "; case Q_TOKEN.QTK_RETURN: return "\n"; case Q_TOKEN.QTK_PARENTH_L: return "("; case Q_TOKEN.QTK_PARENTH_R: return ")"; case Q_TOKEN.QTK_BRACE_L: return "{"; case Q_TOKEN.QTK_BRACE_R: return "}"; case Q_TOKEN.QTK_BRACKET_L: return "["; case Q_TOKEN.QTK_BRACKET_R: return "]"; case Q_TOKEN.QTK_COLON: return ":"; case Q_TOKEN.QTK_SEMICOLON: return ";"; case Q_TOKEN.QTK_W_COLON: return "::"; case Q_TOKEN.QTK_COMMA: return ","; case Q_TOKEN.QTK_POINT: return "."; case Q_TOKEN.QTK_W_QUOT: return "\""; case Q_TOKEN.QTK_S_QUOT: return "'"; case Q_TOKEN.QTK_EQU: return "="; case Q_TOKEN.QTK_EXCLAM: return "!"; case Q_TOKEN.QTK_PLUS: return "+"; case Q_TOKEN.QTK_MINUS: return "-"; case Q_TOKEN.QTK_ASTERISK: return "*"; case Q_TOKEN.QTK_SLASH: return "/"; case Q_TOKEN.QTK_W_PLUS: return "++"; case Q_TOKEN.QTK_W_MINUS: return "--"; case Q_TOKEN.QTK_PLUS_EQU: return "+="; case Q_TOKEN.QTK_MINUS_EQU: return "-="; case Q_TOKEN.QTK_ASTERISK_EQU: return "*="; case Q_TOKEN.QTK_SLASH_EQU: return "/="; case Q_TOKEN.QTK_W_EQU: return "=="; case Q_TOKEN.QTK_NOTEQU: return "!="; case Q_TOKEN.QTK_LESS: return "<"; case Q_TOKEN.QTK_GRAT: return ">"; case Q_TOKEN.QTK_LESS_EQU: return "<="; case Q_TOKEN.QTK_GRAT_EQU: return ">="; case Q_TOKEN.QTK_OR: return "|"; case Q_TOKEN.QTK_AND: return "&"; case Q_TOKEN.QTK_W_AND: return "&&"; case Q_TOKEN.QTK_W_OR: return "||"; case Q_TOKEN.QTK_YEN: return "\\"; case Q_TOKEN.QTK_AMARK: return "@"; case Q_TOKEN.QTK_SHARP: return "#"; case Q_TOKEN.QTK_QUESTION: return "?"; case Q_TOKEN.QTK_DOLLAR: return "$"; case Q_TOKEN.QTK_PERCENT: return "%"; case Q_TOKEN.QTK_REM_L: return "/*"; case Q_TOKEN.QTK_REM_R: return "*/"; case Q_TOKEN.QTK_W_SLASH: return "//"; case Q_TOKEN.QTK_PER_EQU: return "%="; default: return null; } } // Token: 0x06000493 RID: 1171 RVA: 0x00010FEC File Offset: 0x0000F1EC public virtual Q_TOKEN Scan() { this.RESET_ID(); while (!this.IsEnd()) { char now = this.NOW; switch (now) { case ' ': this._NEXT(); break; default: switch (now) { case ';': this._NEXT(); return Q_TOKEN.QTK_SEMICOLON; default: switch (now) { case '[': this._NEXT(); return Q_TOKEN.QTK_BRACKET_L; case '\\': this._NEXT(); return Q_TOKEN.QTK_YEN; case ']': this._NEXT(); return Q_TOKEN.QTK_BRACKET_R; case '^': this._NEXT(); return Q_TOKEN.QTK_OTHER_SYM; default: switch (now) { case '\t': this._NEXT(); break; case '\n': this._NEXT(); return Q_TOKEN.QTK_RETURN; default: switch (now) { case '{': this._NEXT(); return Q_TOKEN.QTK_BRACE_L; default: { if (now == '\0') { return Q_TOKEN.QTK_END; } if (now == '・') { this._NEXT(); return Q_TOKEN.QTK_OTHER_SYM; } Q_TOKEN q_TOKEN = this.ScanWSym(); if (q_TOKEN != Q_TOKEN.QTK_ERROR) { return q_TOKEN; } if (!this.IsAfterEnd() && this.NOW == '0' && (this.AFTER == 'x' || this.AFTER == 'X')) { this._NEXT2(); return this.ScanHex(); } if (char.IsDigit(this.NOW)) { return this.ScanNum(); } return this.ScanId(); } case '}': this._NEXT(); return Q_TOKEN.QTK_BRACE_R; } break; case '\r': if (this.AFTER == '\n') { this._NEXT2(); return Q_TOKEN.QTK_RETURN; } this._NEXT(); return Q_TOKEN.QTK_RETURN; } break; case '`': this._NEXT(); return Q_TOKEN.QTK_OTHER_SYM; } break; case '?': this._NEXT(); return Q_TOKEN.QTK_QUESTION; case '@': this._NEXT(); return Q_TOKEN.QTK_AMARK; } break; case '"': this._NEXT(); return Q_TOKEN.QTK_W_QUOT; case '#': this._NEXT(); return Q_TOKEN.QTK_SHARP; case '$': this._NEXT(); return Q_TOKEN.QTK_DOLLAR; case '\'': this._NEXT(); return Q_TOKEN.QTK_S_QUOT; case '(': this._NEXT(); return Q_TOKEN.QTK_PARENTH_L; case ')': this._NEXT(); return Q_TOKEN.QTK_PARENTH_R; case ',': this._NEXT(); return Q_TOKEN.QTK_COMMA; case '.': this._NEXT(); return Q_TOKEN.QTK_POINT; } } return Q_TOKEN.QTK_END; } // Token: 0x06000494 RID: 1172 RVA: 0x00011254 File Offset: 0x0000F454 public virtual Q_TOKEN ScanString() { this.RESET_ID(); while (this.NOW != '"') { if (this.IsEnd()) { this.END_ID(); return Q_TOKEN.QTK_ERROR; } if (this.NOW == '\n' || this.NOW == '\r' || this.NOW == '\0') { this.END_ID(); return Q_TOKEN.QTK_ERROR; } if (this._NEXT()) { //IL_7D: this.END_ID(); return Q_TOKEN.QTK_STR; } } if (this.INC_READPTR) { //goto IL_7D; this.END_ID(); return Q_TOKEN.QTK_STR; } //goto IL_7D; this.END_ID(); return Q_TOKEN.QTK_STR; } // Token: 0x06000495 RID: 1173 RVA: 0x000112E8 File Offset: 0x0000F4E8 public virtual Q_TOKEN ScanString(Q_TOKEN nEndTk) { string tokenChar = this.GetTokenChar(nEndTk); if (tokenChar == null) { return Q_TOKEN.QTK_ERROR; } this.RESET_ID(); for (;;) { if (this.NOW == tokenChar[0]) { if (tokenChar.Length <= 1) { goto IL_7B; } if (!this.IsAfterEnd() && this.AFTER == tokenChar[1]) { break; } } if (this.IsEnd()) { goto Block_9; } if (this.NOW == '\n' || this.NOW == '\r' || this.NOW == '\0') { goto IL_C8; } if (this._NEXT()) { goto Block_12; } } if (this.INC_READPTR) { goto IL_E5; } if (this.INC_READPTR) { goto IL_E5; } goto IL_E5; IL_7B: if (this.INC_READPTR) { goto IL_E5; } goto IL_E5; Block_9: this.RESET_ID(); return Q_TOKEN.QTK_ERROR; IL_C8: this.RESET_ID(); return Q_TOKEN.QTK_ERROR; Block_12: IL_E5: this.RESET_ID(); return Q_TOKEN.QTK_STR; } // Token: 0x06000496 RID: 1174 RVA: 0x000113E4 File Offset: 0x0000F5E4 public virtual bool LineSkip() { while (this.NOW != '\n') { if (this.NOW == '\r') { if (!this.INC_READPTR) { if (this.NOW == '\n' && this.INC_READPTR) { } } } else if (this.NOW != '\0') { if (!this.INC_READPTR) { continue; } } return true; } if (this.INC_READPTR) { return true; } return true; } // Token: 0x06000497 RID: 1175 RVA: 0x00011478 File Offset: 0x0000F678 public virtual Q_TOKEN GetLineText() { this.RESET_ID(); while (this.NOW != '\n') { if (this.NOW == '\r') { if (!this.INC_READPTR) { if (this.NOW == '\n' && this.INC_READPTR) { } } } else if (this.NOW != '\0') { if (!this._NEXT()) { continue; } } //IL_8C: this.RESET_ID(); return Q_TOKEN.QTK_STR; } if (this.INC_READPTR) { //goto IL_8C; this.RESET_ID(); return Q_TOKEN.QTK_STR; } //goto IL_8C; this.RESET_ID(); return Q_TOKEN.QTK_STR; } // Token: 0x06000498 RID: 1176 RVA: 0x00011518 File Offset: 0x0000F718 private void RESET_ID() { this.END_ID(); this.m_nowIdBuff = string.Empty; } // Token: 0x06000499 RID: 1177 RVA: 0x0001152C File Offset: 0x0000F72C private void ADD_ID() { this.m_nowIdBuff += this.Buf[this.m_iRead]; this.m_isAddYet = true; } // Token: 0x0600049A RID: 1178 RVA: 0x00011568 File Offset: 0x0000F768 private void END_ID() { if (this.m_isAddYet) { this.m_pIdBuff.Add(this.m_nowIdBuff); } this.m_isAddYet = false; } // Token: 0x04000368 RID: 872 private string Buf; // Token: 0x04000369 RID: 873 protected int m_iRead; // Token: 0x0400036A RID: 874 protected bool m_bWSym; // Token: 0x0400036B RID: 875 protected bool m_bUpper; // Token: 0x0400036C RID: 876 protected List m_pIdBuff; // Token: 0x0400036D RID: 877 private string m_nowIdBuff; // Token: 0x0400036E RID: 878 private bool m_isAddYet; // Token: 0x0400036F RID: 879 protected List m_pSum; // Token: 0x04000370 RID: 880 protected List m_pKeywords; // Token: 0x04000371 RID: 881 protected int m_nKeywordsTopNum; } }