訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
ECMAScriptプログラムのソーステキストは、まず最初にトークン、行終端、コメントやホワイトスペースといった入力要素の並びに変換されます。 ソーステキストは、左から右へスキャンされ、反復的に次の入力要素として最も長い利用可能な文字の並びを取り出します。 語彙的な文法においては2つの目標記号があります。 InputElementDiv 記号は、先行する除算(/)演算子、除算代入(/=)演算子が許容される場合、それらの構文的な文法コンテキスト内で利用されます。 InputElementRegExp 記号は、他の構文的な文法コンテキスト内で利用されます。 [注釈:]除算(/)や除算代入(/=)の両方が先行する場合、構文上の文法コンテキストは何もなく、先行する正規表現リテラル( RegularExpressionLiteral )が許容されます。 これは、例えば次の例においてセミコロン挿入(7.9項参照)による影響を受けないということです。
a = b /hi/g.exec(c).map(d);
LineTerminator(行終端)の直後にくる非ホワイトスペースや非コメント文字の先頭が、スラッシュ(/)である場合、その構文上のコンテキストは、除算や除算代入を許容し、LineTerminator(行終端)位置で挿入されるセミコロンはありません。 つまり、上記の例は、
a = b / hi / g.exec(c).map(d);
(改行のない一行の文)と同じ様に解釈されるということです。
【構文】 InputElementDiv :: WhiteSpace LineTerminator Comment Token DivPunctuator InputElementRegExp :: WhiteSpace LineTerminator Comment Token RegularExpressionLiteral