tokenmodule.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 1,081 行 · 第 1/2 页
JAVA
1,081 行
switch (ch) { case -1: return -1; case ' ': case '\t': case '\r': case '\n': _lexeme.append((char) ch); while (Character.isWhitespace((ch = read()))) { _lexeme.append((char) ch); } unread(); return T_WHITESPACE; case '{': case '}': case ';': case '[': case ']': case ',': case '@': case '(': case ')': return ch; case '&': if ((ch = read()) == '&') { _lexeme.append("&&"); return T_BOOLEAN_AND; } else if (ch == '=') { _lexeme.append("&="); return T_AND_EQUAL; } else { unread(); return '&'; } case '|': if ((ch = read()) == '|') { _lexeme.append("||"); return T_BOOLEAN_OR; } else if (ch == '=') { _lexeme.append("|="); return T_OR_EQUAL; } else { unread(); return '|'; } case '?': if ((ch = read()) == '>') { _lexeme.append("?>"); _inPhp = false; return T_CLOSE_TAG; } else { unread(); return '?'; } case '/': if ((ch = read()) == '/') { _lexeme.append("//"); while ((ch = read()) >= 0 && ch != '\r' && ch != '\n') { _lexeme.append((char) ch); } unread(); return T_COMMENT; } else if (ch == '=') { _lexeme.append("/="); return T_DIV_EQUAL; } else if (ch == '*') { int token = T_COMMENT; _lexeme.append("/*"); if ((ch = read()) == '*') { token = T_DOC_COMMENT; _lexeme.append("*"); } else unread(); while ((ch = read()) >= 0) { _lexeme.append((char) ch); if (ch != '*') { } else if ((ch = read()) == '/') { _lexeme.append((char) ch); return token; } else unread(); } return token; } else { unread(); return '/'; } case '#': _lexeme.append((char) '#'); while ((ch = read()) >= 0 && ch != '\r' && ch != '\n') { _lexeme.append((char) ch); } unread(); return T_COMMENT; case '.': if ((ch = read()) == '=') { _lexeme.append(".="); return T_CONCAT_EQUAL; } else { unread(); return '.'; } case '\'': case '"': case '`': { int end = ch; _lexeme.append((char) ch); while ((ch = read()) >= 0 && ch != end) { _lexeme.append((char) ch); if (ch == '\\') { _lexeme.append((char) read()); } } if (ch > 0) _lexeme.append((char) ch); return T_CONSTANT_ENCAPSED_STRING; } case '-': if ((ch = read()) == '-') { _lexeme.append("--"); return T_DEC; } else if (ch == '=') { _lexeme.append("-="); return T_MINUS_EQUAL; } else if (ch == '>') { _lexeme.append("->"); return T_OBJECT_OPERATOR; } else { unread(); return '-'; } case '+': if ((ch = read()) == '+') { _lexeme.append("++"); return T_INC; } else if (ch == '=') { _lexeme.append("+="); return T_PLUS_EQUAL; } else { unread(); return '+'; } case '>': if ((ch = read()) == '>') { if ((ch = read()) == '=') { _lexeme.append(">>="); return T_SR_EQUAL; } else { unread(); _lexeme.append(">>"); return T_SR; } } else if (ch == '=') { _lexeme.append(">="); return T_IS_GREATER_OR_EQUAL; } else { unread(); return '>'; } case '$': if ((ch = read()) == '{') { _lexeme.append("${"); return T_DOLLAR_OPEN_CURLY_BRACES; } else if (ch == '$') { unread(); return '$'; } else if (Character.isJavaIdentifierStart(ch)) { unread(); _lexeme.append("$"); readIdentifier(); return T_VARIABLE; } else { unread(); return '$'; } case '=': if ((ch = read()) == '=') { if ((ch = read()) == '=') { _lexeme.append("==="); return T_IS_IDENTICAL; } else { unread(); _lexeme.append("=="); return T_IS_EQUAL; } } else if (ch == '>') { _lexeme.append("=>"); return T_DOUBLE_ARROW; } else { unread(); return '='; } case '!': if ((ch = read()) == '=') { if ((ch = read()) == '=') { _lexeme.append("!=="); return T_IS_NOT_IDENTICAL; } else { unread(); _lexeme.append("!="); return T_IS_NOT_EQUAL; } } else { unread(); return '!'; } case ':': if ((ch = read()) == ':') { _lexeme.append("::"); return T_DOUBLE_COLON; } else { unread(); return ':'; } case '<': if ((ch = read()) == '?') { if ((ch = read()) == '=') { _lexeme.append("<?="); return T_OPEN_TAG_WITH_ECHO; } else if (ch != 'p') { unread(); _lexeme.append("<?"); return T_OPEN_TAG; } else if ((ch = read()) != 'h') { unread(); unread(); _lexeme.append("<?"); return T_OPEN_TAG; } else if ((ch = read()) != 'p') { unread(); unread(); unread(); _lexeme.append("<?"); return T_OPEN_TAG; } else { _lexeme.append("<?php"); return T_OPEN_TAG; } } else if (ch == '%') { if ((ch = read()) == '=') { _lexeme.append("<%="); return T_OPEN_TAG_WITH_ECHO; } else { unread(); _lexeme.append("<%"); return T_OPEN_TAG; } } else if (ch == '<') { if ((ch = read()) == '=') { _lexeme.append("<<="); return T_SL_EQUAL; } else if (ch == '<') { _lexeme.append("<<<"); return T_START_HEREDOC; } else { unread(); _lexeme.append("<<"); return T_SL; } } else if (ch == '=') { _lexeme.append("<="); return T_IS_SMALLER_OR_EQUAL; } else if (ch == '>') { _lexeme.append("<>"); return T_IS_NOT_EQUAL; } else { unread(); return '<'; } case '*': if ((ch = read()) == '=') { _lexeme.append("*="); return T_MUL_EQUAL; } else { unread(); return '*'; } case '%': if ((ch = read()) == '=') { _lexeme.append("%="); return T_MOD_EQUAL; } else { unread(); return '%'; } case '^': if ((ch = read()) == '=') { _lexeme.append("^="); return T_XOR_EQUAL; } else { unread(); return '^'; } case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': unread(); return parseNumber(); default: if (Character.isJavaIdentifierStart(ch)) { unread(); readIdentifier(); int lexeme = _reservedMap.get(_lexeme.toString().toLowerCase()); if (lexeme > 0) return lexeme; return T_STRING; } _lexeme.append((char) ch); return T_BAD_CHARACTER; } } StringValue getLexeme() { return _lexeme; } private boolean parseHtml() { int ch; while ((ch = read()) >= 0) { if (ch != '<') _lexeme.append((char) ch); else if ((ch = read()) == '?' || ch == '%') { unread(); unread(); return _lexeme.length() > 0; } else { _lexeme.append((char) '<'); unread(); } } return _lexeme.length() > 0; } private void readIdentifier() { int ch; while (Character.isJavaIdentifierPart((ch = read()))) { _lexeme.append((char) ch); } unread(); } private int parseNumber() { boolean isInt = false; int ch; while ('0' <= (ch = read()) && ch <= '9' || ch == '.' || ch == 'x' || ch == 'X' || 'a' <= ch && ch <= 'f' || 'A' <= ch && ch <= 'F') { _lexeme.append((char) ch); if ('a' <= ch && ch <= 'f' || 'A' <= ch && ch <= 'f' || ch == 'x' || ch == 'X') isInt = true; } unread(); return T_LNUMBER; } private int read() { if (_i < _length) return _s.charAt(_i++); else { _i++; return -1; } } private void unread() { if (_i <= _length) _i--; } } static { _reservedMap.put("abstract", T_ABSTRACT); _reservedMap.put("array", T_ARRAY); _reservedMap.put("as", T_AS); _reservedMap.put("break", T_BREAK); _reservedMap.put("case", T_CASE); _reservedMap.put("catch", T_CATCH); _reservedMap.put("class", T_CLASS); _reservedMap.put("clone", T_CLONE); _reservedMap.put("const", T_CONST); _reservedMap.put("continue", T_CONTINUE); _reservedMap.put("declare", T_DECLARE); _reservedMap.put("default", T_DEFAULT); _reservedMap.put("do", T_DO); _reservedMap.put("echo", T_ECHO); _reservedMap.put("else", T_ELSE); _reservedMap.put("elseif", T_ELSEIF); _reservedMap.put("empty", T_EMPTY); _reservedMap.put("enddeclare", T_ENDDECLARE); _reservedMap.put("endfor", T_ENDFOR); _reservedMap.put("endforeach", T_ENDFOREACH); _reservedMap.put("endif", T_ENDIF); _reservedMap.put("endswitch", T_ENDSWITCH); _reservedMap.put("eval", T_EVAL); _reservedMap.put("exit", T_EXIT); _reservedMap.put("die", T_EXIT); _reservedMap.put("extends", T_EXTENDS); _reservedMap.put("__FILE__", T_FILE); _reservedMap.put("final", T_FINAL); _reservedMap.put("for", T_FOR); _reservedMap.put("foreach", T_FOREACH); _reservedMap.put("function", T_FUNCTION); _reservedMap.put("cfunction", T_FUNCTION); _reservedMap.put("global", T_GLOBAL); _reservedMap.put("__halt_compiler", T_HALT_COMPILER); _reservedMap.put("if", T_IF); _reservedMap.put("implements", T_IMPLEMENTS); _reservedMap.put("include", T_INCLUDE); _reservedMap.put("include_once", T_INCLUDE_ONCE); _reservedMap.put("instanceof", T_INSTANCEOF); _reservedMap.put("isset", T_ISSET); _reservedMap.put("list", T_LIST); _reservedMap.put("and", T_LOGICAL_AND); _reservedMap.put("or", T_LOGICAL_OR); _reservedMap.put("xor", T_LOGICAL_XOR); _reservedMap.put("new", T_NEW); _reservedMap.put("old_function", T_OLD_FUNCTION); _reservedMap.put("print", T_PRINT); _reservedMap.put("private", T_PRIVATE); _reservedMap.put("public", T_PUBLIC); _reservedMap.put("protected", T_PROTECTED); _reservedMap.put("require", T_REQUIRE); _reservedMap.put("require_once", T_REQUIRE_ONCE); _reservedMap.put("return", T_RETURN); _reservedMap.put("static", T_STATIC); _reservedMap.put("switch", T_SWITCH); _reservedMap.put("throw", T_THROW); _reservedMap.put("try", T_TRY); _reservedMap.put("unset", T_UNSET); _reservedMap.put("var", T_VAR); _reservedMap.put("while", T_WHILE); _reservedMap.put("__FUNCTION__", T_FUNC_C); _reservedMap.put("__CLASS__", T_CLASS_C); } static final IniDefinition INI_HIGHLIGHT_STRING = _iniDefinitions.add("highlight.string", "#DD0000", PHP_INI_ALL); static final IniDefinition INI_HIGHLIGHT_COMMENT = _iniDefinitions.add("highlight.comment", "#FF8000", PHP_INI_ALL); static final IniDefinition INI_HIGHLIGHT_KEYWORD = _iniDefinitions.add("highlight.keyword", "#007700", PHP_INI_ALL); static final IniDefinition INI_HIGHLIGHT_BG = _iniDefinitions.add("highlight.bg", "#ffffff", PHP_INI_ALL); static final IniDefinition INI_HIGHLIGHT_DEFAULT = _iniDefinitions.add("highlight.default", "#0000BB", PHP_INI_ALL); static final IniDefinition INI_HIGHLIGHT_HTML = _iniDefinitions.add("highlight.html", "#000000", PHP_INI_ALL);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?