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

📄 jcrsql.jjt

📁 jsr170接口的java实现。是个apache的开源项目。
💻 JJT
📖 第 1 页 / 共 2 页
字号:
      |        ((<NOT> { jjtThis.setNegate(true); })?          (            (<BETWEEN> { jjtThis.setOperationType(QueryConstants.OPERATION_BETWEEN); } Literal() <AND> Literal())          |            (              <LIKE> { jjtThis.setOperationType(QueryConstants.OPERATION_LIKE); } value = CharStringLiteral()              {                ASTLiteral s = new ASTLiteral(JJTLITERAL);                s.setType(QueryConstants.TYPE_STRING);                s.setValue(value);                jjtree.pushNode(s);              }              (<ESCAPE> escapeString = CharStringLiteral() { jjtThis.setEscapeString(escapeString); })?            )          )        )      |        (<IS> (<NOT> { jjtThis.setNegate(true); })? <NULL>          {            jjtThis.setOperationType(jjtThis.isNegate() ? QueryConstants.OPERATION_NOT_NULL : QueryConstants.OPERATION_NULL);          }        )      )    )  |    (      Literal() (<NOT> { jjtThis.setNegate(true); })? <IN>      (        (            identifier = Identifier()          | identifier = PropertyFunction()        )        {          jjtThis.setIdentifier(identifier);          jjtThis.setOperationType(jjtThis.isNegate() ? QueryConstants.OPERATION_NE_GENERAL : QueryConstants.OPERATION_EQ_GENERAL);        }      )    )  )}QName PropertyFunction() #void :{  QName identifier;}{  (      identifier = LowerFunction()    | identifier = UpperFunction()  )  {    return identifier;  }}QName LowerFunction() :{  QName identifier;}{  (    <LOWER> "(" identifier = Identifier() ")"  )  {    return identifier;  }}QName UpperFunction() :{  QName identifier;}{  (    <UPPER> "(" identifier = Identifier() ")"  )  {    return identifier;  }}int ComparisonOperation() #void :{  int operationType;}{  (      <EQ_OPERATOR> { operationType = QueryConstants.OPERATION_EQ_GENERAL; }    | <NE_OPERATOR> { operationType = QueryConstants.OPERATION_NE_GENERAL; }    | <LT_OPERATOR> { operationType = QueryConstants.OPERATION_LT_GENERAL; }    | <GT_OPERATOR> { operationType = QueryConstants.OPERATION_GT_GENERAL; }    | <LE_OPERATOR> { operationType = QueryConstants.OPERATION_LE_GENERAL; }    | <GE_OPERATOR> { operationType = QueryConstants.OPERATION_GE_GENERAL; }  )  {    return operationType;  }}// SEARCH CONDITION 8.12void SearchCondition() #void :{}{  OrExpression()}void OrExpression() #void :{}{  (    AndExpression() (<OR> AndExpression())*  ) #OrExpression(>1)}void AndExpression() #void :{}{  (    UnaryExpression() (<AND> UnaryExpression())*  ) #AndExpression(>1)}void UnaryExpression() #void :{}{  (    <NOT> UnaryExpression()  ) #NotExpression()|  (    PrimaryExpression()  )}void PrimaryExpression() #void :{}{  (    Predicate()  )|  (    BracketExpression()  )|  (    ContainsExpression()  )}void BracketExpression() :{}{  <LEFT_PAREN> SearchCondition() <RIGHT_PAREN>}void ContainsExpression() :{  Token t = null;  QName name = null;}{  <CONTAINS>  <LEFT_PAREN>  ( <ASTERISK> | <PERIOD> | (name = Identifier() { jjtThis.setPropertyName(name); }) ) ","  t = <CHAR_STRING_LITERAL> { jjtThis.setQuery(t.image.substring(1, t.image.length() - 1).replaceAll("''", "'")); }  <RIGHT_PAREN>}void Literal() :{  Token t = null;  String value;}{  (    t = <APPROXIMATE_NUMERIC_LITERAL> { jjtThis.setType(QueryConstants.TYPE_DOUBLE); jjtThis.setValue(t.image); }  |    // can contain a dot -> use double    t = <EXACT_NUMERIC_LITERAL>    {      if (t.image.indexOf('.') > -1) {        jjtThis.setType(QueryConstants.TYPE_DOUBLE);      } else {        jjtThis.setType(QueryConstants.TYPE_LONG);      }      jjtThis.setValue(t.image);    }  |    value = CharStringLiteral() { jjtThis.setType(QueryConstants.TYPE_STRING); jjtThis.setValue(value); }  |    t = <DATETIME_LITERAL>    {      if (t.image.startsWith("TIMESTAMP")) {        jjtThis.setValue(t.image.substring(t.image.indexOf('\'') + 1, t.image.length() - 1));        if (jjtThis.getValue().indexOf(" ") == 10) {          // replace SQL 92 timesamp string with ISO8601          StringBuffer tmp = new StringBuffer();          tmp.append(jjtThis.getValue().substring(0, 10));          tmp.append("T").append(jjtThis.getValue().substring(11));          jjtThis.setValue(tmp.toString());        }        jjtThis.setType(QueryConstants.TYPE_TIMESTAMP);      /*      } else if (t.image.startsWith("TIME")) {        jjtThis.setValue(t.image.substring(t.image.indexOf('\'') + 1, t.image.length() - 1));        jjtThis.setType(QueryConstants.TYPE_TIME);      */      } else {        jjtThis.setValue(t.image.substring(t.image.indexOf('\'') + 1, t.image.length() - 1));        jjtThis.setType(QueryConstants.TYPE_DATE);      }    }  )}String CharStringLiteral() #void :{  Token t;  String value = "";}{  (    t = <CHAR_STRING_LITERAL> { value += t.image.substring(1, t.image.length() - 1); } ( t = <CHAR_STRING_LITERAL> { value += t.image.substring(1, t.image.length() - 1); } )*  )  {    // strip any quote escapes    return value.replaceAll("''", "'");  }}QName Identifier() :{  Token t = null;  QName name = null;}{  (    t = <REGULAR_IDENTIFIER>      {        try {          jjtThis.setName(NameFormat.parse(t.image, resolver));        } catch (NameException e) {          throw new ParseException(e.getMessage());        }      }  |    t = <DELIMITED_IDENTIFIER>      {        try {          jjtThis.setName(NameFormat.parse(t.image.substring(1, t.image.length()-1), resolver));        } catch (NameException e) {          throw new ParseException(e.getMessage());        }      }  |    (      (        // or any keyword          t = <BY>        | t = <IN>        | t = <OR>        | t = <IS>        | t = <AND>        /*| <NOT>*/        | t = <LIKE>        | t = <NULL>        | t = <FROM>        | t = <ORDER>        | t = <WHERE>        | t = <SELECT>        | t = <BETWEEN>      )      {        try {          jjtThis.setName(NameFormat.parse(t.image, resolver));        } catch (NameException e) {          throw new ParseException(e.getMessage());        }      }    )  )  {    return jjtThis.getName();  }}QName ExcerptFunction() :{}{  <EXCERPT> "(" <PERIOD> ")"  {    return new QName(QName.NS_REP_URI, "excerpt(.)");  }}void OrderByClause() :{}{  <ORDER> <BY> OrderSpec() (<COMMA> OrderSpec())*}void OrderSpec() :{}{  Identifier() (AscendingOrderSpec() | DescendingOrderSpec())?}void AscendingOrderSpec() :{}{  <ASC>}void DescendingOrderSpec() :{}{  <DESC>}

⌨️ 快捷键说明

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