Sorry, desired generated code should have looked like: string MyParser::rule1() { /*NAMESPACE STUFF...*/ try { return rule2(); } catch ( ..... method return type changed from 'void' to 'string' HL