Class RecoveringParseRunner<V>

  • All Implemented Interfaces:
    ParseRunner<V>

    public class RecoveringParseRunner<V>
    extends AbstractParseRunner<V>
    A ParseRunner implementation that is able to recover from InvalidInputErrors in the input and therefore report more than just the first InvalidInputError if the input does not conform to the rule grammar. Error recovery is done by attempting to either delete an error character, insert a potentially missing character or do both at once (which is equivalent to a one char replace) whereby this implementation is able to determine itself which of these options is the best strategy. If the parse error cannot be overcome by either deleting, inserting or replacing one character a resynchronization rule is determined and the parsing process resynchronized, so that parsing can still continue. In this way the RecoveringParseRunner is able to completely parse all input texts (This ParseRunner never returns an unmatched ParsingResult). If the input is error free this ParseRunner implementation will only perform one parsing run, with the same speed as the BasicParseRunner. However, if there are InvalidInputErrors in the input potentially many more runs are performed to properly report all errors and test the various recovery strategies.
    • Constructor Detail

      • RecoveringParseRunner

        public RecoveringParseRunner​(Rule rule)
        Creates a new RecoveringParseRunner instance for the given rule.
        Parameters:
        rule - the parser rule
      • RecoveringParseRunner

        public RecoveringParseRunner​(Rule rule,
                                     long timeoutMillis)
        Creates a new RecoveringParseRunner instance for the given rule. A parsing run will throw a TimeoutException if it takes longer than the given number if milliseconds.
        Parameters:
        rule - the parser rule
        timeoutMillis - the timeout value in milliseconds
    • Method Detail

      • run

        @Deprecated
        public static <V> ParsingResult<V> run​(Rule rule,
                                               String input)
        Deprecated.
        As of 0.11.0 you should use the "regular" constructor and one of the "run" methods rather than this static method. This method will be removed in one of the coming releases.
        Create a new RecoveringParseRunner instance with the given rule and input text and returns the result of its AbstractParseRunner.run(String) method invocation.
        Parameters:
        rule - the parser rule to run
        input - the input text to run on
        Returns:
        the ParsingResult for the parsing run
      • run

        public ParsingResult<V> run​(InputBuffer inputBuffer)
        Description copied from interface: ParseRunner
        Performs the actual parse and creates a corresponding ParsingResult instance.
        Parameters:
        inputBuffer - the inputBuffer to use
        Returns:
        the ParsingResult for the run