⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 axionsqlparser.java

📁 开源的axion的数据库代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/* Generated By:JavaCC: Do not edit this line. AxionSqlParser.java */package org.axiondb.parser;import org.axiondb.*;import org.axiondb.constraints.*;import org.axiondb.types.*;import org.axiondb.functions.*;import org.axiondb.expression.*;import org.axiondb.engine.commands.*;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import java.io.InputStream;import java.io.ByteArrayInputStream;import java.util.*;/**  * JavaCC generated SQL parser.  * Generated from AxionSqlParser.jj ($Header: /cvs/axion/grammars/AxionSqlParser.jj,v 1.44 2003/07/08 21:45:48 rwald Exp $). * Do not edit this (.java) file directly, it is programmaticly generated. *  * @author kevinh (at) empower.com.au * @author Doug Sale * @author Chuck Burdick * @author Rodney Waldhoff * @author James Strachan * @author Rob Oxspring * @author Amrish Lal * @author Rahul Dwivedi */public class AxionSqlParser implements Parser, AxionSqlParserConstants {    public AxionSqlParser() {        this(new ByteArrayInputStream(new byte[0]));        _log.debug("created new parser");    }    public AxionCommand parse(String sql) throws AxionException {        this.ReInit(new ByteArrayInputStream(sql.getBytes()));        try {            return this.SqlCommand();        } catch(TokenMgrError e) {            throw new AxionException(e);        } catch(ParseException ex) {            throw new AxionException(ex);        }    }  /**   * Replaces all occurances of <i>old</i> in <i>src</i> with <i>nu</i>.   *   * @param src the source String   * @param old the character to replace   * @param nu  the String to replace <i>old</i> with   * @return a copy of <i>src</i> with all instances of <i>old</i>   *         replaced by <i>nu</i>   * @throws java.lang.NullPointerException if any argument is null.   */  private final static String replace(String src, String old, String nu) {    int srclen = src.length();    int cur = 0;    int loc = 0;    int oldlen = old.length();    StringBuffer buf = new StringBuffer(srclen+nu.length());    do {      loc = src.indexOf(old,cur);      if(loc != -1) {        buf.append(src.substring(cur,loc));        buf.append(nu);        cur = loc + oldlen;      }    } while(loc != -1);    if(cur < srclen) {      buf.append(src.substring(cur));    }    return buf.toString();  }  private static Log _log = LogFactory.getLog(AxionSqlParser.class);// ----------------------------------------------------------------------------// SQL GRAMMAR// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------// COMMANDS// ----------------------------------------------------------------------------  final public AxionCommand SqlCommand() throws ParseException {    AxionCommand result = null;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case SELECT:      result = SqlSelect();      break;    case INSERT:      result = SqlInsert();      break;    case UPDATE:      result = SqlUpdate();      break;    case DELETE:      result = SqlDelete();      break;    case CREATE:      result = SqlCreate();      break;    case DROP:      result = SqlDrop();      break;    case ALTER:      result = SqlAlterTable();      break;    case ID:      result = SqlAxionCustom();      break;    default:      jj_consume_token(-1);      throw new ParseException();    }    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case SEMICOLON:      jj_consume_token(SEMICOLON);      break;    default:      ;    }    jj_consume_token(0);    if(_log.isDebugEnabled()) { _log.debug("SqlCommand: created \"" + result + "\""); }    {if (true) return result;}    throw new Error("Missing return statement in function");  }// ----------------------------------------------------------------------------// COMMANDS: AXION CUSTOM// ----------------------------------------------------------------------------  final public AxionCommand SqlAxionCustom() throws ParseException {    jj_consume_token(ID);    if("CHECKPOINT".equalsIgnoreCase(token.image)) {      {if (true) return new CheckpointCommand();}    } else if("REMOUNT".equalsIgnoreCase(token.image)) {      {if (true) return SqlRemount();}    } else if("SHUTDOWN".equalsIgnoreCase(token.image)) {      {if (true) return new ShutdownCommand();}    } else if("CHECKFILESTATE".equalsIgnoreCase(token.image)) {      {if (true) return new CheckFileStateCommand();}    } else {      {if (true) throw new ParseException("Expected CHECKPOINT, REMOUNT, SHUTDOWN, or CHECKFILESTATE found \"" + token.image + "\".");}    }    throw new Error("Missing return statement in function");  }  final public AxionCommand SqlRemount() throws ParseException {    RemountCommand remount = new RemountCommand();    Object dir;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case ID:      jj_consume_token(ID);        remount.setTable(new TableIdentifier(token.image));      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case ID:        jj_consume_token(ID);        if("data".equalsIgnoreCase(token.image)) {          remount.setDataFilesOnly(true);        } else {          {if (true) throw new ParseException("Expected \"DATA\", found \"" + token.image + "\"");}        }        break;      default:        ;      }      break;    default:      ;    }    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case STRING_LITERAL:      jj_consume_token(STRING_LITERAL);      if(_log.isDebugEnabled()) { _log.debug("SqlRemount: consumed \"" + token + "\""); }      // trim off the open and close quotes      String trimmed = token.image.substring(1, token.image.length() - 1);      // replace all '' with '      String result = replace(trimmed,"''","'");      if(_log.isDebugEnabled()) { _log.debug("SqlRemount: path \"" + result + "\""); }      dir = result;      remount.setDirectory(result);      break;    case QUESTIONMARK:      dir = SqlBindVar();       remount.setDirectory((Literal)dir);      break;    default:      jj_consume_token(-1);      throw new ParseException();    }     {if (true) return remount;}    throw new Error("Missing return statement in function");  }// ----------------------------------------------------------------------------// COMMANDS: CREATE// ----------------------------------------------------------------------------  final public AxionCommand SqlCreate() throws ParseException {    AxionCommand result = null;    String type = null;    boolean unique = false;    jj_consume_token(CREATE);    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case UNIQUE:      jj_consume_token(UNIQUE);        unique = true;      break;    default:      ;    }    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case ID:      type = SqlIdentifier();      break;    default:      ;    }    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case TABLE:      result = SqlCreateTable(type);      break;    case INDEX:      result = SqlCreateIndex(unique,type);      break;    case SEQUENCE:      result = SqlCreateSequence();      break;    default:      jj_consume_token(-1);      throw new ParseException();    }    {if (true) return result;}    throw new Error("Missing return statement in function");  }  final public AxionCommand SqlCreateTable(String type) throws ParseException {    CreateTableCommand result = new CreateTableCommand();    result.setType(type);    String str = null;    jj_consume_token(TABLE);    str = SqlIdentifier();     result.setName(str);    jj_consume_token(OPENPAREN);    SqlColumnExpression(result);    label_1:    while (true) {      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case COMMA:        ;        break;      default:        break label_1;      }      jj_consume_token(COMMA);      SqlColumnExpression(result);    }    jj_consume_token(CLOSEPAREN);    {if (true) return result;}    throw new Error("Missing return statement in function");  }  final public void SqlColumnExpression(CreateTableCommand result) throws ParseException {    String[] pair = null;    Constraint constraint = null;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case CHECK:    case CONSTRAINT:    case NOT:    case NULL:    case PRIMARY:    case UNIQUE:      constraint = SqlTableConstraint();        if(null != constraint) {            result.addChildCommand(new AddConstraintCommand(result.getName(),constraint));            constraint = null;        }      break;    case ID:      pair = SqlColumnDef();      result.addColumn(pair[0],pair[1]);      label_2:      while (true) {        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {        case CHECK:        case CONSTRAINT:        case NOT:        case NULL:        case PRIMARY:        case UNIQUE:          ;          break;        default:          break label_2;        }        constraint = SqlColumnConstraint(result.getName(),pair[0]);        if(null != constraint) {            result.addChildCommand(new AddConstraintCommand(result.getName(),constraint));            constraint = null;        }      }      break;    default:      jj_consume_token(-1);      throw new ParseException();    }  }  final public AxionCommand SqlCreateIndex(boolean unique, String type) throws ParseException {    CreateIndexCommand result = new CreateIndexCommand();    result.setUnique(unique);    result.setType(type);    String str = null;    jj_consume_token(INDEX);     if(_log.isDebugEnabled()) { _log.debug("SqlCreateIndex: consumed \"" + token + "\""); }    str = SqlIdentifier();     if(_log.isDebugEnabled()) { _log.debug("SqlCreateIndex: consumed \"" + str + "\""); }     result.setName(str);     str = null;    jj_consume_token(ON);     if(_log.isDebugEnabled()) { _log.debug("SqlCreateIndex: consumed \"" + token + "\""); }    str = SqlLValueTerm();     if(_log.isDebugEnabled()) { _log.debug("SqlCreateIndex: consumed \"" + str + "\""); }     result.setTable(str);     str = null;    jj_consume_token(OPENPAREN);     if(_log.isDebugEnabled()) { _log.debug("SqlCreateIndex: consumed \"" + token + "\""); }    str = SqlIdentifier();     if(_log.isDebugEnabled()) { _log.debug("SqlCreateIndex: consumed \"" + str + "\""); }     result.addColumn(str);     str = null;    label_3:    while (true) {      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case COMMA:        ;        break;      default:        break label_3;      }      jj_consume_token(COMMA);      str = SqlIdentifier();       if(_log.isDebugEnabled()) { _log.debug("SqlCreateIndex: consumed \"" + str + "\""); }       result.addColumn(str);       str = null;    }    jj_consume_token(CLOSEPAREN);     if(_log.isDebugEnabled()) { _log.debug("SqlCreateIndex: consumed \"" + token + "\""); }     {if (true) return result;}    throw new Error("Missing return statement in function");  }  final public AxionCommand SqlCreateSequence() throws ParseException {    CreateSequenceCommand result = new CreateSequenceCommand();    String name = null;    Token t = null;    jj_consume_token(SEQUENCE);     if(_log.isDebugEnabled()) { _log.debug("SqlCreateSequence: consumed \"" + token + "\""); }    name = SqlIdentifier();    if(_log.isDebugEnabled()) { _log.debug("SqlCreateSequence: found sequence name  \"" + name + "\""); }    result.setName(name);    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case STARTS:      jj_consume_token(STARTS);      jj_consume_token(WITH);      t = jj_consume_token(INTEGER_LITERAL);          result.setStartValue(t.image);      break;    default:      ;    }    {if (true) return result;}    throw new Error("Missing return statement in function");  }// ----------------------------------------------------------------------------// COMMANDS: DELETE// ----------------------------------------------------------------------------  final public AxionCommand SqlDelete() throws ParseException {    TableIdentifier table = null;    Selectable where = null;    jj_consume_token(DELETE);    if(_log.isDebugEnabled()) { _log.debug("SqlDelete: consumed \"" + token + "\""); }    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case FROM:      jj_consume_token(FROM);      if(_log.isDebugEnabled()) { _log.debug("SqlDelete: consumed \"" + token + "\""); }      break;    default:      ;    }    table = SqlTableRef();    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case WHERE:      where = SqlWhere();      break;    default:      ;    }     {if (true) return new DeleteCommand(table,(WhereNode)where);}    throw new Error("Missing return statement in function");  }// ----------------------------------------------------------------------------// COMMANDS: ALTER TABLE// ----------------------------------------------------------------------------  final public AxionCommand SqlAlterTable() throws ParseException {    AxionCommand result = null;    String tablename = null;    jj_consume_token(ALTER);    jj_consume_token(TABLE);    tablename = SqlIdentifier();    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case ADD:      result = SqlAddConstraint(tablename);      break;    case DROP:      result = SqlDropConstraint(tablename);      break;    default:      jj_consume_token(-1);      throw new ParseException();    }        {if (true) return result;}    throw new Error("Missing return statement in function");  }  final public AxionCommand SqlDropConstraint(String tablename) throws ParseException {    String constraintname = null;    jj_consume_token(DROP);

⌨️ 快捷键说明

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