7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/l43_peg/parsers/list_parser.rb', line 7
def list_parser(
element_parser:,
name: nil, head_parser: nil, open_parser: nil, close_parser: nil, sep_parser: nil
)
name = name || "list_parser(#{element_parser.name})"
open_parser ||= char_parser(40).ignore close_parser ||= char_parser(41).ignore sep_parser ||= ws_parser(min: 1).ignore
head_parser ||= element_parser
sequence(
open_parser,
head_parser,
many(
sequence(
sep_parser,
element_parser
).map(&:first)
),
close_parser
)
.map { |h, t| [h, *t] }
end
|