2014-10-01 4 views
0

Привет, У меня возникли проблемы с этой проблемой, и я столкнулся с множеством сайтов, но нашел это сообщение How to convert BNF to EBNF, чтобы быть очень полезным, но я просто не знаю, с чего начать с этого примера.Правило EBNF в BNF

<decimal_literal> --> (0|1|2|3|4|5|6|8|9){0|1|2|3|4|5|6|7|8|9|_} 

В этом правиле скобки и фигурные скобки являются метасимволами. Он нуждается в более чем 1 правиле и может потребоваться ввести 1 или более новых нетерминалов.

Это учебник, который я использую http://umsl.edu/~mfrp9/misc/cpl.pdf на странице 131, но я не могу применить его к этой проблеме. Если кто-то может объяснить решение этой проблемы шаг за шагом, поэтому я могу научиться этому делать подобные проблемы.

+0

Вопрос, который вы перекрестно ссылаетесь, преобразуется из BNF в EBNF. В названии вопроса говорится, что вы пытаетесь преобразовать из EBNF в BNF. Кого вы пытаетесь сделать? И если целью является BNF, то какой диалект BNF? Если целью является EBNF, вы имеете в виду стандартную EBNF (как в ISO 14977: 1996), или какой-либо другой диалект EBNF? –

+0

Да, я хочу преобразовать EBNF в BNF, но мне сказали, что если он может быть преобразован в одну сторону, тогда его можно преобразовать в другую сторону. Я не мог найти ничего для EBNF для BNF, поэтому я использовал этот пост в качестве руководства. Да, стандарт EBNF. – Noobie

+0

Да, он может быть преобразован, но вопрос в том, «какой диалект BNF»? Я полагаю, что ответ на этот вопрос «в книге». –

ответ

0

Это выглядит правдоподобным как перевод в BNF из p131 книги.

<decimal_literal> ⟶ <decimal_digit> 
    | <decimal_literal> <decimal_digit_or_underscore> 

<decimal_digit> ⟶ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 

<decimal_digit_or_underscore> ⟶ <decimal_digit> | _ 
+0

Я понимаю , но почему мы разделили и ? Поскольку выражения, которые могут быть опущены или повторены, могут быть представлены через фигурные скобки {...}. – Noobie

+0

Сделайте это по-своему, если хотите; так я бы это сделал. BNF на p131 в вашей книге не показывает использование '{...}' для повторения; это обозначение EBNF. Поскольку вы переводите с EBNF на BNF, вам нужно удалить только конструкции, основанные на EBNF, такие как '{...}' и перевести на BNF. –

+0

Привет, спасибо за вашу помощь Джонатан, я опубликовал еще один простой вопрос, и мне хотелось бы узнать, правильно ли мое решение, если у вас есть секунда, пожалуйста, взгляните. http://stackoverflow.com/questions/26134894/bnf-to-standard-ebnf – Noobie

 Смежные вопросы

  • Нет связанных вопросов^_^