[antlr-interest] Simple (should be) lexer Q

Bryan Ewbank ewbank at gmail.com
Fri Jun 10 17:57:59 PDT 2005


A shot in the dark: remove the third alternative and replace the "+"
with "*" in the second one.  This results in:

NAME:
     ( CAPWORD (WS CAPWORD)* COMMA WS CAPWORD )
            => CAPWORD (WS CAPWORD)* COMMA WS CAPWORD
     | ( CAPWORD (WS CAPWORD)* )
            => CAPWORD (WS CAPWORD)*
;

Or perhaps, simply :-)

NAME:
    CAPWORD ( WS CAPWORD )* ( COMMA WS CAPWORD )?
;

You might need to make the loops greedy, but this should work.

On 6/10/05, Gerald B. Rosenberg <gbr at newtechlaw.com> wrote:
>  NAME:
>     ( CAPWORD (WS CAPWORD)* COMMA WS CAPWORD )
>            => CAPWORD (WS CAPWORD)* COMMA WS CAPWORD
>     | ( CAPWORD (WS CAPWORD)+ )
>            => CAPWORD (WS CAPWORD)+
>     |   CAPWORD
>  ;


More information about the antlr-interest mailing list