some progress already made with the `ParserInfo` struct but `cant_happen` is being used everywhere for conditions that are just errors in the input.