阅读和理解Common Lisp(HyperSpec)文档

Mad*_*ist 4 lisp common-lisp ebnf hyperspec

为了更深入地熟悉Common Lisp的工具,我发现自己在阅读文档时遇到了困难.即,难以理解所讨论的宏的用途将是什么样的.

例如,考虑一下:

do ({var | (var [init-form [step-form]])}*) (end-test-form result-form*) declaration* {tag | statement}*

如何解释括号?圆括号是否()对应于Lisp列表?什么是垂直条?大括号?星号?

我几乎可以阅读Unix手册页并很好地理解它们的语法; 然而,似乎这里发生了一些完全不同的事情.

tfb*_*tfb 9

这是我评论的扩展,我认为这是一个答案.

首先要记住的是,CLHS是一个规范:它通常不是非常好的介绍材料,尽管很多人当然从中学到了CL.一些符号在规范的纸质(或PDF)版本中也更容易阅读:虽然转换为HTML非常好(当时是英雄的),但并不总是完全正确:如果你能得到纸质版本在某些情况下更好.

话虽如此:第1.4.1节有符号公约,第1.4.1.2节专门处理规范中使用的BNF变体.