aiken_lang/parser/pattern/
tuple.rs1use 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}