Formato de entrada

Como se discutió antes, el formato de entrada ideal para el grabado de música es el contenido: la música en sí misma. Esto plantea un problema formidable: ¿cómo definimos lo que la música realmente es? Nuestra forma de definir este problema es, invertirlo. En lugar de definir lo que es la música, nuestro programa sirve de definición: escribimos un programa capaz de producir música impresa y podemos ajustar el formato tanto como sea posible. Cuando el formato no se puede reducir más, nos quedamos con el contenido por sí mismo.

La sintaxis es también la interfase de usuario para LilyPond, por lo tanto es fácil de escribir, por ejemplo:

  c'4 d'8
Son una negra de Do 1 y una corchea de Re 1, como en este ejemplo:

En una escala microscópica, tal sintaxis es fácil de usar. En una escala mayor, la sintaxis también requiere de estructura. ¿De qué otra manera podemos escribir complejas piezas como sinfonías u óperas? La estructura se forma por el concepto de expresiones musicales: al combinar pequeños fragmentos en segmentos de mayor tamaño, se puede expresar música de mayor complejidad. Por ejemplo,
c4

Combine este simultáneamente con otras dos notas al encerrarlo en << y >>.
  <<c4 d4 e4>>
Esta expresión se pone en secuencia al encerrarla en corchetes, por ejemplo:
   { <<c4 d4 e4>> f4  }
Lo anterior es otra expresión y por lo tanto se puede volver a combinar con otra expresión simultáneamente (en este caso, una blanca).
<< { <<c4 d4 e4>> f4 } g2 >> 

Estructuras recursivas como ésta, pueden especificarse de forma ordenada en una gramática libre de contexto. El código de análisis se genera a partir de esta gramática. En otras palabras, la sintaxis de LilyPond es clara y está nítidamente definida sin ambiguedades.

Las interfases de usuario y la sintaxis son con lo que la gente tiene que tratar la mayor parte del tiempo. Son una cuestión de gusto, y también sujetas a mucha discusión. Aun cuando estas discusiones sobre el gusto tienen su mérito, no son muy productivas. En el marco más grande, la importancia de la sintaxis de entrada es pequeña: inventar una sintaxis nítida es sencillo, escribir un código decente para formatear es mucho más complicado. Esto se puede ilustrar por la cantidad de líneas para los componentes respectivos del software: el análisis y representación de la sintaxis representa menos de 10% del código.
Análisis + RepresentaciónTotal
6000 líneas de código C++ 61500 líneas de código C++

Siguiente: para acabar, la conclusión.