【发布时间】:2016-03-10 19:14:10
【问题描述】:
【问题讨论】:
-
你为什么会这样想?
标签: compiler-construction compilation
【问题讨论】:
标签: compiler-construction compilation
【讨论】:
我将在回答时牢记 C 编译器。大多数编译器通常会出现以下情况,但我要给出的示例适用于 C 编译器。
在行重构阶段之后移除 cmets,并且通常在词法分析阶段被忽略。可以通过这种方式进行快速验证。考虑以下代码:
printf("Hello "); // *************\
printf("World"); // I like boxes!\
printf("!\n); // ^^^^^^^^^^^^^\
当 C 编译器发现一个反斜杠紧跟一个换行符时,行重构阶段会将其变为单行。
你可以弄清楚上面的代码会导致什么!
设计选择是因为它与我们期望的行为一致,反斜杠后跟换行符必须始终连接。
但是,词法分析阶段涉及标记化。在标记代码以进行进一步处理时,此阶段可以方便地忽略 cmets。所以到下一个阶段被调用时,cmets 已经丢失了!
希望这可以澄清! :)
P.S.:来源!
That line-reconstruction takes place before comments are even analyzed
【讨论】: