clojure有语言规范吗?

Rob*_*lan 20 specifications clojure

是否有针对clojure的语言规范?在EBNF或类似的东西中精确定义词法语法和语法的东西?

我能找到的最接近的是clojure网站,但这并不完全符合语言规范的要求(尽管它是一个非常好的资源).如果没有规格,我们的BDFL是否提到了任何一个计划?

Ror*_*ane 17

由fogus链接的语法(在Eclipse插件逆时针方向内)不再被该项目使用,并已从中删除.如果你想为Clojure的一个更切合最新ANTLR语法,请参阅Clojure.g4(永久从)语法-V4,"为ANTLR V4书面语法"的集合.Clojure.g4它很小并且易于阅读,并且它已成功解析了Compojure并且Clojure.g4在过去,但这并不能保证它可以正确地解析所有Clojure代码.

Clojure语法的最具说服力的规范是Clojure的源代码本身.Clojure不使用抽象语法,只使用自定义解析器,但在仔细研究解析器的实现后,您可以理解语法.这里是Clojure的解析器:clojure.core(永久).

Clojure LispReader.java使用同一目录中其他文件的几个类,例如LispReader.java,但大多数代码都在该文件中.在LispReader.java,主要功能是LineNumberingPushbackReader.LispReader使用read忽略空格和逗号.它还可以检测数字并解析分析read.对于大多数其他符号,例如isWhitespacereadNumber,(手动解释到#read数组中的对象.您可以从那里按照代码.

还有一个macros名为clojure.tools.reader的Clojure重新实现.它的源代码可能比dispatchMacrosClojure 更容易阅读,而不是Java.clojure.tools.reader有一些不同之处LispReader.java,它们大多能够读取为Clojure提出的一些较小的额外语法并更好地处理错误.


Ray*_*yne 6

没有语言规范.如果将来有任何计划,我还没有听说过.