Trevor Daniels <t.daniels <at> treda.co.uk> writes:

> So what problems do the users have, exactly?  We should address this 
> question first.  Janek apparently has his list, which would be a good start.
> But we should not invent problems where they don't exist.  I've probably 
> read every email on the user list for the last 4 years, and inconsistent 
> parser rules have not figured prominently.  

I generally agree.  But I also have sympathy for the desire to first clarify 
some broader questions  -- such as, in which /direction/ to straighten out the 
parser when user problems require changes to the parser.

I understand that past catering to concrete user needs has gradually resulted 
in a messy syntax, very difficult to import into other systems (musescore 
tried), which also makes it harder to cater to some current user desires.

The readable  \tempo "Adagio" 4. = 30~40   lacks the delimiters that most 
computer-entry formats require, which made it unusable in a \midi block for 
many years -- because LilyPond accepts decimal-point numbers in the midi block, 
for probably another good reason.  Without requiring delimiters it is hard to 
specify exactly when LilyPond should read 4. as a duration, and when as 4.000.

One situation where LilyPond /does/ require delimiters is \chordmode { c4:8 }

The broad question is: Require delimiters to clarify context (for users, 
LilyPond, and software importing LilyPond) -- more or less?


I've seen complaints in non-Lilypond forums that LilyPond pitch entry is not 
relative to key signature.  We could accommodate this by re-defining pitch 
names upon seeing 
  { \keyAffectingEntry \d\major  ... }
so that f means F-sharp and we have to type fn for F.  (This requires pushing a 
pitchname-table on a stack for every nested level of {} or <<>>)  

Digits-in-identifiers is an often-requested feature that seems it should be 
easy (if we are willing to require a space in \skip 4 and \tuplet 2/3).  The 
trouble is that I cannot use vn1 = {..} without either telling the lexer that 
"vn" will never by a note-name in any language, or requiring some structure to 
specify when music functions are done:  \afterGrace ces2 des8 vn1 = c2.

I used to use \cueWhile, but then switched to your \cueDuring with the extra 
parameter, and had a few mysterious errors when I forgot which one had the 
extra parameter.  David of course suggested I make a \cueDuring with an 
optional parameter.  Either way, the poor guy writing the .ly importer in 
Musescore has no hope to keep up.

The broad question for these three is: Syntax that changes depending on the 
definitions of the functions in the input -- good or bad?


My prediction is that LilyPond will keep its syntax that requires knowledge of 
the definition of functions to be parsed correctly, thus un-importable by other 
software,

.. and that LilyPond will keep its freedom from delimiters, with David pulling 
LilyPond further toward scanning the input independent of context.

Others certainly frame the broad questions differently, and probably see 
additional broad questions. I think we need to allow some time for compromise 
on these balances between philosophy and practicality.

Many of the specific items on the GLISS list concern names of things, which I 
think is independent of the broad questions, but will solve some real 
problems.  I was quite puzzled by a question on -user yesterday, until I 
realized he had confused the purposes of Staff.keySignature versus 
Staff.KeySignature.


_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to