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)

krutoy 29.11.2014 00:32

bes,
Ты слишком далек, чтобы обсуждать такие темы. Я пас.

bes 29.11.2014 00:36

Цитата:

Сообщение от krutoy
bes,
Ты слишком далек, чтобы обсуждать такие темы. Я пас.

:D

bes 29.11.2014 01:17

Цитата:

Сообщение от bes
если в данном случае это забыли сделать, то будет понятно

вероятно так оно и есть, так как в спецификации по java Expression определяется
думаю, что в основной своей массе, годно и для javascript

используется несколько иная нотация, чем в начале спецификации
ещё нужно вкуривать, но видно, что через цепочку Expression1 - Expression2 - Expression3 - Primary можно добраться до терминалов

http://docs.oracle.com/javase/specs/...ml/jls-18.html
Цитата:

The grammar below uses the following BNF-style conventions:
• [x] denotes zero or one occurrences of x.
• {x} denotes zero or more occurrences of x.
• (x | y) means one of either x or y.
Цитата:

Expression:
Expression1 [AssignmentOperator Expression1]

AssignmentOperator:
=
+=
-=
*=
/=
&=
|=
^=
%=
<<=
>>=
>>>=

Expression1:
Expression2 [Expression1Rest]

Expression1Rest:
? Expression : Expression1

Expression2:
Expression3 [Expression2Rest]

Expression2Rest:
{ InfixOp Expression3 }
instanceof Type


InfixOp:
||
&&
|
^
&
==
!=
<
>
<=
>=
<<
>>
>>>
+
-
*
/
%

Expression3:
PrefixOp Expression3
( (Expression | Type) ) Expression3
Primary { Selector } { PostfixOp }

PrefixOp:
++
--
!
~
+
-

PostfixOp:
++
--

Primary:
Literal
ParExpression
this [Arguments]
super SuperSuffix
new Creator
NonWildcardTypeArguments (ExplicitGenericInvocationSuffix | this Arguments)
Identifier { . Identifier } [IdentifierSuffix]
BasicType {[]} . class
void . class

bes 29.11.2014 01:40

пошёл было уже спать, но пришла светлая мысль распространить место, где найдено было это в спецификации java, на спецификацию ecmascript

http://www.ecma-international.org/ecma-262/5.1/#sec-A
Annex A
Цитата:

Expression :
AssignmentExpression
Expression , AssignmentExpression
теперь сон обещает быть спокойным :)

bes 29.11.2014 09:08

завершая начатое
http://www.ecma-international.org/ecma-262/5.1/#sec-A.3
http://es5.javascript.ru/A.html#A.3

Цитата:

Expression :
AssignmentExpression
Expression , AssignmentExpression

AssignmentExpression :
ConditionalExpression
LeftHandSideExpression = AssignmentExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression

ConditionalExpression :
LogicalORExpression
LogicalORExpression ? AssignmentExpression : AssignmentExpression

LogicalORExpression :
LogicalANDExpression
LogicalORExpression || LogicalANDExpression

LeftHandSideExpression :
NewExpression
CallExpression

AssignmentOperator : one of
*= /= %= += -= <<= >>= >>>= &= ^= |=

....
логика помещения такой важной информации в приложение, которое должно носить информационный характер и объединять в себе в конспективном виде то, что описано в основной части стандарта, и которое должно было быть помещено в раздел про выражения, не понятна, но хотя бы есть

PS: :dance: :dance: :dance: пошёл :victory: :p :victory: отмечать :dance: :dance: :dance:

Gvozd 29.11.2014 11:31

Вложений: 2
Дуглас Крокфод. Javascript Сильные стороны
Под значение на первой диаграмме, полагаю подразумевается литерал, но перевели криво(диаграммы для значение нету)

http://javascript.ru/forum/attachmen...d=141724998 2
http://javascript.ru/forum/attachmen...d=141724998 2

bes 29.11.2014 13:51

Gvozd, переводы склонны к ошибкам, хотя бы потому, что англоязычные слова зачастую многозначны, чуть зазевался и перевёл другим словом, что при использовании грамматики недопустимо

PS: лично меня вполне устраивает используемая в спецификации нотация, по крайней мере, каких-то стрелочек и кружочков с прямоугольниками как в блок-схемах мне не нужно, также как и не нужно begin-end-ов, как в типа в более понятных языках для дебилов :)

bes 02.12.2014 19:32

Цитата:

Сообщение от bes
если в данном случае это забыли сделать, то будет понятно

выражения в основной части спецификации начинаются с объяснения того, как работает оператор запятая
логика для меня не понятна (и искать там интуиция вряд ли бы подсказала), так как можно было просто начать с определения Expression и дальше сводить его к терминалам

http://www.ecma-international.org/ec...5.1/#sec-11.14
http://es5.javascript.ru/x11.html#x11.14

Цитата:

11.14 Оператор 'Запятая' ( , ) # Ⓣ Ⓡ Ⓖ
Синтаксис
Expression :
AssignmentExpression
Expression , AssignmentExpression

ExpressionNoIn :
AssignmentExpressionNoIn
ExpressionNoIn , AssignmentExpressionNoIn


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