lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: c#(+6 2)


From: Gianmaria Lari
Subject: Re: c#(+6 2)
Date: Mon, 12 Mar 2018 10:06:06 +0100



On 12 March 2018 at 09:25, David Kastrup <address@hidden> wrote:
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
> way.
>
> 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
_expression_.

   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
[....] 

Ok David, I think it's clear. Thanks a lot for the very detailed explanation, I appreciated your help.
g.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]