From b70f9b37502ea9336e0f3b75f6de640d2f957995 Mon Sep 17 00:00:00 2001 From: Russel Arbore <russel.jma@gmail.com> Date: Sun, 10 Sep 2023 16:54:15 -0500 Subject: [PATCH] Parse array type --- hercules_ir/src/parse.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/hercules_ir/src/parse.rs b/hercules_ir/src/parse.rs index 6798c9f9..f45ccebc 100644 --- a/hercules_ir/src/parse.rs +++ b/hercules_ir/src/parse.rs @@ -373,6 +373,31 @@ fn parse_type<'a>(ir_text: &'a str, context: &RefCell<Context<'a>>) -> nom::IRes )), |(_, _, _, _, ids, _, _)| Type::Summation(ids.into_boxed_slice()), ), + nom::combinator::map( + nom::sequence::tuple(( + nom::bytes::complete::tag("array"), + nom::character::complete::multispace0, + nom::character::complete::char('('), + nom::character::complete::multispace0, + |x| parse_type_id(x, context), + nom::character::complete::multispace0, + nom::character::complete::char(','), + nom::character::complete::multispace0, + nom::multi::separated_list1( + nom::sequence::tuple(( + nom::character::complete::multispace0, + nom::character::complete::char(','), + nom::character::complete::multispace0, + )), + |x| parse_dynamic_constant_id(x, context), + ), + nom::character::complete::multispace0, + nom::character::complete::char(')'), + )), + |(_, _, _, _, ty_id, _, _, _, dc_ids, _, _)| { + Type::Array(ty_id, dc_ids.into_boxed_slice()) + }, + ), ))(ir_text)?; Ok((ir_text, ty)) } -- GitLab