use b2c2_casl2 as casl2;
pub const MAX_ALLOCATION_SIZE: usize = 30000;
pub const MAX_ARRAY_SIZE: usize = 256;
pub fn is_valid_program_name(program_name: &str) -> bool {
casl2::Label::from(program_name).is_valid()
&& !(matches!(program_name, "EOF" | "EXIT" | "MEM" | "ALLOC")
|| ((program_name.chars().count() >= 2)
&& ["B", "I", "T", "V", "J", "C", "F"]
.iter()
.any(|prefix| program_name.starts_with(prefix))
&& program_name.chars().skip(1).all(|ch| ch.is_ascii_digit()))
|| ((program_name.chars().count() >= 3)
&& ["SL", "SB", "BA", "IA", "LL", "LB", "TL", "TB"]
.iter()
.any(|prefix| program_name.starts_with(prefix))
&& program_name.chars().skip(2).all(|ch| ch.is_ascii_digit()))
|| ((program_name.chars().count() == 4)
&& program_name.starts_with("ARG")
&& program_name.chars().skip(3).all(|ch| ch.is_ascii_digit())))
}