use super::module::inputs_list; use super::tokens::TokenKind as tk; use crate::parser::tokens::token; use crate::parser::typename; use crate::parser::IResult; use crate::parser::Module; use crate::parser::TokenSpan; use nom::combinator::cut; use nom::combinator::map; use nom::multi::many0; use nom::sequence::delimited; use nom::sequence::preceded; use nom::sequence::tuple; pub fn comb_block(input: TokenSpan) -> IResult { map( preceded( token(tk::Comb), cut(tuple(( token(tk::Ident), delimited(token(tk::LParen), inputs_list, token(tk::RParen)), preceded(token(tk::RArrow), typename), delimited( token(tk::LBrace), many0(token(tk::Error)), token(tk::RBrace), ), ))), ), |(name, inputs, _ret, items)| Module { // TODO: bring back returns name: name.span(), ports: inputs, items: todo!(), }, )(input) }