X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fxpath%2Fulexer.ml;h=3e71c5a7b6b8cd4e38b2c5d17409723967f99c6a;hp=aa66179b20e2bdb23b30a3e874660f59634b001c;hb=238dc42c2cb6324b103585556c3f5f9150ee221e;hpb=30bc0bb1291426e5e26eb2dee1ffc41e4c246349 diff --git a/src/xpath/ulexer.ml b/src/xpath/ulexer.ml index aa66179..3e71c5a 100644 --- a/src/xpath/ulexer.ml +++ b/src/xpath/ulexer.ml @@ -14,7 +14,7 @@ (***********************************************************************) (* - Time-stamp: + Time-stamp: *) open Xpath_internal_parser @@ -54,7 +54,7 @@ let return lexbuf tok = (tok, L.loc lexbuf) let return_loc i j tok = (tok, (i,j)) let regexp ncname_char = - xml_letter | xml_digit | [ '-' '_' ] | xml_combining_char | xml_extender | "\\." + xml_letter | xml_digit | [ '-' '_' '.'] | xml_combining_char | xml_extender let hexa_digit = function | '0'..'9' as c -> (Char.code c) - (Char.code '0') @@ -81,15 +81,15 @@ let keyword_or_tag s = try List.assoc s [ "self", AXIS Ast.Self; - "descendant", AXIS Ast.Descendant; + "descendant", AXIS (Ast.Descendant false); "child", AXIS Ast.Child; - "descendant-or-self", AXIS Ast.DescendantOrSelf; + "descendant-or-self", AXIS (Ast.Descendant true); "attribute", AXIS Ast.Attribute; "following-sibling", AXIS Ast.FollowingSibling; "preceding-sibling", AXIS Ast.PrecedingSibling; "parent", AXIS Ast.Parent; - "ancestor", AXIS Ast.Ancestor; - "ancestor-or-self", AXIS Ast.AncestorOrSelf; + "ancestor", AXIS (Ast.Ancestor false); + "ancestor-or-self", AXIS (Ast.Ancestor true); "preceding", AXIS Ast.Preceding; "following", AXIS Ast.Following; "and", AND; @@ -123,6 +123,8 @@ let rec token = lexer | "!=" -> NEQ | "node()" -> NODE | "text()" -> TEXT + | '@' ncname -> ATTNAME (L.utf8_lexeme lexbuf) + | ncname -> keyword_or_tag (L.utf8_lexeme lexbuf) | float -> let s = L.utf8_lexeme lexbuf in @@ -165,5 +167,3 @@ and string start double = lexer | _ -> store_lexeme lexbuf; string start double lexbuf - -