Пример #1
0
 public void accept(Token token) {
   if (lexer.token() == token) {
     lexer.nextToken();
   } else {
     setErrorEndPos(lexer.pos());
     throw new ParserException(
         "syntax error, expect "
             + token
             + ", actual "
             + lexer.token()
             + " "
             + lexer.stringVal()
             + ", pos "
             + this.lexer.pos());
   }
 }
Пример #2
0
  public void test_lexer() throws Exception {
    String sql = "SELECT * FROM T WHERE F1 = ? ORDER BY F2";
    Lexer lexer = new Lexer(sql);
    for (; ; ) {
      lexer.nextToken();
      Token tok = lexer.token();

      if (tok == Token.IDENTIFIER) {
        System.out.println(tok.name() + "\t\t" + lexer.stringVal());
      } else if (tok == Token.LITERAL_INT) {
        System.out.println(tok.name() + "\t\t" + lexer.numberString());
      } else {
        System.out.println(tok.name() + "\t\t\t" + tok.name);
      }

      if (tok == Token.EOF) {
        break;
      }
    }
  }
Пример #3
0
  protected String as() {
    String alias = null;

    if (lexer.token() == Token.AS) {
      lexer.nextToken();

      if (lexer.token() == Token.LITERAL_ALIAS) {
        alias = '"' + lexer.stringVal() + '"';
        lexer.nextToken();
      } else if (lexer.token() == Token.IDENTIFIER) {
        alias = lexer.stringVal();
        lexer.nextToken();
      } else if (lexer.token() == Token.LITERAL_CHARS) {
        alias = "'" + lexer.stringVal() + "'";
        lexer.nextToken();
      } else {
        switch (lexer.token()) {
          case KEY:
          case INDEX:
          case CASE:
          case MODEL:
          case PCTFREE:
          case INITRANS:
          case MAXTRANS:
          case SEGMENT:
          case CREATION:
          case IMMEDIATE:
          case DEFERRED:
          case STORAGE:
          case NEXT:
          case MINEXTENTS:
          case MAXEXTENTS:
          case MAXSIZE:
          case PCTINCREASE:
          case FLASH_CACHE:
          case CELL_FLASH_CACHE:
          case KEEP:
          case NONE:
          case LOB:
          case STORE:
          case ROW:
          case CHUNK:
          case CACHE:
          case NOCACHE:
          case LOGGING:
          case NOCOMPRESS:
          case KEEP_DUPLICATES:
          case EXCEPTIONS:
          case PURGE:
          case INITIALLY:
          case END:
          case COMMENT:
          case ENABLE:
          case DISABLE:
          case SEQUENCE:
          case USER:
          case ANALYZE:
          case OPTIMIZE:
          case GRANT:
            alias = lexer.stringVal();
            lexer.nextToken();
            return alias;
          case QUES:
            alias = "?";
            lexer.nextToken();
          default:
            break;
        }
      }

      if (alias != null) {
        while (lexer.token() == Token.DOT) {
          lexer.nextToken();
          alias += ('.' + lexer.token().name());
          lexer.nextToken();
        }

        return alias;
      }

      if (lexer.token() == Token.LPAREN) {
        return null;
      }

      throw new ParserException("Error : " + lexer.token());
    }

    if (lexer.token() == Token.LITERAL_ALIAS) {
      alias = '"' + lexer.stringVal() + '"';
      lexer.nextToken();
    } else if (lexer.token() == Token.IDENTIFIER) {
      alias = lexer.stringVal();
      lexer.nextToken();
    } else if (lexer.token() == Token.LITERAL_CHARS) {
      alias = "'" + lexer.stringVal() + "'";
      lexer.nextToken();
    } else if (lexer.token() == Token.CASE) {
      alias = lexer.token.name();
      lexer.nextToken();
    }

    switch (lexer.token()) {
      case KEY:
        alias = lexer.token().name();
        lexer.nextToken();
        return alias;
      default:
        break;
    }

    return alias;
  }
Пример #4
0
 protected boolean identifierEquals(String text) {
   return lexer.token() == Token.IDENTIFIER && lexer.stringVal().equalsIgnoreCase(text);
 }
Пример #5
0
 public void match(Token token) {
   if (lexer.token() != token) {
     throw new ParserException(
         "syntax error, expect " + token + ", actual " + lexer.token() + " " + lexer.stringVal());
   }
 }