根据:RFC 2068:
通过用括号将注释文本括起来,可以将注释包含在某些 HTTP 标头字段中。仅允许在包含“comment”作为其字段值定义的一部分的字段中使用注释。在所有其他字段中,括号被视为字段值的一部分。
这些是相关的规则:
comment = "(" *( ctext | comment ) ")"
ctext = <any TEXT excluding "(" and ")">
评论里面的评论?这似乎很愚蠢。我的主张是:(1)评论中不需要嵌套评论。(2) 如果是这样,评论规则最好表述为:
comment = "(" *( ctext ) ")"
我的主张正确吗?如果没有,嵌套注释何时实际使用?其他图书馆在乎吗?你知道这方面的历史/评论吗?(尝试使用“RFC 2068 嵌套注释”进行 Web 搜索并不是很有帮助。)
(动机:我很在意,因为我正在为 RFC 2068 编写一个词法分析器(使用 Ragel)。如果评论真的需要可嵌套,那就意味着递归规则,据我所知,这不是 Ragel 的最佳选择。我读过一些迹象表明 Ragel 在某些情况下可以处理递归规则,但我不太清楚。另外,我也在查看 Unicorn Ragel 代码,这很有帮助。)
PS 为简单起见,我现在有意不深入研究另一条规则的细节quoted-string
。
2012-08-20 更新:下面的一个答案有用地引用了 RFC 2068 的较新版本。这有助于澄清解析规则。但是,它没有解决我的其他观点:
我没有看到任何令人信服的理由让规范在评论中包含评论。这似乎是不必要的——也许是过度设计的,也许是被忽视的。这既烦人又重要,因为递归规则使格式成为非常规语言。这是规范编写者通常应该注意的事情,对吧?
我还没有(还没有?)看到在评论中使用评论的例子。如果是这样的话,世界已经含蓄地说“嵌套评论无关紧要”。