Вы должны работать в том направлении, которое вам наиболее удобно - либо снизу вверх, сверху вниз, либо «сэндвич» (сделайте немного и того, и другого где-то посередине).
Любая «группа»который может быть получен и имеет собственное значение, должен начинаться с собственного нетерминала.Так, например, я бы использовал нетерминал для всех пробелов, связанных с новой строкой, один для всех других пробелов и один для всех пробелов (что по сути является объединением первых 2).
Соглашения об именахв грамматике в общем случае нетерминалы представляют собой заглавную букву или начинаются с нее, а терминалы начинаются с заглавных букв (но это, конечно, зависит от языка, который вы разрабатываете).проверяет, я не знаком с концепцией.Что я знаю о EBNF, так это то, что вы просто пишете все, что принимает ваш язык, и только это.
Как правило, просто посмотрите на некоторые EBNF разных языков с разных веб-сайтов, получите представление о том, как они выглядят, и затемделай то, что тебе кажется правильным.