Currently, BaseTreeAdaptor has the following method:

 

        public Object create(int tokenType, Token fromToken, String
text) {

                fromToken = createToken(fromToken);

                fromToken.setType(tokenType);

                fromToken.setText(text);

                Tree t = (Tree)create(fromToken);

                return t;

        }

 

When a grammar has something like the following (and now I forgot what
exactly caused me to hit this...), and a recoverable error occurs in
parsing, this method could be called with a null fromToken, and the copy
constructor for CommonToken will throw a NullReferenceException (in C#).
The following modification allows recovery by falling back in this case
to the type/text create method.

 

        public Object create(int tokenType, Token fromToken, String
text) {

                if (fromToken == null)

                        return create(tokenType, text);

 

                fromToken = createToken(fromToken);

                fromToken.setType(tokenType);

                fromToken.setText(text);

                Tree t = (Tree)create(fromToken);

                return t;

        }

 

Sam

_______________________________________________
antlr-dev mailing list
[email protected]
http://www.antlr.org/mailman/listinfo/antlr-dev

Reply via email to