在像noweb或Rmarkdown这样的Literate编程工具中,代码块的执行顺序是如何确定的



我正在读这篇文章,上面写着:

由于notangle提取和组装其输入的方式,该程序可以以最佳顺序呈现和解释,以便于人类理解。notangle将确保程序块的顺序对编译器或解释器来说是正确的。

我的问题是:noweb编译器如何确定代码块的顺序?

上面写着:

R Markdown文档通常会有许多代码块。它们在单个R会话中按顺序进行评估,并且一个代码块中各种变量的状态将保留在未来的块中。

Rmarkdown不是基于noweb吗?它不应该像noweb那样自动确定代码块顺序吗?

Noweb块可以用作其他块中的宏,因此顺序可以归结为notangle找到它们的顺序。例如,如果我将main.txt与之混淆,则生成的文本将是字母A到E(按字母顺序(。

<<main.txt>>=
<<A>>
<<D>>
<<D>>=
D
<<E>>
@
A text chunk that won't be in main.txt.
<<F>>=
Since this chunk is not referred to in any other chunk it will not appear in main.txt.
<<A>>=
A
<<B>>
<<C>>
<<E>>=
E
<<C>>=
C
<<B>>=
B

最新更新