If OPERATOR was a keyword I wouldn't imagine it would have a hard time with it, but I don't know much about how yacc handles things.
(just thinking out loud)
Even if OPERATOR isn't a keyword, when else can you write ID :: ID = ...? It would make sense that it would accept that, but I'm not sure because I haven't used yacc much. Hand written parsers are fun because you can write lots and lots of context-sensitivity into them

But then for upcoming operator overloading, OPERATOR should be a keyword anyway so that shouldn't be a problem...