Допустим, что в какой-то момент процесса синтаксического анализа я уже прошел следующий вывод грамматики:
Script -> ScriptBody -> StatementList -> ExpressionStatement -> Expression
Здесь возникает проблема.Согласно спецификации, Expression
в пределах ExpressionStatement
может заканчиваться только как AssignmentExpression
или их последовательностью.Однако операторы типа
a;
12;
"some text";
определенно являются выражениями выражений (насколько я понимаю), и в то же время не являются ни одним из возможных подтипов AssignmentExpression
.Они не приводят к синтаксической ошибке в моих браузерах.
Это особенность реализации или движка, что эти операторы возвращают значение, или я что-то упустил в спецификации?Может быть, это совсем не AssignmentExpressions
, и я принимаю их за что-то другое?