在我使用的大多数语言中,你根本无法嵌套块注释,因为“关闭”注释sintaxis的第一个发生关闭了注释,即使它只是一个“内部”注释。
例如,在HTML中
<!-- outer comment
<p>hello</p><!-- inner comment <p>world</p> -->
<p>this should BE commented</p>
-->
在这种情况下,外部评论以第一个结束 -->
而不是相应的最后一个,导致最后一个 <p>
打印,什么时候不应该打印。
对于使用的语言也是如此 /* */
用于块注释,例如java,php,css,javascript等。
但我的问题是为什么会这样?为什么设计不允许?我提到“按设计”,因为我真的怀疑是因为解析问题,我想解析器完全有能力跟踪开放 /*
s并通过相应的结束关闭评论 */
但他们只是某种程度上认为这不是一个好主意。
我已经知道,解决这个问题的方法是以某种方式更改内部结束注释,以避免它们关闭,并且只留下最后一个结束注释。例如改变内心 -->
s和 */
s for - ->
s和 * /
s。但这显然不方便,当您只想丢弃代码块以进行调试时很难做到。 (其他技术是将所有内容嵌入其中 if(false){}
块,但这不是重点。
那么,我想知道的是为什么几种现代语言通常不允许嵌套注释?必须有一个很好的理由,除了“别人不这样做,我们也不会”对吧?
另外,是否还有其他(不那么模糊)的语言允许嵌套块注释?