Вероятно, грамматика ANTLR непосредственно следует грамматике языка Си. Я не читал стандарт C, но для C ++ стандарт отдельно говорит, что init_declarator_list
можно опускать только при объявлении класса или типа enum. Таким образом, одна только грамматика охватывает все возможные формы объявления, в то время как каждый конкретный случай дополнительно определяется с использованием простого языка.
Что касается указанного вами случая, int;
запрещен правилами вне грамматики.
Обратите внимание, что язык C / C ++ не может быть полностью определен одной только грамматикой. Многие дополнительные правила должны быть указаны простым человеческим языком.