Столкнулся с понятиями Statement, Expression, ExpressionStatements в книге Douglas Crockford. JavaScript: The Good Parts.
Например, Esprima парсер не выделяет Statement, если я правильно понял, корректно его перевести как "директива, инструкция", но использует ExpressionStatement.
Укажите, пожалуйста, как они соотносятся между собой и как их корректно перевести?
Если обратиться к спецификации, можно найти определение данных понятий:
Statement - общее название всех основных выражений, как можно увидеть, выражения бывают нескольких видов
Statement[Yield, Return]: BlockStatement[?Yield, ?Return] VariableStatement[?Yield] EmptyStatement ExpressionStatement[?Yield] IfStatement[?Yield, ?Return] BreakableStatement[?Yield, ?Return] ContinueStatement[?Yield] BreakStatement[?Yield] [+Return]ReturnStatement[?Yield] WithStatement[?Yield, ?Return] LabelledStatement[?Yield, ?Return] ThrowStatement[?Yield] TryStatement[?Yield, ?Return] DebuggerStatement
Как можно заметить ExpressionStatement просто один из видов Statement, вполне возможно именно поэтому указанный парсер не выделяет Statement отдельно.
В свою очередь ExpressionStatement представляет из себя Expression, перед которым нет {, function, class, let [
ExpressionStatement[Yield]:
[lookahead ∉ { {, function, class, let [ }]Expression[In, ?Yield];
И, наконец, Expression - почти любое выражение, которое можно вычислить и получить значение. Определяется оно, как один или несколько AssignmentExpression, разделенных запятыми. Которые в свою очередь могут быть: тернарным оператором, стрелочной функцией, yield выражением, либо выражением с применением операторов присваивания.
С переводом, все несколько сложнее. На сколько я знаю, общеупотребимого перевода нет. В википедии присутствует вариант Инстру́кция или опера́тор. Кроме этого есть обсуждение на соседнем сайте
Сборка персонального компьютера от Artline: умный выбор для современных пользователей