Мне постоянно очень трудно читать официальную документацию, когда она связана с кодированием. Обычно я не понимаю этого, если это не связано с примером. Я ищу разъяснений о том, какие соглашения действуют при чтении документов, если таковые имеются. Возьмите приведенный ниже пример из руководства по 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, определяется как оператор, и «этот набор включает присваивания, управляющие структуры, вызовы функций и объявления переменных».
::= Не определено в документах, к счастью, его можно найти в Google.
Exp связан и объяснен.
Блок также имеет раздел.
Но тогда они делают {} и []. Они буквально заявили: «Квадратные скобки используются для индексации таблицы» всего несколькими строками выше. И эти волнистые скобки для написания таблицы. Итак, что я должен сделать из этого? Что {} и [] используются для обозначения отдельных разделов в качестве разметки, чтобы облегчить просмотр определенных компонентов? Или что {elseif exp then block} — это таблица с этими значениями внутри себя, а [else block] — это ключ-значение, индексирующее таблицу? Если бы я писал документ, в котором это действительно так, разве я не написал бы его таким образом?
Тогда я вижу
var ::= prefixexp `[´ exp `]´`
' ' определяет строку, но я должен сделать предположение, что '[' ']' используется как способ подчеркнуть тот факт, что, поскольку они говорили о том, что делают квадратные скобки в предыдущем разделе, они просто выделяют свою позицию и это не должно быть включено в код. Я только знаю, как сделать это предположение, потому что я знаю, что это не сработает, когда вы поместите их туда.
Но потом я вижу это:
chunk ::= {stat [`;´]}
Точно так же они говорят о размещении точки с запятой перед перечислением этого кода, но вся строка кода также была недавно объяснена и обсуждалась. Почему я должен предположить, что это написано без скобок, если оно написано со скобками? И я вижу, что они снова используют {} и [] , и я понятия не имею, на что они ссылаются, потому что явно не указано, что мы говорим о таблице... это просто использование самого кода, чтобы объяснить, идет ли речь о таблица или нет с {}, но у нас есть тот первый набор кода, где {} используется, и это не говорит о таблице.
Какое соглашение используется? Что они на самом деле пытаются сделать/показать, используя {} и [] в первой строке кода?