自動分號插入規則
分號插入有三個基本規則:
- 當從左到右解析程式時,遇到任何語法生成不允許的令牌(稱為違規令牌 ),如果出現以下一個或多個,則在違規令牌之前自動插入分號條件是真的:
- 違規令牌與前一令牌分開至少一個
LineTerminator
。- 違規令牌是
}
。
- 當從左到右解析程式時,會遇到令牌輸入流的末尾,並且解析器無法將輸入令牌流解析為單個完整的 ECMAScript
Program
,然後在結尾處自動插入分號輸入流。- 當從左到右解析程式時,會遇到某些語法生成所允許的令牌,但是生產是限制生產,並且令牌將是緊跟註釋後的終端或非終端的第一個令牌“ [no
LineTerminator
here] ”在限制生產中(因此這樣的標記稱為限制標記),並且受限標記與前一標記分開至少一個LineTerminator
,然後在限制標記之前自動插入分號。但是,前面的規則還有一個額外的重要條件:如果分號將被解析為空語句,或者如果該分號將成為
for
語句標題中的兩個分號之一,則永遠不會自動插入分號(請參閱 12.6.3)。