1
votes

I have a simple rule in my grammar which looks for sequence of whitespaces:

    ws: ws|' ';

When bison sees this rule, it complains:

warning: rule useless in parser due to conflicts: ws: ws

Why it is so? Cant I have a simple rule in grammar which looks for a regex?

1
Perhaps you should be using left recursion instead?K-ballo
I would use the lexer to get all adjacent white space rather than the parser.Martin York

1 Answers

8
votes

what you are declaring is 'ws is ws or ws is a space', not 'ws is one or more spaces'.

If you want the latter, try something like:

ws:   ' '
    | ' ' ws;

See also http://www.gnu.org/software/bison/manual/bison.html#Recursion