请分享您的看法,参加 2024 Clojure 状态调查!

欢迎!请查看 关于 页面以了解更多关于其工作方式的详细信息。

0 投票
语法和读取器

在 REPL 中,我无意中键入了

user=> 1. "\w+"
RuntimeException 不支持的转义字符:\w clojure.lang.Util.runtimeExce
ption (Util.java:156)

<core$PLUS clojure.core$PLUS@6b7dc78>

您可以看到令人困惑的结果(REPL 也留下了一个未关闭的字符串)。在查看 LispReader.java 后,我觉得 DispatchReader 至少应该在与 CtorReader 调用之前检查空白字符(更好的方法可能是检查有效的符号字符)。

6 个答案

0 投票

评论者:bronsa

无法复现

0 投票

评论者:alexmiller

对我来说,似乎至少部分可以复现。在第一个例子中我看到同样的行为。第二个例子用符号 1. } 可以正常工作,但在这给定的情况下会引发合理的错误。

0 投票

评论者:bronsa

Ah,对。
要修复第一个错误,只需将 1. "\w+" 确保为有效的正则表达式字面量,即在 1. 和下一个分发字符之间允许空格。
这是否是我们想要的东西?

0 投票
by

评论者:alexmiller

不知道

0 投票
by

评论者:alexmiller

在描述中移除了第2个示例(已不再存在)。

0 投票
by
参考:[https://clojure.atlassian.net/browse/CLJ-878](https://clojure.atlassian.net/browse/CLJ-878) (由glchapman报告)
...