Package org.parboiled.parserunners
Class RecoveringParseRunner<V>
java.lang.Object
org.parboiled.parserunners.AbstractParseRunner<V>
org.parboiled.parserunners.RecoveringParseRunner<V>
- All Implemented Interfaces:
ParseRunner<V>
A
ParseRunner
implementation that is able to recover from InvalidInputError
s 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 InvalidInputError
s in the input potentially
many more runs are performed to properly report all errors and test the various recovery strategies.-
Nested Class Summary
-
Constructor Summary
ConstructorDescriptionRecoveringParseRunner
(Rule rule) Creates a new RecoveringParseRunner instance for the given rule.RecoveringParseRunner
(Rule rule, long timeoutMillis) Creates a new RecoveringParseRunner instance for the given rule. -
Method Summary
Modifier and TypeMethodDescriptionrun
(InputBuffer inputBuffer) Performs the actual parse and creates a corresponding ParsingResult instance.static <V> ParsingResult<V>
Deprecated.As of 0.11.0 you should use the "regular" constructor and one of the "run" methods rather than this static method.Methods inherited from class org.parboiled.parserunners.AbstractParseRunner
getParseErrors, getRootMatcher, getValueStack, run, run, withParseErrors, withValueStack
-
Constructor Details
-
RecoveringParseRunner
Creates a new RecoveringParseRunner instance for the given rule.- Parameters:
rule
- the parser rule
-
RecoveringParseRunner
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 ruletimeoutMillis
- the timeout value in milliseconds
-
-
Method Details
-
run
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 itsAbstractParseRunner.run(String)
method invocation.- Parameters:
rule
- the parser rule to runinput
- the input text to run on- Returns:
- the ParsingResult for the parsing run
-
run
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
-