簡體   English   中英

JavaScript語法:for / for-in循環規則?

[英]JavaScript Grammar: for/for-in loop rules?

我正在編寫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之間的區別。 並且,在此過程中,找出variableDeclartionNolnvariableDeclartionListNoln發生了什么。

我發現的唯一區別是在relationalExpressionrelationalExpressionNoln之間還差一點。 后一個規則缺少in運算符。

我說對了,還是我感到困惑?

你是對的。 我認為您很困惑,因為ANTLR語法的標識符拼寫錯誤。 對於“ no in”,應為variableDeclarationListNoIn ANTLR使用小寫l而不是大寫I拼寫Noln

從表達式中刪除in對於避免for語句in in的特殊用法產生歧義很重要。

順便說一句,您的問題暗示您提供的鏈接是規范。 它不是。 它是到ANTLR語法示例的鏈接。 可以在以下位置找到官方標准: http : //www.ecma-international.org/publications/standards/Ecma-262.htm

我想每一行代表以下for S:

for (i = 0; i < 10; i++) console.log(i);
for (var i = 0; i < 10; i++) console.log(i);
for (i in obj) console.log(i + ': ' + obj[i]);
for (var i in obj) console.log(i + ': ' + obj[i]);

我不知道什么No Line (這是我想象它代表什么),是指雖然。

SEMI = ';'    LPAREN = '('    RPAREN = ')'     ? = optional      | = or

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM