[英]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
之間的區別。 並且,在此過程中,找出variableDeclartionNoln
和variableDeclartionListNoln
發生了什么。
我發現的唯一區別是在relationalExpression
和relationalExpressionNoln
之間還差一點。 后一個規則缺少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.