RuleDSL

org.parboiled2.RuleDSL

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Show all
Known subtypes
class Parser

Members list

Type members

Inherited classlikes

sealed trait ActionOperator[I <: HList, O <: HList, Ops]

Attributes

Inherited from:
RuleDSLActions
Supertypes
class Object
trait Matchable
class Any
sealed trait CharRangeSupport

Attributes

Inherited from:
RuleDSLBasics
Supertypes
class Object
trait Matchable
class Any
sealed trait NTimes

Attributes

Inherited from:
RuleDSLCombinators
Supertypes
class Object
trait Matchable
class Any
trait WithSeparatedBy[I <: HList, O <: HList]

Attributes

Inherited from:
RuleDSLCombinators
Supertypes
class Object
trait Matchable
class Any

Value members

Inherited methods

def &(r: Rule[_, _]): Rule0

Runs its inner rule but resets the parser (cursor and value stack) afterwards, succeeds only if its inner rule succeeded.

Runs its inner rule but resets the parser (cursor and value stack) afterwards, succeeds only if its inner rule succeeded.

Attributes

Inherited from:
RuleDSLCombinators
def ANY: Rule0

Matches any character except EOI.

Matches any character except EOI.

Attributes

Inherited from:
RuleDSLBasics
def EOI: Char

Matches the EOI (end-of-input) character.

Matches the EOI (end-of-input) character.

Attributes

Inherited from:
RuleDSLBasics
def MATCH: Rule0

