Is it _really_ returning a String * private String merge(String s1, List lst, String s2) {* * ...* * return ...* * }*
? Not an Object _you think_ is a String: * private Object merge(String s1, List lst, String s2) {* * ...* * return ...* * }* ? I ask because the stack-trace you posted: "Caused by: java.lang.ClassCastException: java.util.ArrayList" seems to suggest it is an ArrayList. Either way: a String or an ArrayList, both are wrong: that method needs to return a Tree. Bart. On Wed, Jun 22, 2011 at 8:39 AM, Fabien Hermenier <hermenierfab...@gmail.com > wrote: > merge(...) is returning a String. > > Fabien. > > Le 22/06/11 00:36, Bart Kiers a écrit : > > Fabien, but what is the return type of this `merge(...)` method? Could you > post the method? Or even better: post a SSCCE <http://sscce.org>that > causes such an exception? > > Regards, > > Bart. > > > On Wed, Jun 22, 2011 at 8:30 AM, Fabien Hermenier < > hermenierfab...@gmail.com> wrote: > >> In fact, I've badly readed the help. So yet, it is running a String that >> should be tokenized (then translated into tree I suppose) at run time. >> >> Le 22/06/11 00:28, Bart Kiers a écrit : >> > Is your `merge(String, List, String)` method returning >> > a java.util.ArrayList instead of a Tree? >> > >> > Regards, >> > >> > Bart. >> > >> > >> > On Wed, Jun 22, 2011 at 8:04 AM, Fabien Hermenier >> > <hermenierfab...@gmail.com <mailto:hermenierfab...@gmail.com>> wrote: >> > >> > Hi >> > >> > I have some troubles with token stream rewriting. Below is the >> > piece of >> > ANTLR code. I have a grammar, with an AST as output and Java >> > as the target. I want to insert a sequence of token into the stream. >> > >> > I have followed the page >> > >> http://www.antlr.org/wiki/display/~admin/2007/06/28/Token+stream+rewriting+with+rewrite+rules<http://www.antlr.org/wiki/display/%7Eadmin/2007/06/28/Token+stream+rewriting+with+rewrite+rules> >> > < >> http://www.antlr.org/wiki/display/%7Eadmin/2007/06/28/Token+stream+rewriting+with+rewrite+rules >> > >> > and adapted the example that interest me. A piece of the code is >> > following. Basically, in the alternative of 'explodedSet', I get the >> > return values of other rules and do some stuff in the merge >> > method. This >> > one returns a list of String as explained in the online example. >> > >> > >> > explodedSet: '{' (setContent (',' setContent)*)? '}' -> >> ^(EXPLODED_SET >> > setContent+) >> > | {List l = new LinkedList();}LEFTY >> > r1=brace_content{l.add($r1.ret);} (',' >> > r2=brace_content{l.add($r2.ret);})* RIGHTY >> > -> { >> > merge($LEFTY.text,l,$RIGHTY.text) >> > }; >> > >> > brace_content returns [List ret]: >> > st=number ('..' ed=number)? {$ret = new LinkedList(); for >> > (int >> > i = $st.val; i <= $ed.val; i++) {$ret.add(i);}} >> > | NAME {$ret = new LinkedList(); $ret.add($NAME.text);}; >> > >> > The code compiles well but at runtime, I've got this exception: >> > >> > Caused by: java.lang.ClassCastException: java.util.ArrayList cannot >> be >> > cast to org.antlr.runtime.tree.Tree >> > at >> > >> org.antlr.runtime.tree.BaseTreeAdaptor.addChild(BaseTreeAdaptor.java:107) >> > at Parser.explodedSet(Parser.java:560) >> > >> > So, the return value of merge does not seems to be converted into >> > tokens >> > nor Tree. Does someone has an idea ? >> > >> > >> > Fabien. >> > >> > List: http://www.antlr.org/mailman/listinfo/antlr-interest >> > Unsubscribe: >> > >> http://www.antlr.org/mailman/options/antlr-interest/your-email-address >> > >> > >> >> >> -- >> Fabien Hermenier >> Postdoctoral researcher at Flux >> http://sites.google.com/site/hermenierfabien/home >> >> >> List: http://www.antlr.org/mailman/listinfo/antlr-interest >> Unsubscribe: >> http://www.antlr.org/mailman/options/antlr-interest/your-email-address >> > > > > -- > Fabien Hermenier > Postdoctoral researcher at Flux > http://sites.google.com/site/hermenierfabien/home > > List: http://www.antlr.org/mailman/listinfo/antlr-interest Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address -- You received this message because you are subscribed to the Google Groups "il-antlr-interest" group. To post to this group, send email to il-antlr-inter...@googlegroups.com. To unsubscribe from this group, send email to il-antlr-interest+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.