2024年Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面以了解更多关于如何使用本站的信息。

0 投票
tools.reader

问题
我是rewrite-clj的维护者。
rewire-clj很感谢clojure 工具阅读器来解析Clojure源文件。
最近有一位玩家在Windows平台上提出一个问题,想知道为什么他的Windows \r\n 新行被转换为 \n

我基本是耸了耸肩,并实际上回答说,“因为 rewrite-clj 使用 tools.reader”。我对这样的回答感到有点愧疚,因此在这里问了一个关于Ask Clojure的问题。

我代表那位 rewrite-clj 用户提问

  1. tools.reader的意图是将所有新行规范化为\n吗?(我认为是这样)
  2. 应该吗?

最大的优点是行已经规范化,但也意味着信息的损失。

相关
之前我在Clojure工具阅读器上提出一个问题,关于它是如何规范化Windows新行的

1 答案

0 投票

“将所有新行规范化”是什么意思?我不理解这个问题在问什么。

感谢您的回复!我正在使用我在 Clojure 工具读取器源代码中看到的语言。

我的理解是使用了“规范换行符”来描述。

- 把 \r\n 转换为 \n。
- (也许有点奇怪,它还将 \r\f 转换为 \n)。

这意味着在工具读取器解析结果中不可用原始特定于操作系统的换行符。
我猜测我在问的是 - tools.reader(以及 Clojure LispReader)基本是关于从文本流中读取形式。空格通常不会保留在结果是形式中(因为空格被丢弃),也许只有字符串字面量。
哦,对了,是的,这个问题很好!感谢您的耐心。

Rewrite-clj 比大多数用户深入挖掘 tools.reader。

它使用 clojure.tools.reader.reader-types 命名空间中的函数如 read-char,unread 和 peekchar。它采取这种低级方法来返回高层读取器函数不返回的内容,如空白、注释和 #_ :skipped-stuff。

因此,当 rewrite-clj 获取空间时,换行符始终为 \n(即使最初是 \r\n)。
...