module Ast :
sig
- type path = Absolute of step list | Relative of step list
+ type path = single_path list
+ and single_path = Absolute of step list | Relative of step list
+ and step = axis * test * expr list
+ and axis = Self | Attribute | Child | Descendant | DescendantOrSelf | FollowingSibling
+ | Parent | Ancestor | AncestorOrSelf | PrecedingSibling | Preceding | Following
- and step = axis * test * predicate
- and axis = Self | Attribute | Child | Descendant | DescendantOrSelf
- | FollowingSibling
- | Parent | Ancestor | AncestorOrSelf |PrecedingSibling
- | Preceding | Following
- and test = Simple of QNameSet.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
+ and test = Simple of QNameSet.t
+
+ and binop = Eq | Neq | Lt | Gt | Lte | Gte | Or | And | Add | Sub | Mult | Div | Mod
+ and unop = Neg
+ and expr =
+ | Number of [ `Int of int | `Float of float ]
+ | String of string
+ | Fun_call of QName.t * expr list
+ | Path of path
+ | Binop of expr * binop * expr
+ | Unop of unop * expr
-val parse_string : string -> Ast.path
-val parse_file : in_channel -> Ast.path
+ type t = path
+end