Я пытаюсь создать плагин IDEA для формата RDF Turtle, поэтому я проверяю учебник по плагину IDEA, загружаю плагин грамматического комплекта и проверяю грамматику для Turtle здесь https://www.w3.org/TR/turtle/#grammar-production-HEX Затем я создал файл .bnf и протестировал его с помощьюГрамматический набор и PsiViewer, и проблемы начались, вот часть моего .bnf файла:
turtleFile ::= statement*
statement ::= directive | triples '.'
directive ::= prefixID | base | sparqlPrefix | sparqlBase
prefixID ::= '@prefix' PN_PREFIX? IRIREF '.'
PN_CHARS_BASE ::= [A-Z] | [a-z]
PN_CHARS_U ::= PN_CHARS_BASE | '_'
PN_CHARS ::= PN_CHARS_U | '-' | [0-9]
PN_PREFIX ::= PN_CHARS_BASE ((PN_CHARS | '.')* PN_CHARS)?
Для тестирования я использовал эту простую строку
@prefix dadfgf: <http://test.ts#>
И есть ошибка: [
Почему это происходит?Мой PN_PREFIX должен начинаться с символа, а затем иметь несколько символов PN_CHARS_BASE ((PN_CHARS | '.') * PN_CHARS)?Но он не работает, он сказал, что ожидается "az", а буква d точно соответствует диапазону az, я не смог найти источник проблемы, это плагин или мой bnf?