On 12 March 2018 at 09:25, David Kastrup <d...@gnu.org> wrote:

> Gianmaria Lari <gianmarial...@gmail.com> writes:
>
> > On 11 March 2018 at 10:58, David Kastrup <d...@gnu.org> 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.
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to