> -----Original Message----- > From: David Kastrup [mailto:[email protected]] > Sent: Tuesday, January 14, 2020 5:39 PM > To: Thomas Morley <[email protected]> > Cc: Daniel Rosen <[email protected]>; lilypond-user Mailing List (lilypond- > [email protected]) <[email protected]>; David Nalesnik > <[email protected]> > Subject: Re: metronome-mark-alignment > > > Ok, let me try again. > > # and $ differ in several respects. # inserts Scheme constructs in places > where LilyPond can decide how they fit into its syntax without looking at > their value first. In that case, evaluation of those Scheme expressions is > done at the time the expression is being actually used which tends to be > what one expects. In contrast, $ can be used in places where the value of > the expression will have an impact on just how LilyPond will put them into > context. For example, a $ expression evaluating to a duration may be > combined with a preceding pitch to form a note, while having it evaluate to > another pitch in the same place will form a separate note. > > This syntactic flexibility may lead to the expression getting evaluated at an > unexpectedly early point of time, namely when LilyPond needs to know its > type in order to decide that it does not actually combine with the preceding > expression. > > ------ > > So no talk about lexer and parser and lookahead and tokens.
This is better, but I still have trouble grasping precisely what it means, and I think that has to do with my lack of knowledge about how the program actually works. I've been using LilyPond for a long time so I have a pretty good grasp of the syntax for creating a score, and I know how to find the stuff I don't know off the top of my head; but my understanding of what happens once I've finished the text file(s) runs more or less like this: 1. Click "Compile" button in Frescobaldi (or run program from command line) 2. *magic* 3. PDF exists So it occurs to me that an overview "for Dummies(r)" of what really happens during "step 2," on a conceptual level, might be helpful for someone like me. I don't know if such an overview exists, or whether anyone has the time and ability to write one; and, moreover, depending on how much basic computer science it would need to cover, it might be outside the scope of this community---I have no idea, I'm just spitballing. But if it is doable, I suspect it would go a long way towards making the manual more readable for non-programmers. (Obviously if it does exist, someone please point me to it.) DR
