Class VarFramingMatcher

java.lang.Object
org.parboiled.matchers.VarFramingMatcher
All Implemented Interfaces:
Matcher, Rule, GraphNode<Matcher>

public class VarFramingMatcher extends Object implements Matcher
Special wrapping matcher that manages the creation and destruction of execution frames for a number of action vars.
  • Constructor Details

    • VarFramingMatcher

      public VarFramingMatcher(Rule inner, Var[] variables)
  • Method Details

    • match

      public <V> boolean match(MatcherContext<V> context)
      Description copied from interface: Matcher
      Tries a match on the given MatcherContext.
      Specified by:
      match in interface Matcher
      Parameters:
      context - the MatcherContext
      Returns:
      true if the match was successful
    • getChildren

      public List<Matcher> getChildren()
      Description copied from interface: GraphNode
      Returns the sub nodes of this node.
      Specified by:
      getChildren in interface GraphNode<Matcher>
      Returns:
      the sub nodes
    • label

      public Rule label(String label)
      Description copied from interface: Rule
      Attaches a label to this Rule. Corresponds to the @Label annotation.
      Specified by:
      label in interface Rule
      Parameters:
      label - the label
      Returns:
      this Rule
    • suppressNode

      public Rule suppressNode()
      Description copied from interface: Rule
      Instructs parboiled to not create a parse tree node for this rule and all subrules, which can significantly increase parsing performance. Corresponds to the @SuppressNode annotation.
      Specified by:
      suppressNode in interface Rule
      Returns:
      this Rule
    • suppressSubnodes

      public Rule suppressSubnodes()
      Description copied from interface: Rule
      Instructs parboiled to not create parse tree nodes for the subrules of this rule, which can significantly increase parsing performance. Corresponds to the @SuppressSubnodes annotation.
      Specified by:
      suppressSubnodes in interface Rule
      Returns:
      this Rule
    • skipNode

      public Rule skipNode()
      Description copied from interface: Rule
      Instructs parboiled to not create a parse tree node for this rule. The parse tree nodes of all subrules are directly attached to the parent of this rule (or more correctly: the first ancestor not having been marked skipNode(). Note that, even though a rule marked as skipNode() does not create a parse tree node of its own and is therefore "invisible" in the parse tree, the rule still exists as a regular rule in the rule tree and is accompanied by a "regular" rule Context during rule matching. Corresponds to the @SkipNode annotation.
      Specified by:
      skipNode in interface Rule
      Returns:
      this Rule
    • memoMismatches

      public Rule memoMismatches()
      Description copied from interface: Rule
      Enables memoization of rule mismatches for consecutive rule applications at the same input location.
      Specified by:
      memoMismatches in interface Rule
      Returns:
      this rule
    • getLabel

      public String getLabel()
      Specified by:
      getLabel in interface Matcher
      Returns:
      the label of the matcher (which is identical to the label of the Rule this matcher matches)
    • hasCustomLabel

      public boolean hasCustomLabel()
      Specified by:
      hasCustomLabel in interface Matcher
      Returns:
      true if this matcher has been assigned a custom label
    • isNodeSuppressed

      public boolean isNodeSuppressed()
      Specified by:
      isNodeSuppressed in interface Matcher
      Returns:
      true if this matcher has been marked with @SuppressNode
    • areSubnodesSuppressed

      public boolean areSubnodesSuppressed()
      Specified by:
      areSubnodesSuppressed in interface Matcher
      Returns:
      true if this matcher has been marked with @SuppressSubnodes
    • isNodeSkipped

      public boolean isNodeSkipped()
      Specified by:
      isNodeSkipped in interface Matcher
      Returns:
      true if this matcher has been marked with @SkipNode
    • areMismatchesMemoed

      public boolean areMismatchesMemoed()
      Specified by:
      areMismatchesMemoed in interface Matcher
      Returns:
      true if this matcher has been marked with @MemoMismatches
    • setTag

      public void setTag(Object tagObject)
      Description copied from interface: Matcher
      Associates an arbitrary object with this matcher. Used for example during profiling and packrat parsing. The matcher implementations themselves completely ignore the contents of this property. It purely serves as a performance optimization for ParseRunners and/or MatchHandlers and saves these from the need to use Map<Matcher, XYZ> structures for associating internal objects with matchers.
      Specified by:
      setTag in interface Matcher
      Parameters:
      tagObject - the tag object
    • getTag

      public Object getTag()
      Description copied from interface: Matcher
      Retrieves a previously set tag object.
      Specified by:
      getTag in interface Matcher
      Returns:
      the tag object or null if none set
    • getSubContext

      public MatcherContext getSubContext(MatcherContext context)
      Description copied from interface: Matcher
      Creates a context for the matching of this matcher using the given parent context.
      Specified by:
      getSubContext in interface Matcher
      Parameters:
      context - the parent context
      Returns:
      the context this matcher is to be run in
    • accept

      public <R> R accept(MatcherVisitor<R> visitor)
      Description copied from interface: Matcher
      Accepts the given matcher visitor.
      Specified by:
      accept in interface Matcher
      Parameters:
      visitor - the visitor
      Returns:
      the value returned by the given visitor
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • unwrap

      public static Matcher unwrap(Matcher matcher)
      Retrieves the innermost Matcher that is not a VarFramingMatcher.
      Parameters:
      matcher - the matcher to unwrap
      Returns:
      the given instance if it is not a VarFramingMatcher, otherwise the innermost Matcher