You have to know that, for a given input, the longest matching token will be returned by the lexer. In the case of two matches of the same length, the token listed first will be returned. Now, as your "token"-token and "head"-token are syntactically exactly the same (i.e. the right-hand side of their definition is the same), the lexer will always return the "token"-token because it is listed first, and that's why the parser-error given above is returned because the parser expects a "head"-token while the lexer returns a "token"-token.
Such token-problems do not only appear when the right-hand side of the definitions of two tokens are exactly the same, but also, for example you defined only two tokens:
the lexer will always return the "name_one"-token because it is listed first, although some defined production rule would expect the "name_two"-token.
Next to that, make sure that your token defintions of your keywords are listed first. For obvious reasons, following "keyword"-token will never be returned by the lexer:
name = lowercase+;
keyword = "define"
because the specified keyword is also syntactically a legal name.