jsptokenmarker.java

来自「java写的多功能文件编辑器」· Java 代码 · 共 637 行 · 第 1/2 页

JAVA
637
字号
              if (length - i > 1)              {                addToken(i - lastOffset, Token.NULL);                lastOffset = lastKeyword = i;                if (array[i1] == '/')                {                  addToken(length - i, Token.COMMENT2);                  lastOffset = lastKeyword = length;                  break loop;                } else if (array[i1] == '*') {                  token = Token.COMMENT2;                }              }              break;            default:              backslash = false;              if (!Character.isLetterOrDigit(c) && c != '_')                doJSKeyword(line, i, c);              if (CTokenMarker.METHOD_DELIMITERS.indexOf(c) != -1)              {                lastWhitespace = i;              }              break;          }          break;        case Token.LITERAL1: // JavaScript "..."          if (backslash)            backslash = false;          else if (c == '"')          {            addToken(i1 - lastOffset, Token.LITERAL1);            lastOffset = lastKeyword = i1;            token = JAVASCRIPT;          }          break;        case Token.LITERAL2: // JavaScript '...'          if (backslash)            backslash = false;          else if (c == '\'')          {            addToken(i1 - lastOffset, Token.LITERAL1);            lastOffset = lastKeyword = i1;            token = JAVASCRIPT;          }          break;        case Token.COMMENT2: // Inside a JavaScript comment          backslash = false;          if (c == '*' && length - i > 1 && array[i1] == '/')          {            addToken((i += 2) - lastOffset, Token.COMMENT1);            lastOffset = lastKeyword = i;            token = JAVASCRIPT;          }          break;        default:          if (token > Token.INTERNAL_FIRST + 3)          {            switch (token)            {              case JSP_NULL:                switch(c)                {                case '%':                  backslash = false;                  if (length - i > 1 && array[i1] == '>')                  {                    addToken(i - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                    addToken(2, Token.OPERATOR);                    lastOffset = lastKeyword = (i += 1) + 1;                    token = Token.NULL;                  } else {                    addToken(i - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                    addToken(1, Token.NULL);                    lastOffset = lastKeyword = lastWhitespace = (i += 1);                    token = JSP_NULL;                  }                  break;                case '(':                  if (backslash)                  {                    doJavaKeyword(line, i, c);                    backslash = false;                  } else {                    if (doJavaKeyword(line, i, c))                      break;                    addToken(lastWhitespace - lastOffset + 1, (byte) (token - (Token.INTERNAL_FIRST + 4)));                    addToken(i - lastWhitespace - 1, Token.METHOD);                    addToken(1, Token.NULL);                    token = JSP_NULL;                    lastOffset = lastKeyword = i1;                    lastWhitespace = i;                  }                  break;                case '"':                  doJavaKeyword(line, i, c);                  if(backslash)                    backslash = false;                  else                  {                    addToken(i - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                    token = JSP_LITERAL1;                    lastOffset = lastKeyword = i;                  }                  break;                case '\'':                  doJavaKeyword(line, i, c);                  if (backslash)                    backslash = false;                  else                  {                    addToken(i - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                    token = JSP_LITERAL2;                    lastOffset = lastKeyword = i;                  }                  break;                case ':':                  if(lastKeyword == offset)                  {                    if (doJavaKeyword(line, i, c))                      break;                    backslash = false;                    addToken(i1 - lastOffset, Token.LABEL);                    lastOffset = lastKeyword = i1;                  }                  else if(doJavaKeyword(line, i, c))                    break;                  break;                case '/':                  backslash = false;                  doJavaKeyword(line, i, c);                  if(length - i > 1)                  {                    switch(array[i1])                    {                      case '*':                        addToken(i - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                        lastOffset = lastKeyword = i;                        if(length - i > 2 && array[i + 2] == '*')                          token = JSP_COMMENT2;                        else                          token = JSP_COMMENT1;                        break;                      case '/':                        addToken(i - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                        addToken(length - i, Token.COMMENT1);                        lastOffset = lastKeyword = length;                        break loop;                    }                  }                  break;                default:                  backslash = false;                  if (!Character.isLetterOrDigit(c) && c != '_')                    doJavaKeyword(line, i, c);                  if (CTokenMarker.METHOD_DELIMITERS.indexOf(c) != -1)                    lastWhitespace = i;                  break;                }                break;              case JSP_COMMENT1:              case JSP_COMMENT2:                backslash = false;                if (c == '*' && length - i > 1)                {                  if (array[i1] == '/')                  {                    i++;                    addToken((i + 1) - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                    token = JSP_NULL;                    lastOffset = lastKeyword = i + 1;                    lastWhitespace = i;                  }                }                break;              case JSP_LABEL:                backslash = false;                if (c == ' ' || c == '\t')                {                  addToken(i1 - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                  lastOffset = lastKeyword = i1;                } else if (c == '=') {                  addToken(i - lastOffset, Token.KEYWORD3);                  addToken(1, Token.LABEL);                  lastOffset = lastKeyword = i1;                } else if (c == '\'') {                  addToken(i - lastOffset, Token.KEYWORD3);                  token = JSP_LITERAL2;                  lastOffset = lastKeyword = i;                } else if (c == '"') {                  addToken(i - lastOffset, Token.KEYWORD3);                  token = JSP_LITERAL1;                  lastOffset = lastKeyword = i;                }                break;              case JSP_LITERAL1:                if (backslash)                  backslash = false;                else if (c == '"')                {                  addToken(i1 - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                  token = JSP_NULL;                  lastOffset = lastKeyword = i1;                  lastWhitespace = i;                }                break;              case JSP_LITERAL2:                if (backslash)                  backslash = false;                else if (c == '\'')                {                  addToken(i1 - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));                  token = JSP_NULL;                  lastOffset = lastKeyword = i1;                  lastWhitespace = i;                }                break;              default:                throw new InternalError("Invalid state: " + token);            }          } else            throw new InternalError("Invalid state: " + token);      }    }    switch (token)    {      case Token.LITERAL1:      case Token.LITERAL2:        addToken(length - lastOffset, Token.INVALID);        token = JAVASCRIPT;        break;      case Token.KEYWORD2:        addToken(length - lastOffset, Token.INVALID);        token = Token.NULL;        break;      case JAVASCRIPT:        doJSKeyword(line, length, '\0');        addToken(length - lastOffset, Token.NULL);        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;      default:        if (token < JSP_NULL)          addToken(length - lastOffset, token);        else        {          if (token == JSP_NULL)            doJavaKeyword(line, length, '\0');          switch(token)          {            case JSP_LITERAL1:            case JSP_LITERAL2:              addToken(length - lastOffset, Token.INVALID);              token = JSP_NULL;              break;            case JSP_KEYWORD2:              addToken(length - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));              if (!backslash)                token = JSP_NULL;              break;            default:              addToken(length - lastOffset, (byte) (token - (Token.INTERNAL_FIRST + 4)));              break;          }        }        break;    }    return token;  }  // private members  private KeywordMap keywords;  private KeywordMap javaKeywords;  private boolean js;  private boolean javascript;  private int lastOffset;  private int lastKeyword;  private int lastWhitespace;  private boolean doJSKeyword(Segment line, int i, char c)  {    return doKeyword(line, i, c, true);  }  private boolean doJavaKeyword(Segment line, int i, char c)  {    return doKeyword(line, i, c, false);  }  private boolean doKeyword(Segment line, int i, char c, boolean javaScript)  {    int i1 = i + 1;    int len = i - lastKeyword;    byte id = (javaScript ? keywords : javaKeywords).lookup(line, lastKeyword, len);    if (id != Token.NULL)    {      if (lastKeyword != lastOffset)        addToken(lastKeyword - lastOffset, Token.NULL);      addToken(len, id);      lastKeyword = i1;      lastOffset = i;      lastWhitespace = i;      return true;    }    lastKeyword = i1;    return false;  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?