|Subject:||Re: c#(+6 2)|
|Date:||Mon, 12 Mar 2018 10:06:06 +0100|
Gianmaria Lari <address@hidden> writes:
> On 11 March 2018 at 10:58, David Kastrup <address@hidden> wrote:
>> Then Scheme expressions written using # in the middle of music are
>> expected to be music expressions.
>> If you want to insert an actual
>> duration, you need to write it preceded with $ so that it can have
>> different type (and trigger different syntactic rules).
>> But $8 is not a duration. $(ly:make-duration 3 0) would be a duration.
> How does it work ?
> Originary I thought that before source compilation, there was a step where
> to replace scheme expressions with their evaluation, like a preprocessor;
> that's why I tried c#(+ 6 2). But ok, it's clear it doesn't work in this
> Is this handled by the lilypond parser that create a parse tree and then
> according position in the tree and # or $ it expects different types?
> Thank you, g.
From the "Extending LilyPond" guide:
1.2.1 LilyPond Scheme syntax
The Guile interpreter is part of LilyPond, which means that Scheme can
be included in LilyPond input files. There are several methods for
including Scheme in LilyPond.
The simplest way is to use a hash mark ‘#’ before a Scheme
Now LilyPond’s input is structured into tokens and expressions, much
like human language is structured into words and sentences. LilyPond
has a lexer that recognizes tokens (literal numbers, strings, Scheme
|[Prev in Thread]||Current Thread||[Next in Thread]|