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

📄 sql92parser.cup

📁 java开源的企业总线.xmlBlaster
💻 CUP
📖 第 1 页 / 共 2 页
字号:
            }             :}      | expr:e1 GT expr:e2         {:             if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("basic_pred '" + e1 + " > " + e2 + "'");            if (e1 == null || e2 == null) {               RESULT = new Boolean(false);            }            else {                  if (e1 instanceof String) RESULT = new Boolean(((String)e1).compareTo((String)e2) > 0);                else RESULT = new Boolean( ((Double)e1).doubleValue() > ((Double)e2).doubleValue());            }             :}      | expr:e1 GET expr:e2         {:             if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("basic_pred '" + e1 + " >= " + e2 + "'");            if (e1 == null || e2 == null) {               RESULT = new Boolean(false);            }            else {                  if (e1 instanceof String) RESULT = new Boolean(((String)e1).compareTo((String)e2) >= 0);                else RESULT = new Boolean( ((Double)e1).doubleValue() >= ((Double)e2).doubleValue());            }            :}       ;  /* between_pred ::= expr [ NOT ] BETWEEN expr AND expr */between_pred ::=         expr:e1 BETWEEN expr:e2 AND expr:e3            {:              if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("between_pred: '" + e1 + " BETWEEN " + e2 + " AND " + e3 + "'");              if (e1 == null || e2 == null || e3 == null) {                 RESULT = new Boolean(false);              }              else {                 if (e1 instanceof String) {                    RESULT = new Boolean((((String)e1).compareTo((String)e2) >= 0) && (((String)e1).compareTo((String)e3) <= 0));                 }                 else {                    RESULT = new Boolean(((Double)e1).doubleValue() >= ((Double)e2).doubleValue() && ((Double)e1).doubleValue() <= ((Double)e3).doubleValue());                 }              }              :}           ;null_pred ::=          STRING:l IS NULL            {: RESULT = new Boolean(l == null); :}      | STRING:l IS NOT NULL           {: RESULT = new Boolean(l != null); :}      | NUMBER:l IS NULL            {: RESULT = new Boolean(l == null); :}      | NUMBER:l IS NOT NULL           {: RESULT = new Boolean(l != null); :}      | NULL_OBJECT IS NULL           {: RESULT = new Boolean(true); :}      | NULL_OBJECT IS NOT NULL           {: RESULT = new Boolean(false); :}      ;like_pred ::=  STRING:p1 LIKE STRING:p2        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("like_pred: '" + p1 + " LIKE " + p2 + "'");           LikeOpWrapper wrapper = parser.getExpression(p2, (char)0, true);           if (wrapper != null) {              RESULT = new Boolean(wrapper.match(p1));           }           else {              RESULT = new Boolean(false);           }        :}     | NULL_OBJECT:p1 LIKE STRING:p2        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("like_pred: '" + p1 + " LIKE " + p2 + "'");           RESULT = new Boolean(false);             :}     | STRING:p1 NOT LIKE STRING:p2        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("like_pred: '" + p1 + " NOT LIKE " + p2 + "'");           LikeOpWrapper wrapper = parser.getExpression(p2, (char)0, true);           if (wrapper != null) {              RESULT = new Boolean(!wrapper.match(p1));           }           else {              RESULT = new Boolean(true);           }        :}     | NULL_OBJECT:p1 NOT LIKE STRING:p2        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("like_pred: '" + p1 + " NOT LIKE " + p2 + "'");           RESULT = new Boolean(true);        :}     | STRING:p1 LIKE STRING:p2 ESCAPE ESC:esc        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("like_pred: '" + p1 + " LIKE " + p2 + " ESCAPE " + esc + "'");           LikeOpWrapper wrapper = parser.getExpression(p2, esc.charValue(), true);           if (wrapper != null) {              RESULT = new Boolean(wrapper.match(p1));           }           else {              RESULT = new Boolean(false);           }        :}     | NULL_OBJECT:p1 LIKE STRING:p2 ESCAPE ESC:esc        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("like_pred: '" + p1 + " LIKE " + p2 + " ESCAPE " + esc + "'");           RESULT = new Boolean(false);        :}     | STRING:p1 NOT LIKE STRING:p2 ESCAPE ESC:esc        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("like_pred: '" + p1 + " NOT LIKE " + p2 + " ESCAPE " + esc + "'");           LikeOpWrapper wrapper = parser.getExpression(p2, esc.charValue(), true);           if (wrapper != null) {              RESULT = new Boolean(!wrapper.match(p1));           }           else {              RESULT = new Boolean(true);           }        :}     | NULL_OBJECT:p1 NOT LIKE STRING:p2 ESCAPE ESC:esc        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("like_pred: '" + p1 + " NOT LIKE " + p2 + " ESCAPE " + esc + "'");           RESULT = new Boolean(true);        :}     ;/* This is not jms specific. It is a special xmlBlaster extention */regex_pred ::=  STRING:p1 REGEX STRING:p2        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("regex_pred: '" + p1 + " REGEX " + p2 + "'");           LikeOpWrapper wrapper = parser.getExpression(p2, (char)0, false);           if (wrapper != null) {              RESULT = new Boolean(wrapper.match(p1));           }           else {              RESULT = new Boolean(false);           }        :}                     | NULL_OBJECT:p1 REGEX STRING:p2        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("regex_pred: '" + p1 + " REGEX " + p2 + "'");           RESULT = new Boolean(false);        :}     ;/* in_pred ::= expr [ NOT ] IN { (constant , constant [ , ... ] ) } */in_value ::=        STRING:v          {: RESULT = v; :}     | NUMBER:v          {: RESULT = v; :}     ;in_term ::=        in_value:v1 COMMA in_value:v2         {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("in_term '" + v1 + ", " + v2 + "'");           java.util.Set set = new java.util.HashSet();           if (v1 != null) set.add(v1);           if (v2 != null) set.add(v2);           RESULT = set;         :}        | in_value:v COMMA in_term:s       {:          if (s == null) s = new java.util.HashSet();          if (v != null) s.add(v);          RESULT = s;       :}     ;in_pred ::=        expr:e IN L_BRACKET in_value:v R_BRACKET          {:           if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("in_pred '" + e + "IN(" + v + ")'");           if (e == null || v == null) RESULT = new Boolean(false);           else {              if (e instanceof String) RESULT = new Boolean(e.equals(v));              else RESULT = new Boolean(((Double)e).doubleValue() == ((Double)v).doubleValue());           }         :}     | expr:e IN L_BRACKET in_term:s R_BRACKET         {:           if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("in_pred '" + e + " IN (" + s + ")'");           if (e == null || s == null) RESULT = new Boolean(false);           else {              RESULT = new Boolean(s.contains(e));           }        :}/*     | NOT in_pred:p       {:         if (p == null) {            RESULT = new Boolean(true);         }         else {               RESULT = new Boolean(!p.booleanValue());         }          :};*/       ;expr ::=       math_term:e          {:              if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("expr(math_term) '" + e + "'");             RESULT = e;           :}     | STRING:l          {:              RESULT = l;           :}     ;      math_term  ::=           math_term:p1 PLUS math_term:p2        {:             if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_term(math_term + math_term): '" + p1 + " + " + p2 + "'");            if (p1 == null) {               RESULT = p2;            }            else if (p2 == null) {               RESULT = p1;            }            else {                                         RESULT = new Double(p1.doubleValue() + p2.doubleValue());            }           :}      | math_term:p1 MINUS math_term:p2        {:             if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_term(math_term - math_term): '" + p1 + " - " + p2 + "'");            if (p1 == null) {               RESULT = p2;            }            else if (p2 == null) {               RESULT = p1;            }            else {                                         RESULT = new Double(p1.doubleValue() - p2.doubleValue());            }           :}      | math_factor:p        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_term(math_factor) '" +  p + "'");            RESULT = p;        :}        ;      math_factor ::=           math_factor:p1 TIMES math_term:p2        {:             if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_factor(math_factor * math_term): '" + p1 + " * " + p2 + "'");            if (p1 == null || p2 == null) {               RESULT = null;            }               else {               RESULT = new Double(p1.doubleValue() * p2.doubleValue());            }           :}      | math_factor:p1 DIV math_term:p2        {:             if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_factor(math_factor / math_term): '" + p1 + " / " + p2 + "'");            if (p1 == null || p2 == null) {               RESULT = null;            }               else {               RESULT = new Double(p1.doubleValue() / p2.doubleValue());            }           :}      | math_pred:p        {:            if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_factor(math_pred) '" +  p + "'");            RESULT = p;        :}        ;math_pred   ::=      MINUS math_pred:p       {:           if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_pred(-math_pred) '-" + p + "'");          if (p == null) {             RESULT = null;          }          else {                RESULT = new Double(-p.doubleValue());           }          :}  %prec UMINUS    | PLUS math_pred:p       {:           if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_pred(+math_pred) '+" + p + "'");          RESULT = p;       :}  %prec UMINUS    | L_BRACKET math_term:p R_BRACKET       {:           if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_pred((math_term)) '(" + p + ")'");          RESULT = p;        :}    | NUMBER:p       {:           if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_pred(NUMBER) '" + p + "'");          RESULT = p;        :}    | NULL_OBJECT:p        {:           if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("math_pred(NULL_OBJECT) '" + p + "'");          RESULT = (Double)null;        :}    ;ESC ::=    | STRING:p        {:           if (Sql92Parser.log.isLoggable(Level.FINER)) Sql92Parser.log.finer("ESC(STRING) '" + p + "'");          RESULT = new Character(p.charAt(0));       :}    ;

⌨️ 快捷键说明

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