Search code examples
grammarebnf

How would I normalize the following ANTLR grammar rules to eliminate left recursion?


I'd like to be able to treat:

int(int, int)

As a function type. How do I normalize this (stripped down) grammar?

type : classOrInterfaceType | primitiveType | functionType;
functionType : type '(' (type (',' type)*)? ')';

classOrInterfaceType : ;
primitiveType : ;

Solution

  • There's an algorithm for eliminating left recursion. http://web.cs.wpi.edu/~kal/PLT/PLT4.1.2.html