[ << Scheme-Übung ] | [Anfang][Inhalt][Index][ ? ] | [ Schnittstellen für Programmierer >> ] | ||
[ < Scheme in LilyPond ] | [ Nach oben : Scheme in LilyPond ] | [ LilyPond-Variablen > ] |
1.2.1 LilyPond Scheme-Syntax
Der Guile-Auswerter ist ein Teil von LilyPond, sodass Scheme also auch in
normale LilyPond-Eingabedateien eingefügt werden kann. Das Rautenzeichen
(#
) wird benutzt, um dem LilyPond-Parser mitzuteilen, dass der nächste
Wert ein Scheme-Wert ist.
Wenn der Parser eine Raute sieht, wird der Eingabe-Code an den Guile-Auswerter weitergereicht, der den Scheme-Ausdruck auswertet. Der Auswerter behandelt die Eingabe so lange, bis er zum Ende eines Scheme-Ausdrucks kommt.
Scheme-Prozeduren können in LilyPond-Eingabedateien definiert werden:
#(define (average a b c) (/ (+ a b c) 3))
LilyPond-Kommentare (%
oder %{ %}
) können innerhalb
von Scheme-Code nicht benutzt werden. Kommentare in Guile Scheme
werden wie folgt notiert:
; Einzeiliges Kommentar #! Guile-Stil Blockkommentar (nicht schachtelbar) Diese Kommentare werden von Scheme-Programmierern selten benutzt und nie im Quellcode von LilyPond !#
Für den Rest dieses Abschnitts soll angenommen werden, dass die Daten in
einer LilyPond-Eingabedatei notiert werden sollen, sodass immer #
vor die Scheme-Ausdrücke gestellt wird.
Alle Scheme-Ausdrücke auf oberster Ebene in einer LilyPond-Eingabedatei
können in einen einzigen Scheme-Ausdruck zusammengefasst werden mit
begin
:
#(begin (define foo 0) (define bar 1))
[ << Scheme-Übung ] | [Anfang][Inhalt][Index][ ? ] | [ Schnittstellen für Programmierer >> ] | ||
[ < Scheme in LilyPond ] | [ Nach oben : Scheme in LilyPond ] | [ LilyPond-Variablen > ] |