[antlr-interest] Pls Help: Tree Grammar Bug? or Wrong usage? or Understanding Gap?

Sarnath K - ERS, HCLTech k_sarnath at hcl.com
Thu Aug 26 21:52:46 PDT 2010


Hi ANTLR Folks,

I am raising this issue again as none responded to my earlier thread.
I would be glad if any of you could shed light on this, Thanks!

We are new to ANTLR and we all love this tool! Thanks to Terence!  \__/

We are trying to write a C2C converter. 
However, we are stuck with the handling of the "block statement" in the Tree Grammar part.
Though we have a workaround, we would like to know whether this is an ANTLR bug (or) a gap in our understanding.

I have written a concise grammar that captures the problem. Kindly see the attachment.

The problem is very simple:
A compound statement is a 'statement' that starts with '{', has zero or more variable declarations, followed by zero or more 'statements' and ends with '}'
In the grammar above, 'v' stands for variable declaration, 's' stands for a statement.

When I run this project , I get the following output.
-------------------------------
Console
-------------------------------
{vs{s}}
Tree = ({ v s ({ s }) })
Tree Grammar Output =  {vs{vs} }
--------------------------------

Now look at "Tree Grammar Output". It carries over the "v" from the previous level. It should have been {vs{s}}.

However if I re-write the grammar as below, I don't have this problem.

b->'{' '}'
  | '{' v '}'
  | '{' s '}'
  | '{' v+ s+ '}'

Kindly advice me on what is the right way to do things!
Are we missing something? (like... RTFM?)

Thanks,
Best Regards,
Sarnath

-------------- next part --------------
A non-text attachment was scrubbed...
Name: driver.java
Type: application/octet-stream
Size: 912 bytes
Desc: driver.java
Url : http://www.antlr.org/pipermail/antlr-interest/attachments/20100827/af0adac2/attachment.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: block.g
Type: application/octet-stream
Size: 422 bytes
Desc: block.g
Url : http://www.antlr.org/pipermail/antlr-interest/attachments/20100827/af0adac2/attachment-0001.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: blockTree.g
Type: application/octet-stream
Size: 435 bytes
Desc: blockTree.g
Url : http://www.antlr.org/pipermail/antlr-interest/attachments/20100827/af0adac2/attachment-0002.obj 


More information about the antlr-interest mailing list