10.2 LilyPond programming languages

Programming in LilyPond is done in a variety of programming languages. Each
language is used for a specific purpose or purposes. This section describes
the languages used and provides links to reference manuals and tutorials for
the relevant language.

10.2.1 C++

The core functionality of LilyPond is implemented in C++.

C++ is so ubiquitous that it is difficult to identify either a reference
manual or a tutorial. Programmers unfamiliar with C++ will need to spend some
time to learn the language before attempting to modify the C++ code.

The C++ code calls Scheme/GUILE through the GUILE interface, which is
documented in the
GUILE Reference Manual.

10.2.3 GNU Bison

The LilyPond parser is implemented in Bison, a GNU parser generator. The
Bison homepage is found at gnu.org. The manual (which includes both a reference and tutorial) is
available in a
variety of formats.