2

Dart 上使用了哪种风格的多行注释?

我知道C-style多行注释。此样式不允许在多行注释 ( nested comments) 内进行多行注释。

那是在多行注释中第一次遇到的'C' style注释结束。*/

例子:

有效的 C 风格评论:

/*
*/

无效的 C 样式注释:

/*
/**/
*/

在 Dart 中,这两种样式都是有效的,但据我所知,在大多数流行语言中只使用了C-style注释。

这是我的问题。

Dart 语言中的这种风格从何而来?From a historical point of view and practical.

附言

我正在为 Dart 编写 PEG 解析器,当我在语法中找到它时感到很惊讶。此规则不允许在我的解析器中自动识别multilne comment为终端,因为它自己递归调用。

MULTI_LINE_COMMENT <- '/*' (MULTI_LINE_COMMENT / !'*/' .)* '*/' ;

另外,如何用Bison/Flex术语来描述这种多行注释?

出现这个问题是因为在 PEG 解析器术语中,注释是white spaces. 并且white spaces在大多数情况下可以假设为终端,因为它们不会改变行为(它们不会分支并且不会被人类逻辑递归,即由词法扫描器直接生成为标记)。

我知道在 PEG 解析器中没有终端和非终端的划分,但为了更好地报告错误,一些语法规则的启发式分析永远不会阻止

4

1 回答 1

2

Dart 语言中的这种风格从何而来?

我相信他们添加了这个,因为它可以更容易地注释掉可能已经包含块注释的大块代码。大多数其他语法结构都是嵌套的,所以 C 风格的块注释对我来说总是很奇怪。

我认为 C 最初是这样工作的,因为它可以更容易地在几乎没有内存的旧 PDP-11 上进行 lex。我们不再有这个限制,所以我们可以有一个更加用户友好的注释语法。

于 2013-09-11T15:53:23.417 回答