Hi,

I am looking a bit into the usage of our old parser and keeping in mind the new parser we want to eventually make the default.

But one problem I talked about in the past already is the direct usage of antlr2 types in something else than the parser itself. Moving the current parser into a subproject has the nice effect of highlighting those problems, since anltr2 classes are then not automatically part of the main module anymore.

And then you find things like this:

                if (cause instanceof NoViableAltException) {
                    return isEofToken(((NoViableAltException) cause).token);
                } else if (cause instanceof NoViableAltForCharException) {
                    char badChar = ((NoViableAltForCharException) 
cause).foundChar;
                    return badChar == CharScanner.EOF_CHAR;
                } else if (cause instanceof MismatchedCharException) {
                    char badChar = (char) ((MismatchedCharException) 
cause).foundChar;
                    return badChar == CharScanner.EOF_CHAR;
                } else if (cause instanceof MismatchedTokenException) {
                    return isEofToken(((MismatchedTokenException) cause).token);
                }

The cause is from a SyntaxErrorMessage (actually cause is the cause of the cause). Basically this tells me we are lacking the capability to handle this case with only groovy-core classes. For the sake of compatibility I donĀ“t think we should get rid of the cause, but extend SyntaxError(Message) or SyntaxException to support the transport of the missing information.

I could now try to make a single class to cover all of the cases above, which means a token (maybe expecting) and foundChar (maybe expectedChar) and the problem, that if I have a token I do not have a char and vice versa. I could work with Char...

if I want to project the given case and use the classic subclassing approach I would produce two new subclasses of SyntaxException. If I wanted to support the expected token or char, it would be 4 classes.

Any opinions on that?

bye Jochen

Reply via email to