lilypond-1.3.24
[lilypond.git] / Documentation / lilyinput-pre-0.1.pod
blob1e04b19df074907a489d76a4594fb37fab6cbdb4
1 =head1 NAME
3 LilyInput -  LilyPond input format
5 =head1 DESCRIPTION
7 This page globally documents the the LilyPond input format, mudela.
8 To get a better impression, please study some examples.
10 =head2 Overview
12 General format of a construct:
14         BLOCKNAME {  <info to go with this block>   }
16 Some types allow declarations:
18         IDENTIFIER = BLOCKNAME {
19                 <info to go with this block>
20         }
22         ..
24         BLOCKNAME {
25                 IDENTIFIER
26                 ...
27         }
30 In musicmode, eg,
32         ''!c8.-"text"_v
34 and in lyricmode, eg,
36         Twin- kle, twin- kle lit- tle star,2
38 a lot of characters parse differently
39 than in "command" mode, eg,
41         identifier = score { .. }
43 So you have to signal this to the tokenizer. This is done with
44 '$'. '$' is a delimiter, which used by the tokenizer only. The same
45 goes for lyrics, it has a '@' delimiter.
47 =item *
48 musicmode: The brace still is used to group grammatical groups.
50 =item *
51 musicmode: "word" are preceded by a '\' (backslash)
53 This means you can write some stuff in a zillion ways:
55 =item 1.
56         $\var = \blockname { ... } $
58 =item 2.
59         var = blockname { $ ... $ } 
61 =item 3.
62         var = $ $ $\blockname {  ... $ } 
64 =head2 Comments
66 Not really crystallized; you can use '#' or '%' as line comment
68 =head2 other
70 LilyPond first reads 'symbol.ini', which contains declarations crucial
71 to proper operation of LilyPond (symbol tables, note names).
73 This language looks a lot like Rayce's (Rayce is a raytracer that I've
74 written as a hobby project. I used as a practice program for writing
75 (among others) C++ and Yacc. It also gave me RSI :-( ) which in turn
76 owes a lot to the POVRay raytracer. Now, I know, musictypesetting and
77 Raytracing do not necessarily require the same input format, but I was
78 just to lazy to make up a new and/or better input format. Suggestions
79 appreciated.
80 =head1 NAME
82 LilyInput -  LilyPond input format
84 =head1 DESCRIPTION
86 This page globally documents the the LilyPond input format, mudela.
87 To get a better impression, please study some examples.
89 =head2 Overview
91 General format of a construct:
93         BLOCKNAME {  <info to go with this block>   }
95 Some types allow declarations:
97         IDENTIFIER = BLOCKNAME {
98                 <info to go with this block>
99         }
101         ..
103         BLOCKNAME {
104                 IDENTIFIER
105                 ...
106         }
109 In musicmode, eg,
111         ''!c8.-"text"_v
113 and in lyricmode, eg,
115         Twin- kle, twin- kle lit- tle star,2
117 a lot of characters parse differently
118 than in "command" mode, eg,
120         identifier = score { .. }
122 So you have to signal this to the tokenizer. This is done with
123 '$'. '$' is a delimiter, which used by the tokenizer only. The same
124 goes for lyrics, it has a '@' delimiter.
126 =item *
127 musicmode: The brace still is used to group grammatical groups.
129 =item *
130 musicmode: "word" are preceded by a '\' (backslash)
132 This means you can write some stuff in a zillion ways:
134 =item 1.
135         $\var = \blockname { ... } $
137 =item 2.
138         var = blockname { $ ... $ } 
140 =item 3.
141         var = $ $ $\blockname {  ... $ } 
143 =head2 Comments
145 Not really crystallized; you can use '#' or '%' as line comment
147 =head2 other
149 LilyPond first reads 'symbol.ini', which contains declarations crucial
150 to proper operation of LilyPond (symbol tables, note names).