В большинстве языков, которые я использую, вы просто не можете вставлять комментарии блоков, потому что первое вхождение комментария "закрыть" sintaxis закрывает комментарий, даже если это был только "внутренний" комментарий.
Например, в HTML
<!-- outer comment
<p>hello</p><!-- inner comment <p>world</p> -->
<p>this should BE commented</p>
-->
в этом случае внешний комментарий заканчивается на первом -->
вместо соответствующего последнего, заставляя последний <p>
печатать, когда он не должен.
То же самое происходит для языков, которые используют /* */
для комментариев блоков, например, в java, php, css, javascript и т.д.
Но мой вопрос: ПОЧЕМУ это так? Почему, по дизайну, это запрещено? Я упоминаю "по дизайну", потому что я действительно сомневаюсь, что это из-за проблем с синтаксическим разбором, я думаю, что синтаксические анализаторы отлично умеют отслеживать открытие /*
и закрывают комментарии с соответствующим закрытием */
. Но они просто почему-то решили, что это не очень хорошая идея.
Я уже знаю, что обходной путь для этого заключается в том, чтобы каким-то образом изменить внутренние комментарии закрытия, чтобы избежать их закрытия, и оставить только последний закрывающий. например изменение внутренних -->
и */
для - ->
и * /
. Но это, очевидно, не удобно и трудно сделать, когда вы хотите отказаться от блоков кода для целей отладки. (другие методы заключают в себе все в блоках if(false){}
, но здесь дело не в этом.
Итак, я хотел бы знать, почему вложенные комментарии обычно не разрешены на нескольких современных языках? должна быть хорошая причина, кроме "других не делать этого, мы не будем" или нет.
И как плюс, есть ли другие (не столь неясные) языки, которые разрешают вложенные комментарии блока?