Class

org.apache.daffodil.dpath

DFDLPathExpressionParser

Related Doc: package dpath

Permalink

class DFDLPathExpressionParser[T <: AnyRef] extends RegexParsers

Parses DPath expressions. Most real analysis is done later. This is just the syntax being legal so that we can build the abstract syntax tree (of ElementBase-derived classes).

Use isEvaluatedAbove for expressions that are evaluated in a parent context around the element where they are expressed (e.g., occursCount)

One goal of this object, and the reason it is yet another separate compiler object, is that it uses Scala's Combinator parsers, which have been known to cause memory leaks. This class is transient. We never save it. So hopefully that discards all the state of the combinator stuff as well.

Linear Supertypes
RegexParsers, Parsers, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DFDLPathExpressionParser
  2. RegexParsers
  3. Parsers
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DFDLPathExpressionParser(qn: NamedQName, nodeInfoKind: Kind, namespaces: NamespaceBinding, context: DPathCompileInfo, isEvaluatedAbove: Boolean, host: BasicComponent)

    Permalink

Type Members

  1. type Elem = Char

    Permalink
    Definition Classes
    RegexParsers → Parsers
  2. case class Error extends NoSuccess with Product with Serializable

    Permalink
    Definition Classes
    Parsers
  3. case class Failure extends NoSuccess with Product with Serializable

    Permalink
    Definition Classes
    Parsers
  4. type Input = Reader[Elem]

    Permalink
    Definition Classes
    Parsers
  5. sealed abstract class NoSuccess extends ParseResult[Nothing]

    Permalink
    Definition Classes
    Parsers
  6. trait OnceParser[+T] extends Parser[T]

    Permalink
    Definition Classes
    Parsers
  7. sealed abstract class ParseResult[+T] extends AnyRef

    Permalink
    Definition Classes
    Parsers
  8. abstract class Parser[+T] extends (Input) ⇒ ParseResult[T]

    Permalink
    Definition Classes
    Parsers
  9. case class Success[+T] extends ParseResult[T] with Product with Serializable

    Permalink
    Definition Classes
    Parsers
  10. case class ~[+a, +b] extends Product with Serializable

    Permalink
    Definition Classes
    Parsers

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def AbbrevReverseStep: String

    Permalink
  5. def AdditiveExpr: Parser[Expression]

    Permalink
  6. def AndExpr: Parser[Expression]

    Permalink
  7. def AnyKindTest: Parser[Nothing]

    Permalink
  8. def ArgList: Parser[List[Expression]]

    Permalink
  9. def AxisStep: Parser[StepExpression]

    Permalink
  10. def CommentTest: Parser[Nothing]

    Permalink
  11. def Comp: Parser[String]

    Permalink
  12. def ComparisonExpr: Parser[Expression]

    Permalink
  13. def ContextItemExpr: String

    Permalink
  14. val DecimalLiteral: Parser[BigDecimal]

    Permalink
  15. val Digits: Regex

    Permalink
  16. val DoubleLiteral: Parser[Double]

    Permalink
  17. def EqualityComp: Parser[String]

    Permalink
  18. val Expon: Parser[String]

    Permalink
  19. def Expr: Parser[Expression]

    Permalink
  20. def ExprSingle: Parser[Expression]

    Permalink
  21. def Forward: Parser[DownStepExpression with Product with Serializable]

    Permalink
  22. def FunctionCall: Parser[FunctionCallExpression]

    Permalink
  23. def IfExpr: Parser[Expression]

    Permalink
  24. def IntegerLiteral: Parser[BigInteger]

    Permalink
  25. def KindTest: Parser[Nothing]

    Permalink
  26. def Literal: Parser[LiteralExpression]

    Permalink
  27. def MultiplicativeExpr: Parser[Expression]

    Permalink
  28. def NameTest: Parser[String]

    Permalink
  29. object NoSuccess

    Permalink
    Definition Classes
    Parsers
  30. def NodeTest: Parser[String]

    Permalink
  31. def NumberComp: Parser[String]

    Permalink
  32. def NumericLiteral: Parser[Any]

    Permalink
  33. def OnceParser[T](f: (Input) ⇒ ParseResult[T]): Parser[T] with OnceParser[T]

    Permalink
    Definition Classes
    Parsers
  34. def OrExpr: Parser[Expression]

    Permalink
  35. def ParenthesizedExpr: Parser[ParenthesizedExpression]

    Permalink
  36. def Parser[T](f: (Input) ⇒ ParseResult[T]): Parser[T]

    Permalink

    We need to override ~ of Parser so that we can consume/omit whitespace separating sub-expressions.

    We need to override ~ of Parser so that we can consume/omit whitespace separating sub-expressions.

    Before this fix the following would occur:

    Given: { ../../e1 eq 1 }

    Was interpreted as: { ../../e1eq1 }

    This was incorrect.

    Definition Classes
    DFDLPathExpressionParser → Parsers
  37. def PathExpr: Parser[PathExpression]

    Permalink
  38. def Predicate: Parser[PredicateExpression]

    Permalink
  39. def PrefixedName: Regex

    Permalink
  40. def PrimaryExpr: Parser[PrimaryExpression]

    Permalink
  41. def ProcessingInstructionTest: Parser[Nothing]

    Permalink
  42. def QualifiedName: Parser[String]

    Permalink
  43. def RefName: Parser[String]

    Permalink
  44. def RelativePathExpr: Parser[RelativePathExpression]

    Permalink
  45. def Reverse: Parser[UpStepExpression with Product with Serializable]

    Permalink
  46. def StepExpr: Parser[StepExpression]

    Permalink
  47. def StepName: Parser[String]

    Permalink
  48. val StringLiteral: Parser[String]

    Permalink

    String literal must be one regex, not separate combinators combined.

    String literal must be one regex, not separate combinators combined.

    This is to avoid whitespace collapsing inside string literals. We want whitespace to be ignored outside string literals, but not inside them.

  49. val SuccessAtEnd: Parser[Input]

    Permalink
  50. def SupportedForwardAxis: Parser[String]

    Permalink
  51. def SupportedReverseAxis: Parser[String]

    Permalink
  52. def TextTest: Parser[Nothing]

    Permalink
  53. def TopLevel: Parser[WholeExpression]

    Permalink
  54. def UnaryExpr: Parser[Expression]

    Permalink
  55. def UnprefixedName: Regex

    Permalink
  56. def UnsupportedForwardAxis: Parser[String]

    Permalink
  57. def UnsupportedReverseAxis: Parser[String]

    Permalink
  58. def ValueExpr: Parser[Expression]

    Permalink
  59. def VarRef: Parser[VariableRef]

    Permalink
  60. def Wildcard: Parser[String]

    Permalink
  61. def accept[U](expected: String, f: PartialFunction[Elem, U]): Parser[U]

    Permalink
    Definition Classes
    Parsers
  62. def accept[ES](es: ES)(implicit f: (ES) ⇒ List[Elem]): Parser[List[Elem]]

    Permalink
    Definition Classes
    Parsers
  63. implicit def accept(e: Elem): Parser[Elem]

    Permalink
    Definition Classes
    Parsers
  64. def acceptIf(p: (Elem) ⇒ Boolean)(err: (Elem) ⇒ String): Parser[Elem]

    Permalink
    Definition Classes
    Parsers
  65. def acceptMatch[U](expected: String, f: PartialFunction[Elem, U]): Parser[U]

    Permalink
    Definition Classes
    Parsers
  66. def acceptSeq[ES](es: ES)(implicit f: (ES) ⇒ Iterable[Elem]): Parser[List[Elem]]

    Permalink
    Definition Classes
    Parsers
  67. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  68. def chainl1[T, U](first: ⇒ Parser[T], p: ⇒ Parser[U], q: ⇒ Parser[(T, U) ⇒ T]): Parser[T]

    Permalink
    Definition Classes
    Parsers
  69. def chainl1[T](p: ⇒ Parser[T], q: ⇒ Parser[(T, T) ⇒ T]): Parser[T]

    Permalink
    Definition Classes
    Parsers
  70. def chainr1[T, U](p: ⇒ Parser[T], q: ⇒ Parser[(T, U) ⇒ U], combine: (T, U) ⇒ U, first: U): Parser[U]

    Permalink
    Definition Classes
    Parsers
  71. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  72. def commit[T](p: ⇒ Parser[T]): Parser[T]

    Permalink
    Definition Classes
    Parsers
  73. def compile(expr: String): CompiledExpression[T]

    Permalink
  74. def elem(e: Elem): Parser[Elem]

    Permalink
    Definition Classes
    Parsers
  75. def elem(kind: String, p: (Elem) ⇒ Boolean): Parser[Elem]

    Permalink
    Definition Classes
    Parsers
  76. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  77. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  78. def err(msg: String): Parser[Nothing]

    Permalink
    Definition Classes
    Parsers
  79. def failure(msg: String): Parser[Nothing]

    Permalink
    Definition Classes
    Parsers
  80. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  81. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  82. def getExpressionTree(expr: String): WholeExpression

    Permalink
  83. def guard[T](p: ⇒ Parser[T]): Parser[T]

    Permalink
    Definition Classes
    Parsers
  84. def handleWhiteSpace(source: CharSequence, offset: Int): Int

    Permalink
    Attributes
    protected
    Definition Classes
    RegexParsers
  85. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  86. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  87. implicit def literal(s: String): Parser[String]

    Permalink
    Definition Classes
    RegexParsers
  88. def log[T](p: ⇒ Parser[T])(name: String): Parser[T]

    Permalink
    Definition Classes
    DFDLPathExpressionParser → Parsers
  89. def mkList[T]: (~[T, List[T]]) ⇒ List[T]

    Permalink
    Definition Classes
    Parsers
  90. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  91. def not[T](p: ⇒ Parser[T]): Parser[Unit]

    Permalink
    Definition Classes
    Parsers
  92. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  93. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  94. def opt[T](p: ⇒ Parser[T]): Parser[Option[T]]

    Permalink
    Definition Classes
    Parsers
  95. val optDigits: Parser[String]

    Permalink
  96. def parse[T](p: Parser[T], in: Reader): ParseResult[T]

    Permalink
    Definition Classes
    RegexParsers
  97. def parse[T](p: Parser[T], in: CharSequence): ParseResult[T]

    Permalink
    Definition Classes
    RegexParsers
  98. def parse[T](p: Parser[T], in: Reader[Char]): ParseResult[T]

    Permalink
    Definition Classes
    RegexParsers
  99. def parseAll[T](p: Parser[T], in: CharSequence): ParseResult[T]

    Permalink
    Definition Classes
    RegexParsers
  100. def parseAll[T](p: Parser[T], in: Reader): ParseResult[T]

    Permalink
    Definition Classes
    RegexParsers
  101. def parseAll[T](p: Parser[T], in: Reader[Char]): ParseResult[T]

    Permalink
    Definition Classes
    RegexParsers
  102. def phrase[T](p: Parser[T]): Parser[T]

    Permalink
    Definition Classes
    RegexParsers → Parsers
  103. val plusMinus: Parser[String]

    Permalink
  104. def positioned[T <: Positional](p: ⇒ Parser[T]): Parser[T]

    Permalink
    Definition Classes
    RegexParsers → Parsers
  105. implicit def regex(r: Regex): Parser[String]

    Permalink
    Definition Classes
    RegexParsers
  106. def rep[T](p: ⇒ Parser[T]): Parser[List[T]]

    Permalink
    Definition Classes
    Parsers
  107. def rep1[T](first: ⇒ Parser[T], p0: ⇒ Parser[T]): Parser[List[T]]

    Permalink
    Definition Classes
    Parsers
    Annotations
    @migration
    Migration

    (Changed in version 2.9.0) The p0 call-by-name arguments is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.

  108. def rep1[T](p: ⇒ Parser[T]): Parser[List[T]]

    Permalink
    Definition Classes
    Parsers
  109. def rep1sep[T](p: ⇒ Parser[T], q: ⇒ Parser[Any]): Parser[List[T]]

    Permalink
    Definition Classes
    Parsers
  110. def repN[T](num: Int, p: ⇒ Parser[T]): Parser[List[T]]

    Permalink
    Definition Classes
    Parsers
  111. def repsep[T](p: ⇒ Parser[T], q: ⇒ Parser[Any]): Parser[List[T]]

    Permalink
    Definition Classes
    Parsers
  112. val skipWhitespace: Boolean

    Permalink
    Definition Classes
    DFDLPathExpressionParser → RegexParsers
  113. def success[T](v: T): Parser[T]

    Permalink
    Definition Classes
    Parsers
  114. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  115. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  116. val verboseParse: Boolean

    Permalink

    A helper method that turns a Parser into one that will print debugging information to stdout before and after being applied.

  117. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  118. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  119. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  120. val whiteSpace: Regex

    Permalink
    Attributes
    protected
    Definition Classes
    RegexParsers
  121. def wrapAsSuccess[T](p: ⇒ Parser[T]): Parser[ParseResult[T]]

    Permalink

Inherited from RegexParsers

Inherited from Parsers

Inherited from AnyRef

Inherited from Any

Ungrouped