[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < Overview of LilyPond architecture ] | [ Up : Programming work ] | [ > ] |
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.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < LilyPond programming languages ] | [ Up : LilyPond programming languages ] | [ > ] |
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.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ > ] |
10.2.2 Flex
The LilyPond lexer is implemented in Flex, an implementation of the Unix lex lexical analyser generator. Resources for Flex can be found here.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ > ] |
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.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ > ] |
10.2.4 GNU Make
GNU Make is used to control the compiling process and to build the documentation and the website. GNU Make documentation is available at the GNU website.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ > ] |
10.2.5 GUILE or Scheme
GUILE is the dialect of Scheme that is used as LilyPond’s extension language. Many extensions to LilyPond are written entirely in GUILE. The GUILE Reference Manual is available online.
Structure and Interpretation of Computer Programs, a popular textbook used to teach programming in Scheme is available in its entirety online.
An introduction to Guile/Scheme as used in LilyPond can be found in the Scheme tutorial.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ > ] |
10.2.6 MetaFont
MetaFont is used to create the music fonts used by LilyPond. A MetaFont tutorial is available at the METAFONT tutorial page.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ > ] |
10.2.7 PostScript
PostScript is used to generate graphical output. A brief PostScript tutorial is available online. The PostScript Language Reference is available online in PDF format.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ > ] |
10.2.8 Python
Python is used for XML2ly and is used for building the documentation and the website.
Python documentation is available at python.org.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ Programming without compiling > ] |
10.2.9 Scalable Vector Graphics (SVG)
Scalable Vector Graphics (SVG) is an XML-based markup language used to generate graphical output. A brief SVG tutorial is available online through W3 Schools. The World Wide Web Consortium’s SVG 1.2 Recommendation is available online in PDF format.
[ << Programming work ] | [Top][Contents] | [ Release work >> ] |
[ < ] | [ Up : LilyPond programming languages ] | [ Programming without compiling > ] |