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 + -
显示快捷键?