2015-08-07 8 views
0

Я прочитал статью о BNF, и есть некоторые коды, которые я не понимаю.Эти коды BNF мне трудны понять

terminal ::= 
    """value":"value""" 
value ::= 
    ["$"]letters_and_or_digits 

Не понимаю """value":"value""" означает.

И у letters_and_digits больше нет определения. Это заставляет его работать? Или, если я хочу определить letters_and_or_digits. Что мне делать?

спасибо.

+0

Я полагаю, что «значение» в строке 2 относится к символу в строке 3, и, возможно, «" - это специальная последовательность, которая означает буквальную цитату ". – Bill

ответ

0

Предполагая, что это из [1], где говорится, что в расширенной BNF, я бы перевести его в BNF буквенные и символьных классов следующим образом:

terminal ::= quote value quote 
quote ::= '"' 

value ::= letters_and_or_digits 
value ::= sigil letters_and_or_digits 
sigil ::= '$' 
letters_and_or_digits ::= [a-zA-Z0-9]+ 

Примечание: [] в EBNF означает вариант, поэтому ["$"]letters_and_or_digits является истолковано как обнаженное letters_and_or_digits или letters_and_or_digits с предшествующим $.

[1] «Все файлы грамматики написаны с использованием расширенного Бэкуса Наура (BNF) синтаксис» - http://www.exida.com/images/uploads/On%20Shaky%20Ground%20-%20NPIC_HMIT_2006%20Paper.pdf

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

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