aiken_lang/parser/pattern/
tuple.rs

1use chumsky::prelude::*;
2
3use crate::{
4    ast::UntypedPattern,
5    parser::{error::ParseError, token::Token},
6};
7
8pub fn parser(
9    expression: Recursive<'_, Token, UntypedPattern, ParseError>,
10) -> impl Parser<Token, UntypedPattern, Error = ParseError> + '_ {
11    expression
12        .clone()
13        .separated_by(just(Token::Comma))
14        .allow_trailing()
15        .delimited_by(
16            choice((just(Token::LeftParen), just(Token::NewLineLeftParen))),
17            just(Token::RightParen),
18        )
19        .map_with_span(|elems, location| UntypedPattern::Tuple { location, elems })
20}