Matches no character (i.e. doesn't cause the parser to make any progress) but succeeds always (as a rule).

Matches no character (i.e. doesn't cause the parser to make any progress) but succeeds always (as a rule).

Attributes

Inherited from:
RuleDSLBasics
def MISMATCH[I <: HList, O <: HList]: Rule[I, O]

A generic Rule that always fails.

A generic Rule that always fails.

Attributes

Inherited from:
RuleDSLBasics

A Rule0 that always fails.

A Rule0 that always fails.

Attributes

Inherited from:
RuleDSLBasics
def anyOf(chars: String): Rule0

Matches any single one of the given characters.

Matches any single one of the given characters.

Note: This helper has O(n) runtime with n being the length of the given string. If your string consists only of 7-bit ASCII chars using a pre-allocated CharPredicate will be more efficient.

Attributes

Inherited from:
RuleDSLBasics
def atomic[I <: HList, O <: HList](r: Rule[I, O]): Rule[I, O]

Marks a rule as "undividable" from an error reporting perspective. The parser will never report errors inside of the marked rule. Rather, if the rule mismatches, the error will be reported at the very beginning of the attempted rule match.

Marks a rule as "undividable" from an error reporting perspective. The parser will never report errors inside of the marked rule. Rather, if the rule mismatches, the error will be reported at the very beginning of the attempted rule match.

Attributes

Inherited from:
RuleDSLCombinators
def capture[I <: HList, O <: HList](r: Rule[I, O])(implicit p: Prepend[O, String :: HNil]): Rule[I, Out]

Pushes the input text matched by its inner rule onto the value stack after its inner rule has been run successfully (and only then).

Pushes the input text matched by its inner rule onto the value stack after its inner rule has been run successfully (and only then).

Attributes

Inherited from:
RuleDSLActions
def drop[T](implicit h: HListable[T]): PopRule[Out]

Drops one or more values from the top of the value stack. E.g. drop[Int] will drop the top Int value and drop[Int :: String :: HNil] will drop the top two values, which must be an Int underneath a String (the string being the top stack element).

Drops one or more values from the top of the value stack. E.g. drop[Int] will drop the top Int value and drop[Int :: String :: HNil] will drop the top two values, which must be an Int underneath a String (the string being the top stack element).

Attributes

Inherited from:
RuleDSLActions
def fail(expected: String): Rule0

A rule that always fails and causes the parser to immediately terminate the parsing run. The resulting parse error only has a single trace with a single frame which holds the given error message.

A rule that always fails and causes the parser to immediately terminate the parsing run. The resulting parse error only has a single trace with a single frame which holds the given error message.

Attributes

Inherited from:
RuleDSLBasics
def failX[I <: HList, O <: HList](expected: String): Rule[I, O]

Fully generic variant of fail.

Fully generic variant of fail.

Attributes

Inherited from:
RuleDSLBasics
def ignoreCase(s: String): Rule0

Matches the given string of characters case insensitively. Note: the given string must be specified in all lower-case! This requirement is currently NOT enforced!

Matches the given string of characters case insensitively. Note: the given string must be specified in all lower-case! This requirement is currently NOT enforced!

Attributes

Inherited from:
RuleDSLBasics
def ignoreCase(c: Char): Rule0

Matches the given single character case insensitively. Note: the given character must be specified in lower-case! This requirement is currently NOT enforced!

Matches the given single character case insensitively. Note: the given character must be specified in lower-case! This requirement is currently NOT enforced!

Attributes

Inherited from:
RuleDSLBasics
def noneOf(chars: String): Rule0

Matches any single character except the ones in the given string and except EOI.

Matches any single character except the ones in the given string and except EOI.

Note: This helper has O(n) runtime with n being the length of the given string. If your string consists only of 7-bit ASCII chars using a pre-allocated CharPredicate will be more efficient.

Attributes

Inherited from:
RuleDSLBasics
def oneOrMore[I <: HList, O <: HList](r: Rule[I, O])(implicit l: Lifter[Seq, I, O]): Rule[In, StrictOut] & Repeated

Runs its inner rule until it fails, succeeds if its inner rule succeeded at least once. Resulting rule type is Rule0 if r == Rule0 Rule1[Seq[T]] if r == Rule1[T] Rule[I, O] if r == Rule[I, O <: I] // so called "reduction", which leaves the value stack unchanged on a type level

Runs its inner rule until it fails, succeeds if its inner rule succeeded at least once. Resulting rule type is Rule0 if r == Rule0 Rule1[Seq[T]] if r == Rule1[T] Rule[I, O] if r == Rule[I, O <: I] // so called "reduction", which leaves the value stack unchanged on a type level

Attributes

Inherited from:
RuleDSLCombinators
def optional[I <: HList, O <: HList](r: Rule[I, O])(implicit l: Lifter[Option, I, O]): Rule[In, OptionalOut]

Runs its inner rule and succeeds even if the inner rule doesn't. Resulting rule type is Rule0 if r == Rule0 Rule1[Option[T]] if r == Rule1[T] Rule[I, O] if r == Rule[I, O <: I] // so called "reduction", which leaves the value stack unchanged on a type level

Runs its inner rule and succeeds even if the inner rule doesn't. Resulting rule type is Rule0 if r == Rule0 Rule1[Option[T]] if r == Rule1[T] Rule[I, O] if r == Rule[I, O <: I] // so called "reduction", which leaves the value stack unchanged on a type level

Attributes

Inherited from:
RuleDSLCombinators
def push[T](value: T)(implicit h: HListable[T]): RuleN[Out]

Pushes the given value onto the value stack.

Pushes the given value onto the value stack.

  • if T is Unit nothing is pushed (i.e. push with a block/expression evaluating to Unit is identical to run)
  • if T <: HList all values of the HList is pushed as individual elements
  • otherwise a single value of type T is pushed.

Attributes

Inherited from:
RuleDSLActions
def quiet[I <: HList, O <: HList](r: Rule[I, O]): Rule[I, O]

Marks a rule as "quiet" from an error reporting perspective. Quiet rules only show up in error rule traces if no "unquiet" rules match up to the error location. This marker frequently used for low-level syntax rules (like whitespace or comments) that might be matched essentially everywhere and are therefore not helpful when appearing in the "expected" set of an error report.

Marks a rule as "quiet" from an error reporting perspective. Quiet rules only show up in error rule traces if no "unquiet" rules match up to the error location. This marker frequently used for low-level syntax rules (like whitespace or comments) that might be matched essentially everywhere and are therefore not helpful when appearing in the "expected" set of an error report.

Attributes

Inherited from:
RuleDSLCombinators
def run[T](arg: T)(implicit rr: RunResult[T]): Out

Runs the given block / expression / action function. A run rule can have several shapes, depending on its argument type. If the arg evaluates to

Runs the given block / expression / action function. A run rule can have several shapes, depending on its argument type. If the arg evaluates to

  • a rule (i.e. has type R <: Rule[_, _]) the result type of run is this rule's type (i.e. R) and the produced rule is immediately executed.

  • a function with 1 to 5 parameters these parameters are mapped against the top of the value stack, popped and the function executed. Thereby the function behaves just like an action function for the ~> operator, i.e. if it produces a Unit value this result is simply dropped. HList results are pushed onto the value stack (all their elements individually), rule results are immediately executed and other result values are pushed onto the value stack as a single element.

  • a function with one HList parameter the behavior is similar to the previous case with the difference that the elements of this parameter HList are mapped against the value stack top. This allows for consumption of an arbitrary number of value stack elements. (Note: This feature of run is not yet currently implemented.)

  • any other value the result type of run is an always succeeding Rule0.

NOTE: Even though the block is not a call-by-name parameter it will be executed for every rule application anew! (Since the expression is directly transplanted into the rule method by the rule macro.

Attributes

Inherited from:
RuleDSLActions
def runSubParser[I <: HList, O <: HList](f: ParserInput => Rule[I, O]): Rule[I, O]

Allows creation of a sub parser and running of one of its rules as part of the current parsing process. The subparser will start parsing at the current input position and the outer parser (this parser) will continue where the sub-parser stopped.

Allows creation of a sub parser and running of one of its rules as part of the current parsing process. The subparser will start parsing at the current input position and the outer parser (this parser) will continue where the sub-parser stopped.

Attributes

Inherited from:
RuleDSLCombinators
def test(condition: Boolean): Rule0

Implements a semantic predicate. If the argument expression evaluates to true the created rule matches otherwise it doesn't.

Implements a semantic predicate. If the argument expression evaluates to true the created rule matches otherwise it doesn't.

Attributes

Inherited from:
RuleDSLActions
def valueMap[T](m: Map[String, T], ignoreCase: Boolean)(implicit h: HListable[T]): RuleN[Out]

Matches any of the given maps keys and pushes the respective value upon a successful match.

Matches any of the given maps keys and pushes the respective value upon a successful match.

Value parameters

ignoreCase

a flag that tells if map keys case should be ignored

Attributes

Inherited from:
RuleDSLBasics
def zeroOrMore[I <: HList, O <: HList](r: Rule[I, O])(implicit l: Lifter[Seq, I, O]): Rule[In, OptionalOut] & Repeated

Runs its inner rule until it fails, always succeeds. Resulting rule type is Rule0 if r == Rule0 Rule1[Seq[T]] if r == Rule1[T] Rule[I, O] if r == Rule[I, O <: I] // so called "reduction", which leaves the value stack unchanged on a type level

Runs its inner rule until it fails, always succeeds. Resulting rule type is Rule0 if r == Rule0 Rule1[Seq[T]] if r == Rule1[T] Rule[I, O] if r == Rule[I, O <: I] // so called "reduction", which leaves the value stack unchanged on a type level

Attributes

Inherited from:
RuleDSLCombinators

Implicits

Inherited implicits

implicit def ch(c: Char): Rule0

Matches the given single character.

Matches the given single character.

Attributes

Inherited from:
RuleDSLBasics
implicit def int2NTimes(i: Int): NTimes

Attributes

Inherited from:
RuleDSLCombinators
implicit def predicate(p: CharPredicate): Rule0

Matches any (single) character matched by the given CharPredicate.

Matches any (single) character matched by the given CharPredicate.

Attributes

Inherited from:
RuleDSLBasics
implicit def range2NTimes(range: Range): NTimes

Attributes

Inherited from:
RuleDSLCombinators
implicit def rule2ActionOperator[I <: HList, O <: HList](r: Rule[I, O])(implicit ops: ActionOps[I, O]): ActionOperator[I, O, Out]

Attributes

Inherited from:
RuleDSLActions
implicit def rule2WithSeparatedBy[I <: HList, O <: HList](r: Rule[I, O] & Repeated): WithSeparatedBy[I, O]

Attributes

Inherited from:
RuleDSLCombinators
implicit def str(s: String): Rule0

Matches the given string of characters.

Matches the given string of characters.

Attributes

Inherited from:
RuleDSLBasics
implicit def str2CharRangeSupport(s: String): CharRangeSupport

Attributes

Inherited from:
RuleDSLBasics
implicit def valueMap[T](m: Map[String, T])(implicit h: HListable[T]): RuleN[Out]

Matches any of the given maps keys and pushes the respective value upon a successful match.

Matches any of the given maps keys and pushes the respective value upon a successful match.

Attributes

Inherited from:
RuleDSLBasics