[antlr-interest] Difficult (to me) recursion problem

Sam Barnett-Cormack s.barnett-cormack at lancaster.ac.uk
Sat Feb 28 07:18:15 PST 2009


Hey all,

So, my ASN.1 grammar is progressing, but I've run into a problem that I 
*think* is due to left-recursion complexities. I've attached the whole 
grammar (bits that are commented out are generally references to rules 
from other bits of the standards that I haven't reached yet - want to 
see about getting the basic one running without error), but the area I 
think the problem is actually in is lines 640--686:

constrainedType : type constraint | typeWithConstraint ;

typeWithConstraint : (SET | SEQUENCE) (constraint | sizeConstraint) OF 
type ;

constraint : '(' constraintSpec exceptionSpec ')' ;

constraintSpec : subtypeConstraint /*| generalConstraint*/ ;

subtypeConstraint : elementSetSpecs ;

elementSetSpecs : rootElementSetSpec (',' '...' (',' 
additionalElementSetSpec)?)? ;

rootElementSetSpec : elementSetSpec;

additionalElementSetSpec : elementSetSpec;

elementSetSpec : unions | ALL exclusions ;

unions : intersections uElems unionMark intersections ;

uElems : unions ;

intersections : intersectionElements iElems intersectionMark 
intersectionElements ;

iElems : intersections ;

intersectionElements : elements exclusions? ;

exclusions : EXCEPT elements ;

unionMark : '|' | UNION ;

intersectionMark : '^' | INTERSECTION ;

elements : subtypeElements /*| objectSetElements*/ | '(' elementSetSpec 
')' ;

subtypeElements
     : singleValue
     | containedSubtype
     | valueRange
     | permittedAlphabet
     | sizeConstraint
     | typeConstraint
     | innerTypeConstraints
     | patternConstraint;

singleValue : value;

Now, I can see where there could be recursion issues here. The grammar 
is taken from the ASN1 spec, which I think assumes a YACC-style parser.

The errors I end up getting are multitudinous, and I'm just not sure 
which are causes and which are effects, as I know you can get 
snowball-errors.

If anyone can offer me some guidance, I'd really appreciate it.

Sam
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ASN_1.g
Url: http://www.antlr.org/pipermail/antlr-interest/attachments/20090228/d3a3073d/attachment.pl 


More information about the antlr-interest mailing list