Add .. and . to the path syntax.
authorKim Nguyễn <kn@lri.fr>
Wed, 13 Mar 2013 13:44:53 +0000 (14:44 +0100)
committerKim Nguyễn <kn@lri.fr>
Wed, 13 Mar 2013 13:44:53 +0000 (14:44 +0100)
src/xpath/ulexer.ml
src/xpath/xpath_internal_parser.mly

index dbde490..7a7d2a7 100644 (file)
@@ -14,7 +14,7 @@
 (***********************************************************************)
 
 (*
 (***********************************************************************)
 
 (*
-  Time-stamp: <Last modified on 2013-03-13 10:34:14 CET by Kim Nguyen>
+  Time-stamp: <Last modified on 2013-03-13 14:14:15 CET by Kim Nguyen>
 *)
 
 open Xpath_internal_parser
 *)
 
 open Xpath_internal_parser
@@ -121,6 +121,8 @@ let rec token = lexer
  | ">=" -> GTE
  | "="  -> EQ
  | "!=" -> NEQ
  | ">=" -> GTE
  | "="  -> EQ
  | "!=" -> NEQ
+ | ".." -> DOTDOT
+ | "."  -> DOT
  | "node()" -> NODE
  | "text()" -> TEXT
  | "comment()" -> COMMENT
  | "node()" -> NODE
  | "text()" -> TEXT
  | "comment()" -> COMMENT
index a40eea9..9830e76 100644 (file)
@@ -15,7 +15,7 @@
 (***********************************************************************)
 
 (*
 (***********************************************************************)
 
 (*
-  Time-stamp: <Last modified on 2013-03-13 12:38:54 CET by Kim Nguyen>
+  Time-stamp: <Last modified on 2013-03-13 14:21:53 CET by Kim Nguyen>
 *)
 
   open Ast
 *)
 
   open Ast
@@ -30,7 +30,7 @@
 %token <float> FLOAT
 %token <Ast.axis> AXIS
 %token RB LB LP RP
 %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
 %token EQ NEQ LT GT LTE GTE OR AND ADD SUB DIV MOD
 %token NODE TEXT COMMENT
 %token COMMA
@@ -91,7 +91,9 @@ relative_path:
 ;
 
 step:
 ;
 
 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
     match $1 with
       (a,b) :: r -> (a,b,$2) :: (List.map (fun (a,b) -> (a,b,[])) r)
     | [] -> assert false