(***********************************************************************)
(*
- Time-stamp: <Last modified on 2013-03-13 12:11:04 CET by Kim Nguyen>
+ Time-stamp: <Last modified on 2013-03-13 14:21:53 CET by Kim Nguyen>
*)
open Ast
%token <float> FLOAT
%token <Ast.axis> AXIS
%token RB LB LP RP
-%token SLASH SLASHSLASH COLONCOLON STAR PIPE
+%token SLASH SLASHSLASH COLONCOLON STAR PIPE DOT DOTDOT
%token EQ NEQ LT GT LTE GTE OR AND ADD SUB DIV MOD
%token NODE TEXT COMMENT
%token COMMA
;
step:
- axis_test pred_list {
+ DOT { [ (Self, (node, NodeKind.Node), []) ] }
+| DOTDOT { [ (Parent, (node, NodeKind.Node), []) ] }
+| axis_test pred_list {
match $1 with
(a,b) :: r -> (a,b,$2) :: (List.map (fun (a,b) -> (a,b,[])) r)
| [] -> assert false
| COMMENT { Utils.QNameSet.singleton(Utils.QName.comment),
NodeKind.Comment
}
-| PI { Utils.QNameSet.singleton(
- Utils.QName.processing_instruction (
- Utils.QName.of_string $1)
- ), NodeKind.ProcessingInstruction
+| PI { (if $1 = "" then star
+ else Utils.QNameSet.singleton(
+ Utils.QName.processing_instruction (
+ Utils.QName.of_string $1)
+ )), NodeKind.ProcessingInstruction
}
| TAG { Utils.QNameSet.singleton(Utils.QName.of_string $1),
NodeKind.Element