From 9734fa2d530b9496b70a388a117ea57fe5730772 Mon Sep 17 00:00:00 2001 From: Matthew Hall Date: Sun, 19 Mar 2023 23:02:29 +1300 Subject: Remove old files --- src/__OLD_parcom/sequence.cr | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 src/__OLD_parcom/sequence.cr (limited to 'src/__OLD_parcom/sequence.cr') diff --git a/src/__OLD_parcom/sequence.cr b/src/__OLD_parcom/sequence.cr deleted file mode 100644 index 6a05cde..0000000 --- a/src/__OLD_parcom/sequence.cr +++ /dev/null @@ -1,33 +0,0 @@ -require "./parser.cr" - -module Parcom - # `Sequence` is a `Parser` that combines multiple parsers and - # tries to parse all of them in succession. If all of the parsers - # succeed, the values parsed are returned in an array, in the order - # they were parsed in. If any of the parsers fail, - # the `Sequence` also fails. - class Sequence(T, V) < Parser(T, Array(V)) - # Accepts the parsers to use. - def initialize(@ps : Iterable(Parser(T, V))) - end - - # Tries each parser in order, and returns their results. - # Fail if any of the wrapped parsers fail. - # TODO: this can probably be optimised more for Arrays - # TODO: might be better to use #zip - def parse(tokens : Tokens(T)) : Result(T, Array(V)) - parsed = [] of V - - @ps.each do |p| - r = p.parse(tokens) - parsed << r.value - tokens = r.tokens - end - - Result.new(tokens, parsed) - rescue ex : ParserFail - raise ParserFail.new("Sequence: #{ex.message}") - end - end -end - -- cgit v1.2.1