aboutsummaryrefslogtreecommitdiff
path: root/src/parcom.cr
diff options
context:
space:
mode:
authorMatthew Hall <hallmatthew314@gmail.com>2023-03-08 20:22:33 +1300
committerMatthew Hall <hallmatthew314@gmail.com>2023-03-08 20:22:33 +1300
commit61a58de90c2781562aacc8006616e97a3ff12005 (patch)
treed5764dd7c8aef213e4999cfeb5bcc798a4bb0c3b /src/parcom.cr
parentf7b089d954cb028ee3c46ad45f0f81ae2e5386cf (diff)
Implement recover
Diffstat (limited to 'src/parcom.cr')
-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