How 'bout: class FooParser extends Parser; //options {k = 4;} id3DList: id3D (COMMA id3D)*; id2DList: id2D (COMMA id2D)*; id3D: ID ( DOT ID ( DOT ID )? )?; id2D: ID ( DOT ID )?; class FooLexer extends Lexer; options {k = 2;} ID: ( 'a'..'z' )+; COMMA:','; DOT:'.'; Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/