[antlr-interest] Please help with a grammar issue

Indhu Bharathi indhu.b at s7software.com
Fri Oct 30 10:27:35 PDT 2009


When I give 2 'b', I get parser error.

Here is the complete grammar I used:

grammar Test;

r
@init {
                int cntA=0, cntB=0, cntC=0; 
}
                :               ( a {cntA++;} | b {cntB++;} | c {cntC++;} )+
{cntA>1 && cntB<=1 && cntC==1}?
                ;

a	:	'A'
	;
	
b	:	'B'
	;
	
c	:	'C'
	;

And my test input was: "ABBC". Parser will throw failed predicate exception
on this input.

Can you give a compilable small grammar where it doesn't work and also the
input you tried?


Cheers, Indhu
S7 Software


-----Original Message-----
From: Frank Du [mailto:frank.du at riskmetrics.com] 
Sent: Friday, October 30, 2009 10:38 PM
To: Indhu Bharathi; antlr-interest at antlr.org
Subject: RE: [antlr-interest] Please help with a grammar issue

Hi Indhu,

Thank you so much! It works pretty well on correct input file. 

However, if I have 2 rules of b, the parser will stop at the second. It
doesn't emit errors as expected. Then it hinders from validation. Any idea
about that?

Cheers,
Frank

________________________________________
From: Indhu Bharathi [indhu.b at s7software.com]
Sent: Friday, October 30, 2009 12:36 PM
To: Frank Du; antlr-interest at antlr.org
Subject: RE: [antlr-interest] Please help with a grammar issue

Maybe you can use validating semantic predicate

r
@init {
                int cntA=0, cntB=0, cntC=0;
}
                :               ( a {cntA++;} | b {cntB++;} | c {cntC++;} )+
{cntA>1 && cntB<=1 && cntC==1}?
                ;

Cheers, Indhu
S7 Software


From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of Frank Du
Sent: Friday, October 30, 2009 9:53 PM
To: 'antlr-interest at antlr.org'
Subject: [antlr-interest] Please help with a grammar issue

Dear All,

I have a grammar issue and need your help. Let's say I have tree rules: a,
b, c

Rule a occurs multiple times, rule b occurs one time or none, and rule c
occurs one time.

My question is: How to write the grammar, so the rule ordering is arbitrary?

Thank you so much! Have a nice day!

Best Regards,
Frank



More information about the antlr-interest mailing list