package ast
Abstract syntax tree of XPath expressions, as produced by the parsers specified in the 'parse' package.
- Alphabetic
- By Inheritance
- ast
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- sealed trait AbbrevForwardStep extends ForwardStep
- sealed trait AdditionOp extends XPathElem with LeafElem
- sealed trait AdditiveExpr extends SimpleRangeExpr
Additive expression.
Additive expression. Addition/subtraction is left-associative.
- sealed trait AndExpr extends SimpleOrExpr
And-expression.
And-expression. The "and" operator is associative, so the AST could have been left-associative or right-associative.
- sealed trait Argument extends XPathElem
- final case class ArgumentList(arguments: IndexedSeq[Argument]) extends Postfix with Product with Serializable
- sealed trait ArrayConstructor extends PrimaryExpr
- sealed trait ArrayTest extends ItemType
- sealed trait ArrowExpr extends SimpleCastExpr
Arrow expression.
Arrow expression. The arrow operator is left-associative.
- final case class ArrowFunctionCall(arrowFunctionSpecifier: ArrowFunctionSpecifier, argumentList: ArgumentList) extends XPathElem with Product with Serializable
- sealed trait ArrowFunctionSpecifier extends XPathElem
- final case class AtomicOrUnionType(tpe: EQName) extends ItemType with LeafElem with Product with Serializable
- final case class AttributeAxisAbbrevForwardStep(nodeTest: NodeTest) extends AbbrevForwardStep with Product with Serializable
- final case class AttributeNameAndTypeTest(name: EQName, tpe: EQName) extends AttributeTest with LeafElem with Product with Serializable
- final case class AttributeNameTest(name: EQName) extends AttributeTest with LeafElem with Product with Serializable
- sealed trait AttributeTest extends KindTest
- final case class AttributeTypeTest(tpe: EQName) extends AttributeTest with LeafElem with Product with Serializable
- sealed trait AxisStep extends StepExpr
Axis step.
Axis step. For example: "child::book[@pageCount > 800]". The "[]" operator for adding predicates is left-associative.
- final case class BracedUriLiteral(namespaceOption: Option[String]) extends Product with Serializable
Braced URI literal.
- sealed trait CastExpr extends SimpleCastableExpr
- sealed trait CastableExpr extends SimpleTreatExpr
- sealed trait Comp extends XPathElem with LeafElem
- sealed trait ComparisonExpr extends SimpleAndExpr
Comparison expression, where the optional comparison operator is a value comparison operator, general comparison operator or node comparison operator.
- final case class CompoundAdditiveExpr(init: AdditiveExpr, op: AdditionOp, lastMultiplicativeExpr: MultiplicativeExpr) extends AdditiveExpr with Product with Serializable
- final case class CompoundAndExpr(firstComparisonExpr: ComparisonExpr, remainingComparisonExprs: NonEmptyVector[ComparisonExpr]) extends AndExpr with Product with Serializable
- final case class CompoundArrowExpr(unaryExpr: UnaryExpr, arrowFunctionCalls: NonEmptyVector[ArrowFunctionCall]) extends ArrowExpr with Product with Serializable
- final case class CompoundCastExpr(arrowExpr: ArrowExpr, singleType: SingleType) extends CastExpr with Product with Serializable
- final case class CompoundCastableExpr(castExpr: CastExpr, singleType: SingleType) extends CastableExpr with Product with Serializable
- final case class CompoundComparisonExpr(stringConcatExpr1: StringConcatExpr, comp: Comp, stringConcatExpr2: StringConcatExpr) extends ComparisonExpr with Product with Serializable
- final case class CompoundExpr(firstExprSingle: ExprSingle, remainingExprSingleSeq: NonEmptyVector[ExprSingle]) extends Expr with Product with Serializable
- final case class CompoundInstanceOfExpr(treatExpr: TreatExpr, sequenceType: SequenceType) extends InstanceOfExpr with Product with Serializable
- final case class CompoundIntersectExceptExpr(init: IntersectExceptExpr, op: IntersectExceptOp, lastInstanceOfExpr: InstanceOfExpr) extends IntersectExceptExpr with Product with Serializable
- final case class CompoundMultiplicativeExpr(init: MultiplicativeExpr, op: MultiplicativeOp, lastUnionExpr: UnionExpr) extends MultiplicativeExpr with Product with Serializable
- final case class CompoundOrExpr(firstAndExpr: AndExpr, remainingAndExprs: NonEmptyVector[AndExpr]) extends OrExpr with Product with Serializable
- final case class CompoundPostfixExpr(primaryExpr: PrimaryExpr, postfixes: NonEmptyVector[Postfix]) extends PostfixExpr with Product with Serializable
- final case class CompoundRangeExpr(additiveExpr1: AdditiveExpr, additiveExpr2: AdditiveExpr) extends RangeExpr with Product with Serializable
- final case class CompoundRelativePathExpr(init: RelativePathExpr, op: StepOp, lastStepExpr: StepExpr) extends RelativePathExpr with Product with Serializable
- final case class CompoundSimpleMapExpr(firstPathExpr: PathExpr, remainingPathExprs: NonEmptyVector[PathExpr]) extends SimpleMapExpr with Product with Serializable
- final case class CompoundStringConcatExpr(firstRangeExpr: RangeExpr, remainingRangeExprs: NonEmptyVector[RangeExpr]) extends StringConcatExpr with Product with Serializable
- final case class CompoundTreatExpr(castableExpr: CastableExpr, sequenceType: SequenceType) extends TreatExpr with Product with Serializable
- final case class CompoundUnaryExpr(ops: NonEmptyVector[UnaryOp], valueExpr: ValueExpr) extends UnaryExpr with Product with Serializable
- final case class CompoundUnionExpr(firstIntersectExceptExpr: IntersectExceptExpr, remainingIntersectExceptExprs: NonEmptyVector[IntersectExceptExpr]) extends UnionExpr with Product with Serializable
- final case class CurlyArrayConstructor(expr: EnclosedExpr) extends ArrayConstructor with Product with Serializable
- final case class DataPITest(data: StringLiteral) extends PITest with Product with Serializable
- final case class DecimalLiteral(value: BigDecimal) extends NumericLiteral with LeafElem with Product with Serializable
- sealed trait DocumentTest extends KindTest
- final case class DocumentTestContainingElementTest(elementTest: ElementTest) extends DocumentTest with Product with Serializable
- final case class DocumentTestContainingSchemaElementTest(schemaElementTest: SchemaElementTest) extends DocumentTest with Product with Serializable
- final case class DoubleLiteral(value: Double) extends NumericLiteral with LeafElem with Product with Serializable
- sealed trait EQName extends AnyRef
EQName, so either a URIQualifiedName or a QName.
- final case class EQNameAsArrowFunctionSpecifier(eqName: EQName) extends ArrowFunctionSpecifier with LeafElem with Product with Serializable
- final case class ElementNameAndTypeTest(name: EQName, tpe: EQName) extends ElementTest with LeafElem with Product with Serializable
- final case class ElementNameTest(name: EQName) extends ElementTest with LeafElem with Product with Serializable
- sealed trait ElementTest extends KindTest
- final case class ElementTypeTest(tpe: EQName) extends ElementTest with LeafElem with Product with Serializable
- final case class EnclosedExpr(exprOption: Option[Expr]) extends XPathElem with Product with Serializable
Optional expression enclosed in braces.
- final case class ExactlyOneSequenceType(itemType: ItemType) extends SequenceType with Product with Serializable
- sealed trait Expr extends XPathExpr
Expression, which is a sequence of 1 or more ExprSingle objects, separated by commas.
Expression, which is a sequence of 1 or more ExprSingle objects, separated by commas. The "comma" operator is associative, so the AST could have been left-associative or right-associative.
- sealed trait ExprSingle extends SimpleExpr
Expression-single, that is, an expression without any top-level commas.
Expression-single, that is, an expression without any top-level commas. Most XPath expressions are expression-singles.
- final case class ExprSingleArgument(exprSingle: ExprSingle) extends Argument with Product with Serializable
- final case class ForExpr(simpleForBindings: NonEmptyVector[SimpleForBinding], returnExpr: ExprSingle) extends ExprSingle with VariableIntroducingExpr with Product with Serializable
- sealed trait ForwardAxis extends XPathElem with LeafElem
- final case class ForwardAxisStep(step: ForwardStep, predicateList: IndexedSeq[Predicate]) extends AxisStep with Product with Serializable
- sealed trait ForwardStep extends XPathElem
- final case class FunctionCall(functionName: EQName, argumentList: ArgumentList) extends PrimaryExpr with Product with Serializable
- sealed trait FunctionItemExpr extends PrimaryExpr
- sealed trait FunctionTest extends ItemType
- sealed trait GeneralComp extends Comp
- final case class IfExpr(condition: Expr, thenExpr: ExprSingle, elseExpr: ExprSingle) extends ExprSingle with Product with Serializable
- final case class InlineFunctionExpr(paramListOption: Option[ParamList], resultTypeOption: Option[SequenceType], body: EnclosedExpr) extends FunctionItemExpr with Product with Serializable
- sealed trait InstanceOfExpr extends SimpleIntersectExceptExpr
- final case class IntegerLiteral(value: BigInt) extends NumericLiteral with LeafElem with Product with Serializable
- sealed trait IntersectExceptExpr extends SimpleUnionExpr
Intersect or except expression, optionally using the "intersect" or "except" operator.
Intersect or except expression, optionally using the "intersect" or "except" operator. These operators are left-associative.
- sealed trait IntersectExceptOp extends XPathElem with LeafElem
- sealed trait ItemType extends XPathElem
- sealed trait KeySpecifier extends XPathElem
- sealed trait KindTest extends NodeTest
- final case class KindTestItemType(kindTest: KindTest) extends ItemType with Product with Serializable
- sealed trait LeafElem extends XPathElem
Any leaf element in the AST of an XPath expression.
- final case class LetExpr(simpleLetBindings: NonEmptyVector[SimpleLetBinding], returnExpr: ExprSingle) extends ExprSingle with VariableIntroducingExpr with Product with Serializable
- sealed trait Literal extends PrimaryExpr
- final case class LocalNameWildcard(localName: NCName) extends Wildcard with LeafElem with Product with Serializable
- final case class MapConstructor(entries: IndexedSeq[MapConstructorEntry]) extends PrimaryExpr with Product with Serializable
- final case class MapConstructorEntry(keyExpr: ExprSingle, valueExpr: ExprSingle) extends XPathElem with Product with Serializable
- sealed trait MapTest extends ItemType
- sealed trait MultiplicativeExpr extends SimpleAdditiveExpr
Multiplicative expression.
Multiplicative expression. The corresponding multiplication/division operators are left-associative.
- sealed trait MultiplicativeOp extends XPathElem with LeafElem
- final case class NCName(name: String) extends Product with Serializable
NCName, that is, a non-colon name.
- sealed trait NameTest extends NodeTest
- final case class NamedFunctionRef(functionName: EQName, arity: BigInt) extends FunctionItemExpr with LeafElem with Product with Serializable
- final case class NamedKeySpecifier(ncName: NCName) extends KeySpecifier with LeafElem with Product with Serializable
- final case class NamespaceWildcard(bracedUriLiteral: BracedUriLiteral) extends Wildcard with LeafElem with Product with Serializable
- final case class NillableElementNameAndTypeTest(name: EQName, tpe: EQName) extends ElementTest with LeafElem with Product with Serializable
- final case class NillableElementTypeTest(tpe: EQName) extends ElementTest with LeafElem with Product with Serializable
- sealed trait NodeComp extends Comp
- sealed trait NodeTest extends XPathElem
- final case class NonAbbrevForwardStep(forwardAxis: ForwardAxis, nodeTest: NodeTest) extends ForwardStep with Product with Serializable
- final case class NonAbbrevReverseStep(reverseAxis: ReverseAxis, nodeTest: NodeTest) extends ReverseStep with Product with Serializable
- final case class NonEmptySingleType(name: EQName) extends SingleType with LeafElem with Product with Serializable
- sealed trait NumericLiteral extends Literal
- final case class OneOrMoreSequenceType(itemType: ItemType) extends SequenceType with Product with Serializable
- sealed trait OrExpr extends ExprSingle
Or-expression.
Or-expression. The "or" operator is associative, so the AST could have been left-associative or right-associative.
- sealed trait PITest extends KindTest
- final case class Param(paramName: EQName, typeDeclarationOption: Option[TypeDeclaration]) extends XPathElem with Product with Serializable
- final case class ParamList(params: IndexedSeq[Param]) extends XPathElem with Product with Serializable
- final case class ParenthesizedExpr(exprOption: Option[Expr]) extends PrimaryExpr with Product with Serializable
- final case class ParenthesizedExprAsArrowFunctionSpecifier(parenthesizedExpr: ParenthesizedExpr) extends ArrowFunctionSpecifier with Product with Serializable
- final case class ParenthesizedExprKeySpecifier(parenthesizedExpr: ParenthesizedExpr) extends KeySpecifier with Product with Serializable
- final case class ParenthesizedItemType(itemType: ItemType) extends ItemType with Product with Serializable
- sealed trait PathExpr extends SimpleSimpleMapExpr
Path expression, so a relative path expression possibly preceded by "/" or "//" (or the expression "/" itself).
Path expression, so a relative path expression possibly preceded by "/" or "//" (or the expression "/" itself). Path expressions are used to locate nodes within trees.
- final case class PathExprStartingWithDoubleSlash(relativePathExpr: RelativePathExpr) extends PathExpr with Product with Serializable
- final case class PathExprStartingWithSingleSlash(relativePathExpr: RelativePathExpr) extends PathExpr with Product with Serializable
- final case class PositionalKeySpecifier(integerLiteral: IntegerLiteral) extends KeySpecifier with Product with Serializable
- sealed trait Postfix extends XPathElem
- sealed trait PostfixExpr extends StepExpr
Postfix expression, which is a primary expression succeeded by 0 or more predicates, arguments lists and/or lookups.
Postfix expression, which is a primary expression succeeded by 0 or more predicates, arguments lists and/or lookups. Note that lookup (the "?" operator) is left-associative.
- final case class PostfixLookup(keySpecifier: KeySpecifier) extends Postfix with Product with Serializable
- final case class PotentiallyEmptySingleType(name: EQName) extends SingleType with LeafElem with Product with Serializable
- final case class Predicate(expr: Expr) extends Postfix with Product with Serializable
- final case class PrefixWildcard(prefix: NCName) extends Wildcard with LeafElem with Product with Serializable
- sealed trait PrimaryExpr extends SimplePostfixExpr
Primary expression, which are the basic primitives of the language.
Primary expression, which are the basic primitives of the language. Examples are literals, variable references, function calls etc. Note that primary expressions can be rather simple but they do not have to be simple. For example, function calls can have arguments that are themselves quite complex expressions.
- final case class QuantifiedExpr(quantifier: Quantifier, simpleBindings: NonEmptyVector[SimpleBindingInQuantifiedExpr], satisfiesExpr: ExprSingle) extends ExprSingle with VariableIntroducingExpr with Product with Serializable
- sealed trait Quantifier extends XPathElem with LeafElem
- sealed trait RangeExpr extends SimpleStringConcatExpr
Range expression, where the optional range uses keyword "to" as operator.
- sealed trait RelativePathExpr extends PathExpr
Relative path expression, consisting of a number of step expressions separated by step operators ("/" and "//").
Relative path expression, consisting of a number of step expressions separated by step operators ("/" and "//"). These step operators are left-associative.
- sealed trait ReverseAxis extends XPathElem with LeafElem
- final case class ReverseAxisStep(step: ReverseStep, predicateList: IndexedSeq[Predicate]) extends AxisStep with Product with Serializable
- sealed trait ReverseStep extends XPathElem
- final case class SchemaAttributeTest(name: EQName) extends KindTest with LeafElem with Product with Serializable
- final case class SchemaElementTest(name: EQName) extends KindTest with LeafElem with Product with Serializable
- sealed trait SequenceType extends XPathElem
- final case class SimpleAbbrevForwardStep(nodeTest: NodeTest) extends AbbrevForwardStep with Product with Serializable
- sealed trait SimpleAdditiveExpr extends AdditiveExpr
- sealed trait SimpleAndExpr extends AndExpr
- sealed trait SimpleArrowExpr extends ArrowExpr
- final case class SimpleBindingInQuantifiedExpr(varName: EQName, expr: ExprSingle) extends VariableBinding with Product with Serializable
- sealed trait SimpleCastExpr extends CastExpr
- sealed trait SimpleCastableExpr extends CastableExpr
- sealed trait SimpleComparisonExpr extends ComparisonExpr
- sealed trait SimpleExpr extends Expr
- final case class SimpleForBinding(varName: EQName, expr: ExprSingle) extends VariableBinding with Product with Serializable
- sealed trait SimpleInstanceOfExpr extends InstanceOfExpr
- sealed trait SimpleIntersectExceptExpr extends IntersectExceptExpr
- final case class SimpleLetBinding(varName: EQName, expr: ExprSingle) extends VariableBinding with Product with Serializable
- sealed trait SimpleMapExpr extends ValueExpr
Simple map expression, using the optional map operator ("!").
Simple map expression, using the optional map operator ("!"). This operator is left-associative.
- sealed trait SimpleMultiplicativeExpr extends MultiplicativeExpr
- final case class SimpleNameTest(name: EQName) extends NameTest with LeafElem with Product with Serializable
- sealed trait SimpleOrExpr extends OrExpr
- sealed trait SimplePostfixExpr extends PostfixExpr
- sealed trait SimpleRangeExpr extends RangeExpr
- sealed trait SimpleRelativePathExpr extends RelativePathExpr
- sealed trait SimpleSimpleMapExpr extends SimpleMapExpr
- sealed trait SimpleStringConcatExpr extends StringConcatExpr
- sealed trait SimpleTreatExpr extends TreatExpr
- sealed trait SimpleUnaryExpr extends UnaryExpr
- sealed trait SimpleUnionExpr extends UnionExpr
- sealed trait SingleType extends XPathElem
- final case class SquareArrayConstructor(members: IndexedSeq[ExprSingle]) extends ArrayConstructor with Product with Serializable
- sealed trait StepExpr extends SimpleRelativePathExpr
Single step in an absolute or relative path expression.
Single step in an absolute or relative path expression. Note that step expressions are either postfix expressions or axis steps.
- sealed trait StepOp extends XPathElem with LeafElem
- sealed trait StringConcatExpr extends SimpleComparisonExpr
String concatenation expression, where the optional string concatenation uses the "||" operator.
String concatenation expression, where the optional string concatenation uses the "||" operator. String concatenation is left-associative.
- final case class StringLiteral(value: String) extends Literal with LeafElem with Product with Serializable
- final case class TargetPITest(target: NCName) extends PITest with LeafElem with Product with Serializable
- sealed trait TreatExpr extends SimpleInstanceOfExpr
- final case class TypeDeclaration(tpe: SequenceType) extends XPathElem with Product with Serializable
- final case class TypedArrayTest(elementType: SequenceType) extends ArrayTest with Product with Serializable
- final case class TypedFunctionTest(argumentTypes: IndexedSeq[SequenceType], resultType: SequenceType) extends FunctionTest with Product with Serializable
- final case class TypedMapTest(keyType: AtomicOrUnionType, valueType: SequenceType) extends MapTest with Product with Serializable
- sealed trait UnaryExpr extends SimpleArrowExpr
Unary expression.
Unary expression. The corresponding unary operators are right-associative.
- final case class UnaryLookup(keySpecifier: KeySpecifier) extends PrimaryExpr with Product with Serializable
- sealed trait UnaryOp extends XPathElem with LeafElem
- sealed trait UnionExpr extends SimpleMultiplicativeExpr
Union expression, where the optional union uses operator "union" or "|".
Union expression, where the optional union uses operator "union" or "|". The union operator is associative, so the AST could have been left-associative or right-associative.
- sealed trait ValueComp extends Comp
- sealed trait ValueExpr extends SimpleUnaryExpr
- final case class VarRef(varName: EQName) extends PrimaryExpr with LeafElem with Product with Serializable
- final case class VarRefAsArrowFunctionSpecifier(varRef: VarRef) extends ArrowFunctionSpecifier with Product with Serializable
- sealed trait VariableBinding extends XPathElem
Binding of a variable name to an expression.
- sealed trait VariableIntroducingExpr extends XPathElem
XPathElem that can introduce one or more variable bindings.
- sealed trait Wildcard extends NameTest
- sealed trait XPathElem extends ElemLike[XPathElem]
XPath 3.1 AST.
XPath 3.1 AST. The root of the type hierarchy is XPathElem. It offers the ElemApi query API.
The requirements on this AST are as follows:
- It must represent the syntax tree of a successfully parsed XPath expression
- It is not annotated with more semantic information, like type information that is not included in the XPath expression
- It does not know anything about the context in which it runs, like bound namespaces etc.
- It is rich enough to be able to serialize the AST back to XPath, knowing exactly where to place parentheses, braces, etc.
- It should help evaluation, so it should model operator associativity and precedence correctly, where feasible
- It must be readable in that object composition trees are not unnecessarily deep and therefore hard to comprehend
- Serialization of the AST to XPath may lead to differences in whitespace (and operator aliases), but other than that the result must be the same
- The AST class hierarchy does not have to use the exact same names as the XPath grammar
- Instances of the AST classes are easy to create in an ad-hoc manner, so they contain no parsing state
- The AST classes are case classes, with value equality and good support for pattern matching
It would be natural for the AST types to have IS-A relationships modeled as type inheritance, and HAS-A relationships modeled as composition. Where feasible, this approach has been followed. Consequently, sealed trait inheritance has been used a lot (IS-A instead of HAS-A), and unnecessarily deep object trees are prevented in this way.
Having such an AST of a successfully parsed XPath expression, it must be easy to reliably find used namespace prefixes, for example.
The AST, as well as the parser, were developed using the XPath 3.1 specification as input. In particular, see https://www.w3.org/TR/xpath-31/#id-grammar and https://www.w3.org/TR/xpath-31/#id-precedence-order. Note that the grammar in isolation does not clearly convey left or right associativity of operators, so the extra information about operator precedence and associativity is essential for understanding the "structure" of compound expressions.
TODO Improve several class names.
- sealed trait XPathExpr extends XPathElem
XPath expression.
- final case class ZeroOrMoreSequenceType(itemType: ItemType) extends SequenceType with Product with Serializable
- final case class ZeroOrOneSequenceType(itemType: ItemType) extends SequenceType with Product with Serializable
Value Members
- case object AbbrevReverseStep extends ReverseStep with Product with Serializable
- object AdditionOp
- object AdditiveExpr
- object AndExpr
- case object AnyArrayTest extends ArrayTest with LeafElem with Product with Serializable
- case object AnyAttributeTest extends AttributeTest with LeafElem with Product with Serializable
- case object AnyElementTest extends ElementTest with LeafElem with Product with Serializable
- case object AnyFunctionTest extends FunctionTest with LeafElem with Product with Serializable
- case object AnyItemType extends ItemType with LeafElem with Product with Serializable
- case object AnyKindTest extends KindTest with LeafElem with Product with Serializable
- case object AnyMapTest extends MapTest with LeafElem with Product with Serializable
- case object AnyWildcard extends Wildcard with LeafElem with Product with Serializable
- case object ArgumentPlaceholder extends Argument with LeafElem with Product with Serializable
- object ArrowExpr
- object BracedUriLiteral extends Serializable
- object CastExpr
- object CastableExpr
- case object CommentTest extends KindTest with LeafElem with Product with Serializable
- case object ContextItemExpr extends PrimaryExpr with LeafElem with Product with Serializable
- object EQName
- case object EmptySequenceType extends SequenceType with LeafElem with Product with Serializable
- object Expr
- object ForwardAxis
- object GeneralComp
- object InstanceOfExpr
- object IntersectExceptExpr
- object IntersectExceptOp
- object MultiplicativeExpr
- object MultiplicativeOp
- object NCName extends Serializable
- object Names
Names, as per the XML specification.
Names, as per the XML specification. See for example https://www.w3.org/TR/REC-xml/#NT-Name.
Only characters in the Unicode BMP (max. \uFFFF) are considered. So the range from #x10000 to #xEFFFF is not recognized as valid name characters in this implementation.
The functions of this class must be fast, because they are typically called very many times during parsing of XPath expressions.
Classes like NCName lean on this object. An NCName is an XML name without colon.
- case object NamespaceNodeTest extends KindTest with LeafElem with Product with Serializable
- object NodeComp
- object OrExpr
- object PostfixExpr
- object Quantifier
- object RelativePathExpr
- object ReverseAxis
- case object SimpleDocumentTest extends DocumentTest with LeafElem with Product with Serializable
- object SimpleMapExpr
- case object SimplePITest extends PITest with LeafElem with Product with Serializable
- case object SlashOnlyPathExpr extends PathExpr with LeafElem with Product with Serializable
- object StepOp
- object StringConcatExpr
- case object TextTest extends KindTest with LeafElem with Product with Serializable
- object TreatExpr
- object UnaryExpr
- object UnaryOp
- object UnionExpr
- object ValueComp
- case object WildcardKeySpecifier extends KeySpecifier with LeafElem with Product with Serializable