2016-03-23 5 views
1

В стандарте ISO 14977 EBNF, раздел 4.7, описано юридическое содержание исключения. Я вполне уверен, что исключение может состоять из любого действительного синтаксического фактора, если он не содержит мета-идентификаторов. Это означает, что в качестве исключения может использоваться специальная последовательностьСодержание исключений в ISO EBNF

syntax = 
    my rule - ? Something clever ? ; 

В этом случае?

Вы можете получить стандарт бесплатно по ISO here.

+0

Да, это более или менее случай. §4.7 Синтаксическое исключение _ Синтаксическое исключение состоит из синтаксического фактора, подверженного ограничению того, что последовательности символов, представленных синтаксическим исключением, могут быть одинаково представлены синтаксическим фактором, не содержащим метаидентификаторов. ПРИМЕЧАНИЕ. Если синтаксическому исключению разрешено быть произвольным синтаксическим фактором, Extended BNF может определять более широкий класс языков, чем контекстно-свободные грамматики, включая попытки, которые приводят к парадоксам, подобным Расселу, например. 'xx =" A "-xx;' Является ли '' A ''примером' xx'? _ –

+0

Предполагается ли, что исключение должно быть такой же длины в символах, что и правило? Что произойдет, если правило начинается с «А», но оно длиннее? – Jens

+0

Длина правила и исключение не должны совпадать. – Uran

ответ

1

Нет, это не так. Вы можете использовать метаидентификаторы в исключении, если при полной оценке они приводят к терминалам. В примере, приведенном в разделе 4.7, показан метаидентификатор, определенный в терминах самого себя, который никогда не может полностью разрешить терминал. Это то, что они имеют в виду, когда говорят:

... в равной степени может быть представлен синтаксическим фактором, не содержащим метаидентификаторов.

Есть много примеров этого в самом стандарте - выписка секция 8. Например:

зазор свободного символа = терминальный символ - (первый символ цитаты | вторая цитата символ)

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

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