11.4 注释

注释可以是单行或多行。多行注释不能嵌套。

因为单行注释可以包含除了 LineTerminator 字符之外的任何字符,又因为有个一般规则:一个 token 总是尽可能匹配更长,所以一个单行注释总是包含从 // 到行终结符之间的所有字符。然而,在该行末尾的 LineTerminator 不被看成是单行注释的一部分,它被词法文法识别成语法文法输入元素流的一部分。这一点非常重要,因为这意味着是否存在单行注释都不影响自动分号插入进程(见 11.9)

像空白一样,注释会被语法文法简单丢弃,除了 MultiLineComment 包含行终结符字符的情况,这种情况下整个注释会当作一个 LineTerminator 提供给语法文法解析

语法
  1. Comment::
  2. MultiLineComment
  3. SingleLineComment
  4. MultiLineComment::
  5. /*MultiLineCommentCharsopt*/
  6. MultiLineCommentChars::
  7. MultiLineNotAsteriskCharMultiLineCommentCharsopt
  8. *PostAsteriskCommentCharsopt
  9. PostAsteriskCommentChars::
  10. MultiLineNotForwardSlashOrAsteriskCharMultiLineCommentCharsopt
  11. *PostAsteriskCommentCharsopt
  12. MultiLineNotAsteriskChar::
  13. SourceCharacterbut not *
  14. MultiLineNotForwardSlashOrAsteriskChar::
  15. SourceCharacterbut not one of / or *
  16. SingleLineComment::
  17. //SingleLineCommentCharsopt
  18. SingleLineCommentChars::
  19. SingleLineCommentCharSingleLineCommentCharsopt
  20. SingleLineCommentChar::
  21. SourceCharacterbut not LineTerminator