[a-zA-Z]
соответствует одному буквенному символу (в данном случае букве b
), возвращающему FUNCTION
. Когда требуется следующий токен, он снова соответствует одному буквенному символу (a
), возвращая другой токен FUNCTION
. Но, конечно, грамматика не допускает двух последовательных FUNCTION
с;он ожидает (
, как говорится.
Вы, вероятно, намеревались [a-zA-Z]+
, хотя лучший шаблон идентификатора - [A-Za-z_][A-Za-z0-9_]*
, который соответствует таким вещам, как my_function_2
.