[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SableCC-2.6 bug?





Package simple;

Helpers
cr = 13;
lf = 10;
tab = 9;

digit = ['0' .. '9'];

alpha = [['a' .. 'z'] + ['A'.. 'Z']];

ad = (digit | alpha);

Tokens

/*	alpa =  alpha | alpha ( '-' | ad )* ad; */
	dot = '.';
	blank = (cr | lf | tab | ' ')+;
	letter = alpha+;
	number = digit+;

Ignored Tokens
    
blank;



Productions 

	test = letter dot? number?;

The above  grammar passes with the following values:

aaa
aaa.
aaa.1


----------------------------------------------------------------
Package simple;

Helpers
cr = 13;
lf = 10;
tab = 9;

digit = ['0' .. '9'];

alpha = [['a' .. 'z'] + ['A'.. 'Z']];

ad = (digit | alpha);

Tokens

	alpa =  alpha | alpha ( '-' | ad )* ad;
	dot = '.';
	blank = (cr | lf | tab | ' ')+;
	letter = alpha+;
	number = digit+;

Ignored Tokens
    
blank;



Productions 

	test = letter dot? alpa?;



-------------------------------------------------------------------

Failes to recognize:

aaa 
	simple.parser.ParserException: [1,1] TLetter expected.
        at simple.parser.Parser.parse(Parser.java:184)
        at Main.compile(Main.java:118)
        at Main.compile(Main.java:95)
        at Main.main(Main.java:77)

aaa.

	simple.parser.ParserException: [1,1] TLetter expected.
        at simple.parser.Parser.parse(Parser.java:184)
        at Main.compile(Main.java:118)
        at Main.compile(Main.java:95)
        at Main.main(Main.java:77)


It appears that SableCC gets confused if the production rule
includes a token who is a proper subset of another token in the
rule.

	Tnks!
	Amancio