[antlr-interest] Confusion: Understanding gap or Tree Grammar Bug
Sarnath K - ERS, HCLTech
k_sarnath at hcl.com
Wed Aug 25 01:43:37 PDT 2010
Hi There,
Can some1 help me with this, please? Thanks!
-----Original Message-----
From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Sarnath K - ERS, HCLTech
Sent: Friday, August 20, 2010 2:23 PM
To: antlr-interest at antlr.org
Subject: [antlr-interest] Confusion: Understanding gap or Tree Grammar Bug
Grammar to parse the "Hi" statement of this e-mail:
---------------------------------------------------
all: cM | cF | 'There';
cM: 'Chitparan'; // Sanskrit word meaning "One who inspires the mind" - Male
cF: 'Chitpari'; // Sanskrit word meaning "One who inspires the mind" - Female
---------------------------------------------------
Hi "all",
We are new to ANTLR and we all love this tool! Thanks to Terrence! \__/
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.
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
More information about the antlr-interest
mailing list