【发布时间】:2023-03-09 19:07:01
【问题描述】:
这个问题引用Reflections on Trusting Trust,图2。
看看这个sn-p的代码,来自图2:
...
c = next( );
if(c != '\\')
return(c);
c = next( );
if (c != '\\')
return('\\');
if (c == 'n')
return('\n');
上面写着:
这是一段令人惊叹的代码。它以完全可移植的方式“知道”为任何字符集中的新行编译了什么字符代码。然后,知道的行为允许它重新编译自己,从而使知识永存。
我想阅读本文的其余部分。有人能解释一下上面的代码是如何重新编译自己的吗?我不确定我是否理解这个 sn-p 代码与“阶段 1”中的代码有何关系:
(来源:bell-labs.com)
【问题讨论】:
-
它不会自己重新编译,sn-p 中没有任何东西显示这个..
-
该文档的下一部分通过添加
\v字符的步骤描述了它的工作原理。你读过那部分吗?本质上,第一次添加字符时,需要使用数值;之后,您的编译器将能够自我延续。 -
你的问题有错别字,第二个
if (c != '\\')应该是if (c == '\\')