[antlr-interest] Handling delimeter separated lists
Jason
jasonriz at yahoo.com
Fri Mar 12 14:12:59 PST 2004
Hello,
I have a grammar which has multiple instances of
comma-separated lists of different types. The upshot
of this is that I've got several sets of rules which
look like this:
foo_list: foo (COMMA foo)*;
I find these lists much harder to process than their
LR counterparts. I'm generally doing something like
this:
foo_list
returns [List fooInstList]
:
{ String fooInst = null; fooInstList = null; }
:
fooInst = foo[true, null]
{
fooInstList = new ArrayList( );
fooInstList.add(fooInst);
}
(EAL_COMMA property[false, fooInstList])*
{
// Nothing left to do
}
}
;
foo [boolean isFirst, List foobarList] returns [String
fooInst]
{fooInst = null;}
:
foo:FOOBAR
{
String fooInst = foo.getText( );
if (!isFirst)
{
foobarList.add(fooInst);
}
}
;
This seems to work but it seems less than elegant
especially in those cases where foo is called from
productions other than foo_list. This issue must
arise pretty frequently in LL grammars. Does anyone
have any idioms they'd like to share? Is there
something I'm missing? Thanks in advance.
-jason
__________________________________
Do you Yahoo!?
Yahoo! Search - Find what youre looking for faster
http://search.yahoo.com
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list