Ну вот, моё правило не работает:
## Код:
```
BEGIN ;
```

Значит, придётся ещё раз прочитать про go и посмотреть, как сделан LAX в AO. Похоже, что сильно уже не улучшить по сравнению с Go.

https://golang-blog.blogspot.com/2019/0 ... olons.html

> -- Цитата:
> Если последний токен перед новой строкой является идентификатором (который включает в себя такие слова, как int и float64), базовый литерал, такой как число или строковая константа, или один из токенов break, continue, fallthrough, return, ++, --, ), }, лексер всегда вставляет точку с запятой после токена.
или, короче говоря
> -- Цитата:
> "если новая строка идет после токена, который может завершить оператор, введите точку с запятой"

честно сказать, я туповат для такого правила. Я его ни разу не продумал толком. Я вообще не помню сейчас, что такое fallthrough, хотя я 4 раза успешно прошёл собеседование как программист GoМне кажется, было бы проще написать "точка с запятой всегда вставляется, кроме..." и дальше перечисление меньшего числа токенов, за которыми точка с запятой не вставляется. Например, это может быть {([,; - те токены, которые намекают, что оператор не закончился.