CHAR('@') does work in single-track, but not in a multi track context like in <CHAR('@'), ...>
I currently don't understand what the exact issue is, seems like infer_missing_types never finishes, but it might only be a symptom.
When parsing the user grammar, CHAR('@') seems to be a Alt::Link, while in multi-track context is a Alt::Simple(Fn_Arg(Const)). There might be an issue with the multi context constructor?!