phptokenmarker.java
来自「java写的多功能文件编辑器」· Java 代码 · 共 562 行 · 第 1/2 页
JAVA
562 行
{ addToken(lastWhitespace - lastOffset + 1, token, true); addToken(i - lastWhitespace - 1, Token.METHOD, true); } addToken(1, Token.OPERATOR, true); token = SCRIPT; lastOffset = lastKeyword = i1; lastWhitespace = i; } break; case '"': doKeyword(line, i, c); if (backslash) backslash = false; else { addToken(i - lastOffset, token, true); lastOffset = lastKeyword = i; token = Token.LITERAL1; } break; case '\'': doKeyword(line, i, c); if (backslash) backslash = false; else { addToken(i - lastOffset, token, true); lastOffset = lastKeyword = i; token = Token.LITERAL2; } break; case '#': if (doKeyword(line, i, c)) break; addToken(i - lastOffset, token, true); addToken(length - i, Token.COMMENT2, true); lastOffset = lastKeyword = length; break loop; case '/': backslash = false; doKeyword(line, i, c); if (length - i > 1)/*This is the same as if(length > i + 1) */ { if (array[i1] == '/') { addToken(i - lastOffset, token, true); addToken(length - i, Token.COMMENT1, true); lastOffset = lastKeyword = length; break loop; } else if (array[i1] == '*') { addToken(i - lastOffset, token, true); lastOffset = lastKeyword = i; token = Token.COMMENT2; } else { // / operator addToken(i - lastOffset, token, true); addToken(1, Token.OPERATOR, true); lastOffset = lastKeyword = i1; } } else { // / operator doKeyword(line, i, c); addToken(1, Token.OPERATOR, true); lastOffset = lastKeyword = i1; } break; case '$': doKeyword(line, i, c); if (backslash) backslash = false; else { addToken(i - lastOffset, token, true); token = PHP_VARIABLE; lastOffset = lastKeyword = i; } break; default: backslash = false; if (!Character.isLetterOrDigit(c) && c != '_')// && c != '$') { doKeyword(line, i, c); if (CTokenMarker.METHOD_DELIMITERS.indexOf(c) != -1) lastWhitespace = i; if (c != ' ') { addToken(i - lastOffset, token, true); addToken(1, Token.OPERATOR, true); lastOffset = lastKeyword = i1; } } break; } break; case PHP_VARIABLE: if (!Character.isLetterOrDigit(c) && c != '_') { addToken(i - lastOffset, Token.LITERAL2, true); addToken(1, Token.OPERATOR, true); lastOffset = lastKeyword = i1; lastWhitespace = i; token = SCRIPT; } break; case Token.LITERAL1: // Script "..." if (backslash) backslash = false; else if (c == '"') { addToken(i1 - lastOffset, Token.LITERAL1, true); lastOffset = lastKeyword = i1; lastWhitespace = i; token = SCRIPT; } break; case Token.LITERAL2: // Script '...' if (backslash) backslash = false; else if (c == '\'') { addToken(i1 - lastOffset, Token.LITERAL2, true); lastOffset = lastKeyword = i1; lastWhitespace = i; token = SCRIPT; } break; case Token.COMMENT2: // Inside a Script comment backslash = false; if (c == '*' && length - i > 1 && array[i1] == '/') { addToken(i + 2 - lastOffset, Token.COMMENT2, true); i += 1; lastOffset = lastKeyword = i + 1; lastWhitespace = i; token = SCRIPT; } break; default: throw new InternalError("Invalid state: " + token); } } switch (token) { case Token.LITERAL1: addToken(length - lastOffset, Token.LITERAL1); break; case Token.LITERAL2: addToken(length - lastOffset, Token.LITERAL2); break; case Token.KEYWORD2: addToken(length - lastOffset, Token.INVALID); token = Token.NULL; break; case SCRIPT: doKeyword(line, length, '\0'); addToken(length - lastOffset, Token.NULL, true); break; case Token.COMMENT2: addToken(length - lastOffset, Token.COMMENT1); break; case INSIDE_TAG: break; case HTML_LITERAL_QUOTE: case HTML_LITERAL_NO_QUOTE: addToken(length - lastOffset, Token.LITERAL1); break; case PHP_VARIABLE: addToken(length - lastOffset, Token.KEYWORD3, true); token = SCRIPT; break; case Token.METHOD: case Token.OPERATOR: addToken(length - lastOffset, token, true); token = SCRIPT; break; default: addToken(length - lastOffset, token); break; } return token; } // private members private static KeywordMap keywords; private int lastOffset; private int lastKeyword; private int lastWhitespace; private boolean script = false; static { keywords = new KeywordMap(false); keywords.add("function", Token.KEYWORD2); keywords.add("class", Token.KEYWORD2); keywords.add("var", Token.KEYWORD2); keywords.add("global", Token.KEYWORD2); keywords.add("require", Token.KEYWORD2); keywords.add("require_once", Token.KEYWORD2); keywords.add("include", Token.KEYWORD2); keywords.add("include_once", Token.KEYWORD2); keywords.add("and", Token.KEYWORD1); keywords.add("or", Token.KEYWORD1); keywords.add("else", Token.KEYWORD1); keywords.add("elseif", Token.KEYWORD1); keywords.add("do", Token.KEYWORD1); keywords.add("as", Token.KEYWORD1); keywords.add("for", Token.KEYWORD1); keywords.add("foreach", Token.KEYWORD1); keywords.add("if", Token.KEYWORD1); keywords.add("endif", Token.KEYWORD1); keywords.add("in", Token.KEYWORD1); keywords.add("new", Token.KEYWORD1); keywords.add("return", Token.KEYWORD1); keywords.add("while", Token.KEYWORD1); keywords.add("endwhile", Token.KEYWORD1); keywords.add("with", Token.KEYWORD1); keywords.add("break", Token.KEYWORD1); keywords.add("switch", Token.KEYWORD1); keywords.add("case", Token.KEYWORD1); keywords.add("continue", Token.KEYWORD1); keywords.add("default", Token.KEYWORD1); keywords.add("echo", Token.KEYWORD1); keywords.add("false", Token.KEYWORD1); keywords.add("this", Token.KEYWORD1); keywords.add("true", Token.KEYWORD1); keywords.add("array", Token.KEYWORD1); keywords.add("extends", Token.KEYWORD1); } protected void addToken(int i, byte id) { addToken(i, id, false); } protected void addToken(int i, byte id, boolean highlighBackground) { if (id == SCRIPT) id = Token.NULL; super.addToken(i, id, highlighBackground); } private boolean doKeyword(Segment line, int i, char c) { int i1 = i + 1; int len = i - lastKeyword; byte id = keywords.lookup(line, lastKeyword, len); if (id != Token.NULL) { if (lastKeyword != lastOffset) addToken(lastKeyword - lastOffset, Token.NULL, true); addToken(len, id, true); lastOffset = i; lastKeyword = i1; lastWhitespace = i; return true; } lastKeyword = i1; return false; }}/* * ChangeLog: * $Log: PHPTokenMarker.java,v $ * Revision 1.11 2003/06/30 17:31:10 blaisorblade * Fix for line-ends. * * Revision 1.10 2003/06/29 13:37:27 gfx * Support of JDK 1.4.2 * * Revision 1.9 2003/02/26 21:20:41 gfx * New PHP highlighting feature * * Revision 1.8 2002/05/13 17:37:21 gfx * *** empty log message *** * */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?