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

📄 xpathparser.y

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 Y
📖 第 1 页 / 共 2 页
字号:
      $$ = list;    }  ;/*predicate_list:  predicate    {      List list = new ArrayList ();      list.add ($1);      $$ = list;    }  | predicate predicate_list    {      List list = (List) $3;      list.add (0, $1);      $$ = list;    }  ;*/axis_name:  ANCESTOR    {      $$ = new Integer(Selector.ANCESTOR);    }  | ANCESTOR_OR_SELF    {      $$ = new Integer(Selector.ANCESTOR_OR_SELF);    }  | ATTRIBUTE    {      $$ = new Integer(Selector.ATTRIBUTE);    }  | CHILD    {      $$ = new Integer(Selector.CHILD);    }  | DESCENDANT    {      $$ = new Integer(Selector.DESCENDANT);    }  | DESCENDANT_OR_SELF    {      $$ = new Integer(Selector.DESCENDANT_OR_SELF);    }  | FOLLOWING    {      $$ = new Integer(Selector.FOLLOWING);    }  | FOLLOWING_SIBLING    {      $$ = new Integer(Selector.FOLLOWING_SIBLING);    }  | NAMESPACE    {      $$ = new Integer(Selector.NAMESPACE);    }  | PARENT    {      $$ = new Integer(Selector.PARENT);    }  | PRECEDING    {      $$ = new Integer(Selector.PRECEDING);    }  | PRECEDING_SIBLING    {      $$ = new Integer(Selector.PRECEDING_SIBLING);    }  | SELF    {      $$ = new Integer(Selector.SELF);    }  ;node_test:  name_test  /*| PROCESSING_INSTRUCTION LP LITERAL RP*/  | PROCESSING_INSTRUCTION LITERAL RP    {      $$ = new NodeTypeTest(Node.PROCESSING_INSTRUCTION_NODE, (String) $2);    }  /*| node_type LP RP*/  | node_type RP    {      $$ = new NodeTypeTest(((Short) $1).shortValue());    }  ;predicate:  LB expr RB    {      $$ = new Predicate((Expr) $2);    }  ;primary_expr:  variable_reference  | LP expr RP    {      $$ = new ParenthesizedExpr((Expr) $2);    }  | LITERAL    {      $$ = new Constant($1);    }  | number    {      $$ = new Constant($1);    }  | function_call  ;function_call:  function_name LP RP    {      $$ = lookupFunction((String) $1, Collections.EMPTY_LIST);    }  | function_name LP argument_list RP    {      $$ = lookupFunction((String) $1, (List) $3);    }  ;argument_list:  expr    {      List list = new ArrayList();      list.add($1);      $$ = list;    }  | expr COMMA argument_list    {      List list = (List) $3;      list.add(0, $1);      $$ = list;    }  ;union_expr:  path_expr  | union_expr PIPE path_expr    {      $$ = new UnionExpr((Expr) $1, (Expr) $3);    }  ;path_expr:  location_path  | filter_expr  | filter_expr SLASH relative_location_path    {      Steps steps;      if ($3 instanceof Steps)        {          steps = (Steps) $3;        }      else        {          steps = new Steps();          steps.path.addFirst($3);        }      steps.path.addFirst($1);      $$ = steps;      //$$ = new Step ((Expr) $1, (Path) $3);    }  | filter_expr DOUBLE_SLASH relative_location_path    {      Test nt = new NodeTypeTest((short) 0);      Selector s = new Selector(Selector.DESCENDANT_OR_SELF,                                Collections.singletonList(nt));      Steps steps;      if ($3 instanceof Steps)        {          steps = (Steps) $3;        }      else        {          steps = new Steps();          steps.path.addFirst($3);        }      steps.path.addFirst(s);      steps.path.addFirst($1);      $$ = steps;      //Step step = new Step (s, (Path) $3);      //$$ = new Step ((Expr) $1, step);    }  ;filter_expr:  primary_expr  | filter_expr predicate    {      Predicate filter = (Predicate) $2;      Selector s = new Selector(Selector.SELF,                                Collections.singletonList(filter));      Steps steps;      if ($1 instanceof Steps)        {          steps = (Steps) $1;        }      else        {          steps = new Steps();          steps.path.addFirst($1);        }      steps.path.addLast(s);      $$ = steps;      //$$ = new Step ((Expr) $1, s);    }  ;or_expr:  and_expr  | or_expr OR and_expr    {      $$ = new OrExpr((Expr) $1, (Expr) $3);    }  ;and_expr:  equality_expr  | and_expr AND equality_expr    {      $$ = new AndExpr((Expr) $1, (Expr) $3);    }  ;equality_expr:  relational_expr  | equality_expr EQ relational_expr    {      $$ = new EqualityExpr((Expr) $1, (Expr) $3, false);    }  | equality_expr NE relational_expr    {      $$ = new EqualityExpr((Expr) $1, (Expr) $3, true);    }  ;relational_expr:  additive_expr  | relational_expr LT additive_expr    {      $$ = new RelationalExpr((Expr) $1, (Expr) $3, true, false);    }  | relational_expr GT additive_expr    {      $$ = new RelationalExpr((Expr) $1, (Expr) $3, false, false);    }  | relational_expr LTE additive_expr    {      $$ = new RelationalExpr((Expr) $1, (Expr) $3, true, true);    }  | relational_expr GTE additive_expr    {      $$ = new RelationalExpr((Expr) $1, (Expr) $3, false, true);    }  ;additive_expr:  multiplicative_expr  | additive_expr PLUS multiplicative_expr    {      $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.ADD);    }  | additive_expr MINUS multiplicative_expr    {      $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.SUBTRACT);    }  ;multiplicative_expr:  unary_expr  | multiplicative_expr STAR unary_expr    {      $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.MULTIPLY);    }  | multiplicative_expr DIV unary_expr    {      $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.DIVIDE);    }  | multiplicative_expr MOD unary_expr    {      $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.MODULO);    }  ;unary_expr:  union_expr  | MINUS unary_expr %prec UNARY    {      $$ = new NegativeExpr((Expr) $2);    }  ;number:  DIGITS    {      $$ = new Double((String) $1 + ".0");    }  | DIGITS DOT    {      $$ = new Double((String) $1 + ".0");    }  | DIGITS DOT DIGITS    {      $$ = new Double((String) $1 + "." + (String) $3);    }  | DOT DIGITS    {      $$ = new Double("0." + (String) $2);    }  ;function_name:  qname/*  | node_type    {      switch (((Short) $1).shortValue ())        {        case Node.COMMENT_NODE:          $$ = "comment";          break;        case Node.TEXT_NODE:          $$ = "text";          break;        case Node.PROCESSING_INSTRUCTION_NODE:          $$ = "processing-instruction";          break;        default:          $$ = "node";          break;        }    }*/  ;variable_reference:  DOLLAR qname    {      String name = (String) $2;      $$ = new VariableReference(variableResolver, getQName(name));    }  ;name_test:  STAR    {      $$ = new NameTest(null, true, true);    }  | NAME COLON STAR    {      QName qName = getQName((String) $1);      $$ = new NameTest(qName, true, false);    }  | qname    {      QName qName = getQName((String) $1);      $$ = new NameTest(qName, false, false);    }  ;qname:  NAME  | NAME COLON NAME    {      $$ = (String) $1 + ':' + (String) $3;    }  ;node_type:  COMMENT    {      $$ = new Short(Node.COMMENT_NODE);    }  | TEXT    {      $$ = new Short(Node.TEXT_NODE);    }  | PROCESSING_INSTRUCTION    {      $$ = new Short(Node.PROCESSING_INSTRUCTION_NODE);    }  | NODE    {      $$ = new Short((short) 0);    }  ;%%}

⌨️ 快捷键说明

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