[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