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 <[email protected] > 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 > > <[email protected] <mailto:[email protected]>> 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 > > > > 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 > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.
