Мне непросто читать официальную документацию, когда она связана с кодированием. Я вообще не понимаю это, если это не соединено с примером. Я ищу разъяснения о том, какие соглашения применяются при чтении документов, если таковые имеются. Возьмите приведенный ниже пример из руководства lua (https://www.lua.org/manual/5.1/manual.html#2.1):
stat ::= if exp then block {elseif exp then block} [else block] end
Первое слово, Stat, определяется как оператор, и «этот набор включает в себя присваивания, управляющие структуры, вызовы функций иобъявления переменных. "
:: = Не определено в документах, к счастью, его можно гуглить.
Exp связан и объяснен.
Блок также имеет раздел.
Но тогда они делают {} и []. Они буквально заявили: «Квадратные скобки используются для индексации таблицы» всего несколькими строками выше. И эти волнистые скобки предназначены для написания таблицы. из этого следует, что {} и [] используются для обозначения отдельных разделов как разметки, чтобы облегчить просмотр определенных компонентов? Или что {elseif exp then block} является таблицей с этими значениями внутри себя и [блок else] - это индексирование таблицы по значению ключа? Если бы я писал документ там, где это действительно было, разве я не написал бы это так?
Тогда я вижу
var ::= prefixexp `[´ exp `]´`
'' определяет строку, но я должен сделать предположение, что '[' ']' используется как способ подчеркнуть тот факт, что, поскольку они говорили о том, что квадратные скобки делают в предыдущем разделе, они просто выделяют свою позицию, и это не должно быть включенов коде. Я только знаю, чтобы сделать это предположение, потому что я знаю, что это не работает, когда вы помещаете их туда.
Но потом я вижу это:
chunk ::= {stat [`;´]}
Точно так же они говорят оразмещение точки с запятой перед перечислением этого кода, но также была полностью объяснена и обсуждалась вся строка кода. Почему я предполагаю, что он написан без скобок, если он написан с круглыми скобками? И я вижу, что они снова используют {} и [], и я понятия не имею, на что они ссылаются, потому что не указано явно, что мы говорим о таблице ... просто используется сам код, чтобы объяснить, говорит ли он отаблица или нет с {}, но у нас есть первый набор кода, где {} используется, и речь не идет о таблице.
Какое соглашение используется? Что они на самом деле пытаются сделать / показать, используя {} и [] в первой строке кода?