[antlr-interest] Help with a tree grammar: losing a list of statements
Pauba, Kevin L
KLPauba at west.com
Mon Nov 30 09:31:21 PST 2009
I have a parser and tree grammar written to add better flow control constructs to an assembly language-like DSL.
Here's the parser grammar rule of interest:
| KW_while l=string condition=string r=string statement+ KW_endwhile
-> ^(KW_while ^(EXPR $l $condition $r) ^(SLIST statement+))
In ANTLRWorks it shows what I expect for an AST using the following text:
while $99 > 0
let $99 - 1
let $98 + 1
endwhile
The expected AST includes a tree with a root of KW_while and two children (the EXPR and the SLIST (the list of two statement trees). I hope that makes sense.
I have a tree-walking grammar that uses "output=template" and "rewrite = true" with the following rule:
| ^(KW_while ^(EXPR l=string condition=string r=string) ^(SLIST s+=statement+))
-> template(lhs={$l.text}, operator={$condition.text}, rhs={$r.text}, stats={$s})
<<
L:
; while <lhs> <operator> <rhs>
test <lhs> <operator> <rhs> L_END:
<stats>
goto L:
L_END:
>>
I'm doing something wrong as the "<stats>" ends up being null and I get the following output:
L:
; while $99 > 0
test $99 > 0 L_END:
goto L:
L_END:
What is wrong with my rewrite grammar?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20091130/513fa63b/attachment.html
More information about the antlr-interest
mailing list