LilyPond beginnershandleiding: 1.2.2 Werken met invoerbestanden

### 1.2.2 Werken met invoerbestanden

LilyPond-invoerbestanden lijken op broncodebestanden van de meest gebruikte programmeertalen. Ze bevatten een versie-uitdrukking, zijn hoofdlettergevoelig, en witruimte wordt grotendeels genegeerd. Expressies worden gevormd met accolades `{ }`, en commentaren worden aangegeven met `%` of `%{ … %}` .

Als de vorige alinea totale onzin lijkt, geen probleem! We leggen hieronder uit wat al deze termen betekenen:

- Versie-uitdrukking: Elk LilyPond-bestand zou een versie-uitdrukking moeten hebben. Een versie-uitdrukking is een regel die aangeeft voor welke versie van LilyPond het bestand is geschreven, zoals in onderstaand voorbeeld:

  >     \version "2.22.2"

  De versie-uitdrukking wordt altijd helemaal bovenin het LilyPond-bestand gezet.

  Er zijn twee redenen waarom de versie-uitdrukking belangrijk is. Ten eerste maakt het een automatische update van het invoerbestand mogelijk voor wanneer de syntax van een nieuwere LilyPond-versie verandert. Ten tweede geeft het de LilyPond-versie aan die nodig is om het bestand te compileren.

  Als de versie-uitdrukking wordt weggelaten uit een invoerbestand, zal LilyPond een waarschuwing geven tijdens het compileren van het bestand.

- Hoofdlettergevoelig: het maakt uit of je een letter als kleine letter typt (bijv. `a, b, s, t`) of als hoofdletter (bijv. `A, B, S, T`). Noten zijn met een kleine letter: ‘`{ c d e }`’ is geldige invoer; ‘`{ C D E }`’ geeft een foutmelding.
- Witeruimteongevoelig: het maakt niet uit hoeveel spaties (of tabs of nieuwe regels) je invoegt. ‘`{ c d e }`’ betekent hetzelfde als ‘`{ c` ’ d e } en als:

  >     { c4                       d
  >                        e   }

  Het laatste voorbeeld leest natuurlijk erg lastig. Een goede vuistregel is om blokken code in te springen met twee spaties:

  >     {
  >       c4 d e
  >     }

  Echter, vele syntactische elementen moeten van elkaar gescheiden worden door witruimte. Anders gezegd, witruimte kan altijd worden ingevoegd, maar niet altijd worden weggehaald. Omdat ontbrekende witruimte voor vreemde foutmeldingen kan zorgen, is het verstandig altijd witruimte te gebruiken voor en na elk syntactisch element, bijvoorbeeld, voor en na elke accolade.

- Uitdrukkingen: om elk stuk LilyPond-invoer moeten { accolades } heen staan. Deze haakjes vertellen LilyPond dat de invoer een enkele muziekuitdrukking is, net als de haakjes `()` bij wiskunde. De accolades moeten altijd los staan, d.w.z. omgeven zijn door witruimte, of aan het begin of einde van een regel staan om ambiguïteiten te voorkomen.

  Een LilyPond-commando gevolgd door een enkele uitdrukking tussen accolades (zoals ‘`\relative c' { … }`’) telt ook als een enkele muziekuitdrukking.

- Commentaren: een commentaar is een opmerking voor de lezer van de muziekinvoer; het wordt genegeerd tijdens het verwerken, dus het heeft geen effect op de geprinte uitvoer. Er zijn twee soorten commentaar. Het procentteken `%` markeert het begin van een regelcommentaar; alles na een `%` op die regel wordt genegeerd. Een regelcommentaar wordt altijd boven de regel geplaatst waar hij bij hoort.

  >     a4 a a a
  >     % dit commentaar slaat op de B's
  >     b2 b

  Een blokcommentaar markeert een heel stuk van de muziekinvoer als commentaar. Alles wat tussen `%{` en `%}` staat, wordt genegeerd. Echter, blockcommentaren kunnen niet worden ge‘nest’. Dat betekent dat je een blokcommentaar niet binnen een ander blokcommentaar kunt zetten. Als je dat toch probeert, zal de eerste `%}` beide blokcommentaren sluiten. Het volgende fragment toont het gebruik van commentaren:

  >     % noten voor twinkle twinkle volgen
  >       c4 c g' g a a g2

  >     %{
  >       Deze regel, en de noten hieronder worden genegeerd,
  >       omdat ze in een blokcommentaar staan.

  >       f4 f e e d d c2
  >     %}

#### LilyPond – Beginnershandleiding v2.22.2 (stabiele tak).