diff --git a/hercules_ir/src/parse.rs b/hercules_ir/src/parse.rs
index 6798c9f95a8d725062048e14ce3146a46ce772b8..f45ccebc32685f59463286daa3669c7be1a99628 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))
 }