[antlr-interest] error handling v3 style round 2
    Brannon King 
    brannonking at yahoo.com
       
    Wed Jan  4 10:57:33 PST 2006
    
    
  
I wasn't around for the previous discussion on this, but I'd like to comment
on it now.
Previously proposed by Terence:
method
	: type ID ...
	;
	exception
		catch[RecognitionException e]
			( {level>0}? ('}' {level--;} | .) )*
That, to me, looks beautiful. It is very close to what I need to do. More
specifically it would be something like this:
method
	: '(' funcName^ i:ID ')'
	{ isValid(i.getText()) }?
	;
	exception
		catch[SemanticException e]
			( {level>0}? (')' {level--;} | .) )*
			{ error("expecting blah, found " + i.getText(), 
				i.file, i.linenum, i.column,
i.getText().length(),
				e.linenum, e.column);
			  recover();
			}
To explain: I need to know the range of characters involved in the found ID
for the editor to mark the error, and I need to recover after I hit that
closing parenthisis. Whatever the case, the recover function needs to be
easy to call; I shouldn't have to spend half a day figuring out what params
it takes.
PS, I like the error alternates as well. The slash looks like a fine
operator to me, though |~ might be more obvious.
    
    
More information about the antlr-interest
mailing list