2017-12-20 8 views
4

Bei dem Versuch, eine tiefere Vertrautheit mit den Werkzeugen von Common Lisp zu erlangen, geriet ich beim Lesen der Dokumentation in Schwierigkeiten. Es ist nämlich schwierig zu verstehen, wie die Verwendung des fraglichen Makros aussehen würde.Common Lisp (HyperSpec) -Dokumentation lesen und verstehen

Betrachten wir zum Beispiel this:

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

Wie kann man die Klammern interpretieren? Entsprechen die runden Klammern () einer Lisp-Liste? Was ist die vertikale Leiste? Geschweifte Klammern? Sternchen?

Ich kann meistens die Unix-Manpages lesen und ihre Syntax gut verstehen; Es scheint jedoch, dass etwas völlig anderes hier vor sich geht.

+4

Haben Sie [1.4.1] (http://www.lispworks.com/documentation/HyperSpec/Body/01_da.htm) und speziell [1.4.1.2] (http://www.lispworks.com/) gelesen? Dokumentation/HyperSpec/Body/01_dab.htm)? – tfb

+0

verpasste es. Vielen Dank! – MadPhysicist

+0

[ENBF] (https://en.wikipedia.org/wiki/Extended_Backus-Naur_form) –

Antwort

8

Dies ist eine Erweiterung meines Kommentars, die meiner Meinung nach als Antwort dient.

Zunächst einmal daran erinnern, dass die CLHS, naja, eine Spezifikation: es ist oft nicht schrecklich gute Einführung, obwohl viele Leute CL daraus natürlich gelernt haben. Ein Teil der Notation ist auch leichter in den Papier- (oder PDF-) Versionen der Spezifikation zu lesen: Obwohl die Konvertierung in HTML ziemlich gut ist (und zu der Zeit heroisch war), ist es nicht immer völlig richtig: wenn Sie eine Papierkopie bekommen können In manchen Fällen ist es besser.

Das gesagt: section 1.4.1 hat Notation Konventionen, und section 1.4.1.2 befasst sich speziell mit der BNF-Variante in der Spezifikation verwendet.

+1

Danke, dass du mir etwas über die BNF beigebracht hast! Ich wusste, dass ich etwas verpasst habe! :) – MadPhysicist