При объявлении переменной val x = 42
указанное вами правило будет соответствовать ключевому слову val
и распознавать его как маркер типа VAL
. Остальная часть декларации будет соответствовать другим правилам. Например, x
будет соответствовать правилу для идентификаторов.
Таким образом, чтобы сопоставить ключевое слово fun
в fun f x = 5 + x
, вы должны аналогичным образом определить правило fun { return FUN; }
(и добавить FUN
к вашему списку токенов, если его там еще нет). f
и x
будут соответствовать одному и тому же правилу идентификатора, который соответствует x
в val x = 42
.