Suivant : Exemples d’application, Précédent : Gravure des symboles musicaux, Haut : Contexte
Idéalement, le format d'entrée pour n'importe quel système de formatage est une description abstraite du contenu. Dans ce cas-ci, ce serait la musique elle-même. Cela pose un formidable problème : comment pouvons-nous définir ce qu'est réellement la musique ? Plutôt que d'essayer de trouver une réponse, nous avons renversé la question. Nous écrivons un logiciel capable de produire de la musique écrite, et adaptons le format pour atteindre la plus grande concision possible. Quand le format ne peut plus être simplifé, il nous reste par définition le contenu lui-même. Notre logiciel sert de définition formelle d'un document de musique.
Pour LilyPond, la syntaxe est également l'interface utilisateur ; par conséquent il est facile de saisir
{ c'4 d'8 }
c'est-à-dire un do central noire et, juste au-dessus, un ré croche
Sur une échelle microscopique, une telle syntaxe est facile à utiliser. À plus grande échelle, la syntaxe a besoin aussi de structure. Comment serait-il possible autrement de rentrer des pièces complexes comme des symphonies ou des opéras ? La structure est formée par le concept d'expression musicale : en combinant de petits fragments de musique pour en former de plus grands, on peut exprimer de la musique plus complexe. Par exemple
f4
Des accord peuvent être construits avec <<
et >>
autour
des notes.
<<c4 d4 e4>>
On met cette expression dans une séquence en l'encadrant par
des accolades { ... }
{ f4 <<c4 d4 e4>> }
Ceci est également une expression, et peut donc encore une fois
être combiné avec d'autres expressions simultanées (une blanche)
en utilisant <<, \\
, et >>
<< g2 \\ { f4 <<c4 d4 e4>> } >>
De telles structures récursives peuvent être spécifiées formellement et de manière ordonnée dans une grammaire indépendante de tout contexte. Le code d'analyse est aussi généré à partir de cette grammaire. Autrement dit, la syntaxe de LilyPond est définie clairement et sans ambiguité.
L'interface utilisateur et la syntaxe sont ce que les gens voient et manipulent le plus. Elles sont en partie une affaire de goût, et aussi sujettes à beaucoup de discussions. Même si ces discussions sur les goûts ont leur mérite, elles ne sont pas très productives. D'un point de vue plus large sur LilyPond, l'importance de la syntaxe est minime : il est facile d'inventer une syntaxe concise, alors qu'écrire un code de formatage décent est beaucoup plus difficile. Ceci est également illustré par le nombre de lignes de codes pour les composants respectifs : l'analyse et la représentation constituent moins de 10% du code source.