lilypond-user
[Top][All Lists]
Advanced

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

Re: Termination of variable definitions


From: David Sumbler
Subject: Re: Termination of variable definitions
Date: Tue, 19 Apr 2016 20:31:46 +0100

On Tue, 2016-04-19 at 20:51 +0200, David Kastrup wrote:
> David Sumbler <address@hidden> writes:
> 
> > In starting to experiment with selective compilation using includes
> > and/or the $(if condition action) structure provided by David Kastrup, I
> > found that there is something very, very basic that I have never really
> > understood.
> >
> > So at the risk of embarrassing myself, I should be grateful if somebody
> > would explain the following: how does Lilypond recognize the end of a
> > variable definition?
> 
> One expression.
> 
> > For instance, an example from the documentation shows: 
> >
> > violin = \new Staff {
> >   \relative {
> >     a'4 b c b
> >   }
> > }
> 
> "cello" can be no part of a single music expression, so it becomes a new
> statement.  Actually, at this point there are very few possible
> continuations.  But there is one:
> 
> \addlyrics { oh right this one }
> 
> > cello = \new Staff {
> >   \relative {
> >     \clef "bass"
> >     e2 d
> >   }
> > }
> >
> > What I don't understand is why the definition of 'violin' extends from
> > 'new' to the right brace on line 5.  Why does the definition not extend,
> > for instance, to the brace on line 12?
> 
> What would "cello" be?
> 
> > Alternatively, why does 'violin' not equate simply to '\new' or to
> > '\new Staff' or '\new Staff {' ?
> 
> All those are not a complete music expression.

So Lilypond actually checks the syntax and structure of a variable at
the time it is defined.  I assumed that only the validity of the name
was checked, and that the rest was simply stored as a string of
characters.  This is implied in the docs, although it may well be that
elsewhere they do state that the string must represent a complete music
expression.

Also from the documentation we have:

width = 4.5\cm
name = "Wendy"
aFivePaper = \paper { paperheight = 21.0 \cm }

None of these, as I (perhaps mis)understand it, is a music expression.
I can see that the definition of aFivePaper is perhaps terminated by the
'}' following the earlier '{'.  And that the definition of name is
perhaps terminated by a double quote, since it commences with one.  In
the case of width, it seems even less clear - perhaps it is that, in the
absence of an opening delineator such as ( { " etc., it regards the
first white space as a terminator.  But I am guessing.

Am I alone in finding the functioning of variable definition slightly
less than obvious?

David




reply via email to

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