pub fn parse_program( source: &str, file_path: PathBuf, ) -> (Program, Vec<ParserError>)
Full pipeline helper: tokenize, parse CST, then lower into Program.
Program