[antlr-interest] Number of children
shmuel siegel
antlr at shmuelhome.mine.nu
Mon Feb 15 04:12:06 PST 2010
On 2/15/2010 10:22 AM, Nazim Oztahtaci wrote:
> Hello,
>
> I have written a grammar based on an example on the Net to parse an expression like (a OR B)AND(C OR D) to a tree like
> AND
> OR OR
> A B C D
> It works fine but if expression has more then 2 children, like (A OR B OR C)AND(D OR E OR F)
> Then it creates problem because it does something like
> AND
>
> D OR
> E F
> I want it to be like
>
> OR
> D E F
>
> In other words, a tree node might have capability to have more then 2 nodes as children. How can I set this? I work on C# but couldnt find any setter function in library.
> Best regards,
> Nazim
>
>
I am not sure if this is too simple for your needs but this allows a
more generic tree structure for your example.
grammar test;
options
{
output = AST;
}
expr : andexpr EOF;
andexpr : orexpr (AND orexpr)+ -> ^(AND orexpr+);
orexpr : WORD (OR WORD)+ -> ^(OR WORD+)
| LPAREN! orexpr RPAREN!;
LPAREN : '(' ;
RPAREN : ')' ;
AND : 'AND';
OR : 'OR';
WS : ( ' ' | '\t' | '\r' | '\n') {$channel=HIDDEN;} ;
WORD : (~( ' ' | '\t' | '\r' | '\n' | '(' | ')' ))*;
More information about the antlr-interest
mailing list