11.4 注释
注释可以是单行或多行。多行注释不能嵌套。
因为单行注释可以包含除了 LineTerminator 字符之外的任何字符,又因为有个一般规则:一个 token 总是尽可能匹配更长,所以一个单行注释总是包含从 // 到行终结符之间的所有字符。然而,在该行末尾的 LineTerminator 不被看成是单行注释的一部分,它被词法文法识别成语法文法输入元素流的一部分。这一点非常重要,因为这意味着是否存在单行注释都不影响自动分号插入进程(见 11.9)
像空白一样,注释会被语法文法简单丢弃,除了 MultiLineComment 包含行终结符字符的情况,这种情况下整个注释会当作一个 LineTerminator 提供给语法文法解析
语法
Comment::
MultiLineComment
SingleLineComment
MultiLineComment::
/*MultiLineCommentCharsopt*/
MultiLineCommentChars::
MultiLineNotAsteriskCharMultiLineCommentCharsopt
*PostAsteriskCommentCharsopt
PostAsteriskCommentChars::
MultiLineNotForwardSlashOrAsteriskCharMultiLineCommentCharsopt
*PostAsteriskCommentCharsopt
MultiLineNotAsteriskChar::
SourceCharacterbut not *
MultiLineNotForwardSlashOrAsteriskChar::
SourceCharacterbut not one of / or *
SingleLineComment::
//SingleLineCommentCharsopt
SingleLineCommentChars::
SingleLineCommentCharSingleLineCommentCharsopt
SingleLineCommentChar::
SourceCharacterbut not LineTerminator