aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/parcom.cr8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/parcom.cr b/src/parcom.cr
index 4d49a97..f102728 100644
--- a/src/parcom.cr
+++ b/src/parcom.cr
@@ -192,7 +192,13 @@ module Parcom
end
end
- class Recover
+ class Recover(T, V) < Parser(T, V)
+ def initialize(@p : Parser(T, V), @default : V)
+ end
+
+ def parse(tokens : TokenStream(T)) : Result(T, V)
+ @p.parse?(tokens) || Result.new(tokens, @default)
+ end
end
class Optional