оригинальный BNF является:
<Sentence> :== <NounPhrase><VerbPhrase>
<NounPhrase> :== <Noun>
<NounPhrase> :== <Article><Noun>
<NounPhrase> :== <Article><AdjectiveList><Noun>
<NounPhrase> :== <AdjectiveList><Noun>
<AdjectiveList> :== <Adjective>
<AdjectiveList> :== <Adjective><AdjectiveList>
<VerbPhrase> :== <Verb>
<VerbPhrase> :== <Verb><Adverb>
<Noun> :== frog | grass | goblin
<Article> :== a | the | that
<Adjective> :== purple | green | tiny
<Verb> :== grows | dreams | eats
<Adverb> :== quickly | slowly | badly
Первая попытка обращения к диалекту EBNF требуется это:
Sentence :== (<NounPhrase><VerbPhrase>) +
NounPhrase :== <Noun> + (<Article>< AdjectiveList>)?
AdjectiveList :== <Adjective> *
VerbPhrase :== <Verb> + <Adverb>?
Noun :== (frog | grass | goblin)*
Article :== (a | the | that)*
Adjective :== (purple | green | tiny)*
Verb :== (grows | dreams | eats)*
Adverb :== (quickly | slowly | badly)*
Что вы придумали ISN» t correct:
- Вы не уронили угловые скобки.
- В оригинале предложение представляет собой словосочетание, за которым следует глагольная фраза; в вашем переписании это последовательность одной или нескольких слов-существительных, за которыми следует глагольная фраза.
- В оригинале именная фраза заканчивается существительным; в вашем переписании может следовать список из нуля или одной комбинации статьи и списка прилагательных (но не предшествующих ни статье, ни списку прилагательных).
- В оригинале список прилагательных представляет собой последовательность из одного или нескольких прилагательных; в вашем переписании, является списком нулевых или более прилагательных.
- В оригинале глагольная фраза - это один глагол, необязательно сопровождаемый наречием; в вашем переписании это один или несколько глаголов, за которыми следуют ноль или более наречий.
- В оригинале каждое из существительных, статьи, прилагательного, глагола и наречия - это одно из трех альтернативных значений; в вашем переписании каждый представляет собой список из нуля или более или соответствующие три альтернативные значения.
Я немного запутался, какие скобки понижаться. Я не знаю, какая разница между терминальным и не-терминальным и как их дифференцировать в приведенном выше. Удалил бы верхний индекс «+» и скобки?
Символы терминалов - это те вещи, которые представляют себя. В этом контексте такие слова, как «лягушка», «the», «зеленый», «сны» и «плохо», являются терминалами.
Нетерминальные символы определяются в терминах других символов, либо других нетерминалов, либо терминами. Такие вещи, как <Sentence>
и <Noun>
, являются не-терминалами.
Угловые скобки являются <
и >
символы (по сравнению с круглыми скобками или скобки ()
, квадратные скобки []
или фигурные скобки или фигурные скобки {}
).
Извлечение круглых скобок и +
(и угловых кронштейнов) от Sentence :== (<NounPhrase><VerbPhrase>) +
улучшит его. В стандартном BNF, то :==
символ обычно ::=
и в стандартном EBNF заменяется только =
и конкатенации указывается в явном виде с запятой:
Sentence = Noun Phrase, Verb Phrase
В стандартном EBNF, терминалы заключены в двойные или одинарные кавычки (а не с изменением шрифта). И «надстрочный» не нужен, либо ?
, +
и *
просто появляются после повторного воспроизведения. (Обратите внимание, что стандартный EBNF использует [ … ]
вокруг необязательного вопроса и { … }
вокруг повторяющихся (ноль или больше) предметов и { … }-
вокруг повторяющихся (одного или нескольких) предметов).
NounPhrase = Article ? AdjectiveList ? Noun
Noun = "frog" | "grass" | "goblin"
Вы искали? Какая информация отсутствует в [Как конвертировать BNF в EBNF] (http://stackoverflow.com/questions/14922242/how-to-convert-bnf-to-ebnf)? –
Извините, что забыл отправить другую часть, теперь она исправлена. Мне даны те правила преобразования, которые помогут. –
Описанные EBNF конвенции не EBNF - EBNF - это стандарт ИСО ([ISO 14977: 1996] (http://www.iso.ch/cate/d26153.html), доступный бесплатно). Вы все еще не ответили на мой вопрос: «Какая информация отсутствует в другом вопросе?», С ее провалами «Что вы не понимаете о своем задании или BNF, в котором оно написано?» и «Что вы пробовали?». –