Я не знаю, имеет ли это обозначение конкретное имя, но это не BNF - форма Бэкуса-Наура и не EBNF (расширенный BNF, он же ISO / IEC 14977: 1996 ). Это слабо связано, но только слабо связано. В частности, BNF указывает, что нетерминальное имя определяется как некоторый список значений. Примером будет следующий оператор CREATE TABLE из стандарта SQL 2003:
<table definition> ::=
CREATE [ <table scope> ] TABLE <table name> <table contents source>
[ ON COMMIT <table commit action> ROWS ]
LHS ('<table definition>
') - это нетерминал, на который можно ссылаться в другом месте. Оператор «::=
» является оператором «определен как». Термины в угловых скобках '<>
' являются более нетерминальными (иногда такими же, как LHS, но не в этом примере), для которых есть определение где-то еще. Части в квадратных скобках '[ ... ]
' являются необязательными (могут присутствовать - один раз - или могут быть вообще опущены). Стандарт SQL использует обозначение:
<non-terminal> { [ , <non-terminal> ] }...
для обозначения повторения.
Фрагмент в вопросе не является непосредственно BNF, потому что он не использует нотацию «LHS :: = RHS»; это эффективно предполагает, что LHS не должен быть назван. Из обозначений также не ясно (как показано - в исходном документе это может быть яснее), являются ли такие элементы, как 'CURRENT DATABASE'
и 'target_server_name'
терминалами или нетерминалами (скорее всего, текущая база данных является терминалом и именем целевого сервера). нет - но БНФ прояснит это).