Советы по написанию хороших грамматик EBNF - PullRequest
1 голос
/ 22 сентября 2011

Я пишу несколько грамматик расширенной формы Бэкуса-Наура для анализа документов.Существует множество превосходных руководств по синтаксису этих определений, но очень мало онлайн о том, как их проектировать и структурировать.

Может кто-нибудь предложить хорошие статьи (или общие советы) о том, как вам нравится подходить к их написанию кактам кажется элементом стиля, даже если конечные деревья разбора могут быть эквивалентны.

например, такие вещи, как:

  • Принятие решения, следует ли вам явно пометитьпереводы строки или просто трактовать его как пробел?
  • Схемы именования ваших нетерминалов
  • Обработка необязательных пробелов в длинных определениях
  • Когда использовать неправильные проверки синтаксиса, а просто позволять тем, кто не соответствует

Спасибо,

1 Ответ

1 голос
/ 22 сентября 2011

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

Соглашения об именахв грамматике в общем случае нетерминалы представляют собой заглавную букву или начинаются с нее, а терминалы начинаются с заглавных букв (но это, конечно, зависит от языка, который вы разрабатываете).проверяет, я не знаком с концепцией.Что я знаю о EBNF, так это то, что вы просто пишете все, что принимает ваш язык, и только это.

Как правило, просто посмотрите на некоторые EBNF разных языков с разных веб-сайтов, получите представление о том, как они выглядят, и затемделай то, что тебе кажется правильным.

...