blob: 1f65bfcd398111721413ff4e2a24e1dbaa348b2e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
require "./parser.cr"
module Parcom
# `AnyToken` is a `Parser` that consumes exactly one token from
# the input stream and returns it.
# It fails if the input stream is empty.
class AnyToken(T) < Parser(T, T)
# Parses the first token in the input, fails if the input is empty.
def parse(tokens : Tokens(T)) : Result(T, T)
if tokens.empty?
raise ParserFail.new("AnyToken: input was empty")
else
Result.new(tokens[1..], tokens[0])
end
end
end
end
|