(******************************************************************************) (* SXSI : XPath evaluator *) (* Kim Nguyen (Kim.Nguyen@nicta.com.au) *) (* Copyright NICTA 2008 *) (* Distributed under the terms of the LGPL (see LICENCE) *) (******************************************************************************) module Ast : sig type path = Absolute of step list | AbsoluteDoS of step list| Relative of step list and step = axis * test * predicate and axis = Self | Attribute | Child | Descendant | DescendantOrSelf | FollowingSibling | Parent | Ancestor | AncestorOrSelf |PrecedingSibling | Preceding | Following and test = TagSet.t and predicate = Or of predicate*predicate | And of predicate*predicate | Not of predicate | Expr of expression and expression = Path of path | Function of string*expression list | Int of int | String of string | True | False type t = path val print : Format.formatter -> path -> unit val print_step : Format.formatter -> step -> unit val print_axis : Format.formatter -> axis -> unit val print_test : Format.formatter -> test -> unit val print_predicate : Format.formatter -> predicate -> unit val print_expression : Format.formatter -> expression -> unit end module Parser : sig val parse_string : string -> Ast.path val parse : string -> Ast.path end module Compile : sig val compile : ?querystring:string -> Ast.path -> 'a Ata.t * (Tag.t*Ata.StateSet.t) list * ([ `CONTAINS | `STARTSWITH | `ENDSWITH | `EQUALS ]*string) option end