projects
/
tatoo.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow the @id syntax in XPath expressions.
[tatoo.git]
/
src
/
xpath
/
xpath_internal_parser.mly
diff --git
a/src/xpath/xpath_internal_parser.mly
b/src/xpath/xpath_internal_parser.mly
index
04ecf36
..
3651d2c
100644
(file)
--- a/
src/xpath/xpath_internal_parser.mly
+++ b/
src/xpath/xpath_internal_parser.mly
@@
-15,7
+15,7
@@
(***********************************************************************)
(*
(***********************************************************************)
(*
- Time-stamp: <Last modified on 2013-0
2-07 10:31:01
CET by Kim Nguyen>
+ Time-stamp: <Last modified on 2013-0
3-10 14:31:48
CET by Kim Nguyen>
*)
open Ast
*)
open Ast
@@
-23,6
+23,7
@@
%}
%token <string> TAG
%}
%token <string> TAG
+%token <string> ATTNAME
%token <string> STRING
%token <int> INT
%token <float> FLOAT
%token <string> STRING
%token <int> INT
%token <float> FLOAT
@@
-68,14
+69,14
@@
simple_path:
absolute_path:
SLASH relative_path { $2 }
absolute_path:
SLASH relative_path { $2 }
-| SLASHSLASH relative_path {
(DescendantOrSelf, node, []) :: $2
}
+| SLASHSLASH relative_path {
$2 @ [(Descendant true, node, [])]
}
;
relative_path:
step { [ $1 ] }
| relative_path SLASH step { $3 :: $1 }
| relative_path SLASHSLASH step { $3
;
relative_path:
step { [ $1 ] }
| relative_path SLASH step { $3 :: $1 }
| relative_path SLASHSLASH step { $3
- :: (Descendant
OrSelf
, node, [])
+ :: (Descendant
true
, node, [])
:: $1 }
;
:: $1 }
;
@@
-84,7
+85,16
@@
step:
;
axis_test:
;
axis_test:
- AXIS COLONCOLON test { $1, $3 }
+ AXIS COLONCOLON test { let a, t = $1, $3 in
+ if a == Attribute && Utils.QNameSet.is_finite t then
+ (a, Utils.QNameSet.fold
+ (fun t a ->
+ Utils.QNameSet.add
+ (Utils.QName.add_attribute_prefix t) a)
+ t Utils.QNameSet.empty)
+ else
+ (a, t)
+ }
| test { Child, $1 }
| AXIS {
let _ = Format.flush_str_formatter () in
| test { Child, $1 }
| AXIS {
let _ = Format.flush_str_formatter () in
@@
-92,6
+102,8
@@
axis_test:
let a = Format.flush_str_formatter () in
Child, Utils.QNameSet.singleton (Utils.QName.of_string a)
}
let a = Format.flush_str_formatter () in
Child, Utils.QNameSet.singleton (Utils.QName.of_string a)
}
+| ATTNAME { (Attribute,
+ Utils.QNameSet.singleton (Utils.QName.of_string $1)) }
;
test:
;
test:
@@
-142,4
+154,3
@@
arg_list1:
expr { [ $1 ] }
| arg_list1 COMMA expr { $3 :: $1 }
;
expr { [ $1 ] }
| arg_list1 COMMA expr { $3 :: $1 }
;
-