From e199329cbb23352fbd18c2eb2586b564ad9b206c Mon Sep 17 00:00:00 2001 From: Matthew Hall Date: Wed, 8 Mar 2023 20:55:04 +1300 Subject: Add Parser#recover --- src/parcom.cr | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/parcom.cr b/src/parcom.cr index 87c73c5..a2b8b92 100644 --- a/src/parcom.cr +++ b/src/parcom.cr @@ -74,6 +74,10 @@ module Parcom def map(f : V -> U) : Map(T, V, U) forall U Map.new(self, f) end + + def recover(default : T) + Recover.new(self, default) + end end class Flunk(T, V) < Parser(T, V) @@ -209,12 +213,6 @@ module Parcom def parse(tokens : TokenStream(T)) : Result(T, V?) r = @p.parse?(tokens) - if r.nil? - Result.new(tokens, nil) - else - Result.new(r.tokens, r.value || nil) - end - new_tokens = r.nil? ? tokens : r.tokens new_value = r.nil? ? nil : r.value Result.new(new_tokens, new_value) -- cgit v1.2.1