Я пишу парсер JavaScript, но грамматические правила для циклов for
немного сбивают с толку. Из спецификаций :
'for' LPAREN (
(expressionNoln)? SEMI (expression)? SEMI (expression)? RPAREN statement
| 'var' variableDeclarationListNoln SEMI (expression)? SEMI (expression)? RPAREN statement
| leftHandSideExpression 'in' expression RPAREN statement
| 'var' variableDeclarationNoln 'in' expression RPAREN statement
)
Я пытаюсь выяснить, в чем разница между expressionNoln
и обычным expression
.И, в процессе, выясните, что происходит с variableDeclartionNoln
и variableDeclartionListNoln
.
Единственное различие, которое я обнаружил, немного ниже, между relationalExpression
и relationalExpressionNoln
.В последнем правиле отсутствует оператор in
.
Правильно ли я это понял или я просто запутался?