Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Что такое Expression в ECMAScript? (https://javascript.ru/forum/misc/51990-chto-takoe-expression-v-ecmascript.html)

bes 28.11.2014 21:47

Что такое Expression в ECMAScript?
 
Кто-нибудь на форуме может ответить, что такое Expression с точки зрения спецификации?

http://www.ecma-international.org/ecma-262/5.1/
http://es5.javascript.ru/

krutoy 28.11.2014 22:07

Это с любой точки зрения всегда одно и то же -- выражение. Может ты имеешь в виду Function Expression?

bes 28.11.2014 23:43

Цитата:

Сообщение от krutoy
Это с любой точки зрения всегда одно и то же -- выражение. Может ты имеешь в виду Function Expression?

нет, я имею в виду, где его грамматическое определение в спецификации, хотя бы описание по старинке - словами в предложении

например, есть определение для PrimaryExpression
http://es5.javascript.ru/x11.html#x11.1
Цитата:

PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
перевожу: PrimaryExpression представляет собой либо this, либо Identifier, ..., либо последовательность, состоящую из левой круглой скобки, Expression и правой круглой скобки

далее есть, например, определение для Literal
http://es5.javascript.ru/x7.html#x7.8
Цитата:

Literal ::
NullLiteral
BooleanLiteral
NumericLiteral
StringLiteral
RegularExpressionLiteral
далее, есть, например, определение NullLiteral
Цитата:

NullLiteral ::
null
то есть мы полностью прошли цепочку, вплоть до символов, которые мы пишем в исходном коде

но что такое Expression?

Aetae 28.11.2014 23:47

Если утрировать: то что можно записать в одну строку без точки с запятой.)

bes 29.11.2014 00:05

Цитата:

Сообщение от Aetae
Если утрировать: то что можно записать в одну строку без точки с запятой.)

хорошо, допустим
Цитата:

Expression::
то что можно записать в одну строку без точки с запятой
можешь ткнуть носом, где об этом написано в спецификации, или как ты пришёл к такому выводу?

krutoy 29.11.2014 00:08

bes,
Тебе надо не спеки читать, а литературу по основам программирования.

bes 29.11.2014 00:19

Цитата:

Сообщение от krutoy
bes,
Тебе надо не спеки читать, а литературу по основам программирования.

ерунду не говори, спецификация eсmascript - строгий документ, в котором используются, в частности, контекстно-свободные грамматики, это означает, что любой нетерминал можно свести к последовательности терминалов, так как именно их совокупность передаётся на вход транслятору

http://es5.javascript.ru/x5.html#x5.1.1
Цитата:

Начиная с предложения, состоящего из одиночного помеченного нетерминала – начального символа, данная КС грамматика определяет язык, а именно – ряд (возможно, бесконечный) допустимых последовательностей терминальных символов, которые могут получиться в результате неоднократной замены какого-либо нетерминала в этой последовательности на символы, указанные в правой стороне правила, для которого этот нетерминал является левой частью.
если нет строгого определения, должно быть произвольное описание
если в данном случае это забыли сделать, то будет понятно


Цитата:

Сообщение от Aetae
Если утрировать: то что можно записать в одну строку без точки с запятой.)

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

krutoy 29.11.2014 00:21

Aetae,
На самом деле, Ваше определение не совсем корректно, даже, я бы сказал, совсем некорректно. Выражение -- это минимальная семантическая единица, все таки. Например, func(foo) содержит несколько подвыражений, которые разбираются отдельно.

krutoy 29.11.2014 00:25

Цитата:

Сообщение от bes
строгий документ, в котором используются, в частности, контекстно-свободные грамматики

Где используются, в документе? LOL

bes 29.11.2014 00:29

Цитата:

Сообщение от krutoy
Где используются, в документе? LOL

поясни или ты опять на своей волне
грамматика - это способ описания языка, где используется - не в пивнухе же


Часовой пояс GMT +3, время: 12:59.