Что такое выражения и операторы в Lua?

#lua #expression #statements

#lua #выражение #операторы

Вопрос:

что на самом деле представляют собой выражения и операторы в Lua? часто это не так понятно из-за таких вещей, как выражение vararg ‘…’ и что nil / true / false также являются выражениями.

и являются ли обращения к таблице выражениями? кажется, это имеет смысл, потому что вы не можете просто записать доступ к таблице в файл и ожидать, что он тоже запустится.

Комментарии:

1. откуда берутся сложные выражения?

2. » часто это не так понятно из-за таких вещей, как выражение vararg ‘…’ и что nil / true / false также являются выражениями». Что в этом непонятного? Кроме того, различие между «выражением» и «оператором» в основном аналогично различиям в большинстве императивных языков. Python, JavaScript, C, C , Java, C #, Go, Swift, Rust — основные идеи все те же.

Ответ №1:

Полный синтаксис Lua имеет формальную спецификацию. stat операторы is и exp выражения is. В любом случае, вот краткое изложение конкретных битов, о которых вы спрашивали:

что на самом деле представляют собой выражения и операторы в Lua?

По сути, выражения — это все, что преобразуется в значение, а операторы — это вещи, которые выполняются и могут быть разделены точкой с запятой, и обычно каждое из них находится в отдельной строке.

часто это не так понятно из-за таких вещей, как выражение vararg ‘…’ и что nil / true / false также являются выражениями.

Вы правы насчет того, что все это — выражения. Однако это не делает ничего неясного.

и являются ли обращения к таблице выражениями?

ДА. Они покрываются var ::= Name | prefixexp ‘[’ exp ‘]’ | prefixexp ‘.’ Name , который является частью exp via prefixexp .