yaparc 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
File without changes
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaparc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akimichi Tatsukawa
8
- autorequire: yaparc
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-08 00:00:00 +09:00
12
+ date: 2009-01-19 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -22,14 +22,18 @@ extensions: []
22
22
  extra_rdoc_files:
23
23
  - README
24
24
  files:
25
- - tests/test_parser.rb
26
- - tests/test_abc.rb
27
- - tests/test_calc.rb
28
- - tests/test_owl.rb
29
- - tests/test_sql.rb
30
- - tests/test_uri.rb
25
+ - test/test_sql.rb
26
+ - test/test_lambda.rb
27
+ - test/test_calc.rb
28
+ - test/test_uri.rb
29
+ - test/test_parser.rb
30
+ - test/test_owl.rb
31
+ - test/test_metric.rb
32
+ - test/test_prolog.rb
31
33
  - lib/yaparc.rb
32
- - tests/abc20bnf.txt
34
+ - test/n3.bnf
35
+ - test/test_abc.rb.bak
36
+ - test/n3-report.html
33
37
  - README
34
38
  has_rdoc: true
35
39
  homepage: http://rubyforge.org/projects/yaparc/
@@ -52,15 +56,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
56
  version:
53
57
  requirements: []
54
58
 
55
- rubyforge_project:
56
- rubygems_version: 1.0.1
59
+ rubyforge_project: yaparc
60
+ rubygems_version: 1.3.1
57
61
  signing_key:
58
62
  specification_version: 2
59
63
  summary: Yet Another Combinator Parser Library
60
64
  test_files:
61
- - tests/test_parser.rb
62
- - tests/test_abc.rb
63
- - tests/test_calc.rb
64
- - tests/test_owl.rb
65
- - tests/test_sql.rb
66
- - tests/test_uri.rb
65
+ - test/test_sql.rb
66
+ - test/test_lambda.rb
67
+ - test/test_calc.rb
68
+ - test/test_uri.rb
69
+ - test/test_parser.rb
70
+ - test/test_owl.rb
71
+ - test/test_metric.rb
72
+ - test/test_prolog.rb
@@ -1,264 +0,0 @@
1
- ; ABC notation 2.0 - BNF specification.
2
- ; This is a specification of the draft ABC 2.0 standard in BNF.
3
- ; This BNF specification is not finished yet - it needs to be elaborated in some places.
4
- ; It uses ABNF as defined in http://www.ietf.org/rfc/rfc2234.txt.
5
- ; This file written by Henrik Norbeck.
6
- ; --------------------------------------------------------------------------------
7
- abc-file ::= *(abc-tune / comment / xcommand / file-field / text-line / tex)
8
- file-field ::= field-area / field-book / field-composer / field-discography / field-file / field-group / field-history / field-length / field-meter / field-notes / field-origin / field-parts / field-tempo / field-rhythm / field-source / field-userdef-print / field-userdef-play / field-words / field-transcription / field-key / unused-field ; Default values for the whole file - all fields except number, title and voice
9
- text-line ::= [non-comment-char tex-text] eol ; Free text between tunes. This is a catch-all rule - check for fields first!
10
-
11
- ; --------------------------------------------------------------------------------
12
- abc-tune ::= abc-header abc-music eol
13
- abc-header ::= [field-number] title-fields *other-field field-key ; note that field-number is optional.
14
- field-number ::= %x58.3A *WSP 1*DIGIT header-eol ; X:
15
- title-fields ::= *(comment / xcommand / tex) 1*(field-title *(comment / xcommand / tex))
16
- field-title ::= %x54.3A *WSP tex-text header-eol ; T:
17
- other-field ::= field-area / field-book / field-composer / field-discography / field-file / field-group / field-history / field-length / field-meter / field-notes / field-origin / field-parts / field-tempo / field-rhythm / field-source / field-userdef-print / field-userdef-play / field-voice / field-words / field-transcription / field-macro / unused-field / comment / xcommand / tex
18
- field-area ::= %x41.3A *WSP tex-text header-eol ; A:
19
- field-book ::= %x42.3A *WSP tex-text header-eol ; B:
20
- field-composer ::= %x43.3A *WSP tex-text header-eol ; C:
21
- field-discography ::= %x44.3A *WSP tex-text header-eol ; D:
22
- field-file ::= %x46.3A *WSP tex-text header-eol ; F:
23
- field-group ::= %x47.3A *WSP tex-text header-eol ; G:
24
- field-history ::= %x48.3A *WSP 1*(tex-text header-eol) ; H: field contents may extend over many lines, which is deprecated (maybe not allowed any longer?)
25
- field-length ::= %x4C.3A *WSP note-length-strict header-eol ; L: default note length
26
- field-meter ::= %x4D.3A *WSP time-signature header-eol ; M:
27
- field-notes ::= %x4E.3A *WSP tex-text header-eol ; N:
28
- field-origin ::= %x4F.3A *WSP tex-text header-eol ; O:
29
- field-parts ::= %x50.3A *WSP parts-play-order header-eol ; P: in header defines in which order parts should be played
30
- field-tempo ::= %x51.3A *WSP tempo header-eol ; Q:
31
- field-rhythm ::= %x52.3A *WSP tex-text header-eol ; R:
32
- field-source ::= %x53.3A *WSP tex-text header-eol ; S:
33
- field-userdef-print ::= %x55.3A *WSP userdef header-eol ; U:
34
- field-userdef-play ::= %x75.3A *WSP userdef header-eol ; u:
35
- field-voice ::= %x56.3A *WSP voice header-eol ; V: options should be better defined
36
- field-words ::= %x57.3A *WSP tex-text header-eol ; W: unformatted words, printed after the tune
37
- field-transcription ::= %x5A.3A *WSP tex-text header-eol ; Z:
38
- field-macro ::= %x6D.3A *WSP 1*(WSP / VCHAR) header-eol ; m: BarFly-style macros - do be defined better
39
- field-key ::= %x4B.3A *WSP key header-eol ; K:
40
- unused-field ::= (%x45 / %x49 / %4A / %59 / %61-6c / %6e-%74 / %76 / %78-7A) %3A *(WSP / VCHAR) eol ; E: I: J: Y: a:-l: n:-t: v: x: y: z: ignore - but for backward and forward compatibility
41
-
42
- ; --------------------------------------------------------------------------------
43
- time-signature ::= %x43 / %x43.7C / "none" / meter-num / 1*DIGIT ; C, C|, none or numeric
44
- meter-num ::= (1*DIGIT *("+" 1*DIGIT) "/" 1*DIGIT) [1*SP meter-num]
45
- ; e.g. 2/4 , 6/8 , 2+2+3/16 , 11/8 , 2/4 3/4 , 2+2+3/8 2+2+3+2+2+2/8
46
- tempo ::= (note-length-strict "=" 1*DIGIT) / (%x43 [note-length] "=" 1*DIGIT) / 1*DIGIT ; 1*DIGIT is deprecated, kept for compatibility
47
- note-length-strict ::= 1*DIGIT "/" 1*DIGIT
48
- key ::= (key-def [1*WSP clef]) / clef / "HP" / "Hp"
49
- key-def ::= basenote ["#" / "b"] [mode] *(1*WSP global-accidental)
50
- mode ::= minor / major / lydian / ionian / mixolydian / dorian / aeolian / phrygian / locrian
51
- minor ::= "m" ["in" ["o" ["r"]]] ; m, min, mino, minor - all modes are case insensitive
52
- major ::= "maj" ["o" ["r"]]
53
- lydian ::= "lyd" ["i" ["a" ["n"]]] ; major with sharp 4th
54
- ionian ::= "ion" ["i" ["a" ["n"]]] ; =major
55
- mixolydian ::= "mix" ["o" ["l" ["y" ["d" ["i" ["a" ["n"]]]]]]] ; major with flat 7th
56
- dorian ::= "dor" ["i" ["a" ["n"]]] ; minor with sharp 6th
57
- aeolian ::= "aeo" ["l" ["i" ["a" ["n"]]]] ; =minor
58
- phrygian ::= "phr" ["y" ["g" ["i" ["a" ["n"]]]]] ; minor with flat 2nd
59
- locrian ::= "loc" ["r" ["i" ["a" ["n"]]]] ; minor with flat 2nd and 5th
60
- global-accidental ::= accidental basenote ; e.g. ^f =c _b
61
- parts-play-order ::= 1*( ALPHA / ( "(" parts-play-order ")" ) *DIGIT) / "." ; dots are ignored - for legibility only
62
-
63
- ; --------------------------------------------------------------------------------
64
- voice ::= 1*(ALPHA / DIGIT) *(1*WSP (clef / voice-name / voice-subname / voice-transpose / "merge" / "up" / "down")) ; maybe "stems=up" / "stems=down" / "stems=normal" instead?
65
- voice-name ::= ("name=" / "nm=") %x22 *non-quote %x22 ; \n in name = linefeed
66
- voice-subname ::= ("subname=" / "snm=") %x22 *non-quote %x22 ; \n in name = linefeed
67
- voice-transpose ::= "transpose=" ["-"] 1*DIGIT
68
-
69
- ; --------------------------------------------------------------------------------
70
- clef ::= ( ("clef=" (clef-note / clef-name)) / clef-name) clef-line ["+8" / "-8"] [1*WSP clef-middle]
71
- clef-note ::= "G" / "C" / "F" / "P"
72
- clef-name ::= "treble" / "alto" / "tenor" / "baritone" / "bass" / "mezzo" / "soprano" / "perc" / "none" ; Maybe also Doh1-4, Fa1-4
73
- clef-line ::= "1" / "2" / "3" / "4" / "5"
74
- cleff-middle ::= "middle=" basenote [octave]
75
-
76
- ; --------------------------------------------------------------------------------
77
- userdef ::= userdef-symbol *WSP "=" *WSP (long-gracing / chord-or-text)
78
- header-eol ::= *WSP (comment / eol) ; there may be comments at the end of header lines
79
-
80
- ; --------------------------------------------------------------------------------
81
- abc-music ::= *(abc-line / comment / xcommand / tune-field / tex)
82
- abc-line ::= barline / ([barline] 1*element *(barline 1*element) [barline]) abc-eol
83
- barline ::= ( *":" *"[" 1*"|" *"]" ( *":" / nth-repeat-num ) ) / invisible-barline / dashed-barline ; e.g. :| | |:: |2 :||:
84
- invisible-barline ::= "[|]" | "[]"
85
- dashed-barline ::= ":"
86
- element ::= stem / WSP / chord-or-text / gracing / grace-notes / broken-rhythm / tuplet / slur-begin / slur-end / rollback / multi-measure-rest / measure-repeat / nth-repeat / end-nth-repeat / inline-field / unused-char
87
-
88
- ; --------------------------------------------------------------------------------
89
- stem ::= note / ( "[" 2*note "]" ) ; stem
90
- note ::= pitch [note-length] [tie] ; note
91
- pitch ::= [accidental] basenote [octave]
92
- rest ::= (normal-rest / invisible-rest / inaudible-rest) [note-length]
93
- normal-rest ::= %x7A ; z = normal rest
94
- invisible-rest ::= %x78 ; x = invisible rest
95
- inaudible-rest ::= %x79 ; y = inaudible and invisible rest, for spacing
96
- accidental ::= "^" / "^^" / "_" / "__" / "="
97
- basenote ::= %x43 / %x44 / %x45 / %x46 / %x47 / %x41 / %x42 / %x63 / %x64 / %x65 / %x66 / %x67 / %x61 / %x62 ; CDEFGABcdefgab
98
- octave ::= 1*"'" / 1*","
99
- note-length ::= (*DIGIT ["/" *DIGIT]) / 1*"/"
100
- tie ::= "-" ; tie
101
-
102
- ; --------------------------------------------------------------------------------
103
- broken-rhythm ::= stem *b-elem (1*"<" / 1*">") *b-elem stem
104
- b-elem ::= WSP / chord-or-text / gracing / grace-notes / slur-begin / slur-end
105
- tuplet ::= "("1*DIGIT [":" [1*DIGIT] ":" [1*DIGIT]] 2*(*t-elem stem)
106
- t-elem ::= WSP / chord-or-text / gracing / grace-notes / broken-rhythm / slur-begin / slur-end
107
-
108
- ; --------------------------------------------------------------------------------
109
- gracing ::= "." / userdef-symbol / long-gracing ; gracings
110
- userdef-symbol ::= "~" / %x48-59 / %x68-77 ; user definable symbols ~ H-Y, h-w
111
- grace-notes ::= "{" acciaccatura 1*( grace-note-stem ) "}" ; grace notes can have length
112
- grace-note-stem ::= grace-note / ( "[" 2*grace-note "]" )
113
- grace-note ::= pitch [note-length] ; as note, but without tie
114
- acciaccatura ::= "/"
115
-
116
- ; --------------------------------------------------------------------------------
117
- chord-or-text ::= %x22 (chord / text-expression) *(chord-newline (chord / text-expression)) %x22 ; ".."
118
- chord ::= basenote [chord-accidental] [chord-type] ["/" basenote [chord-accidental]] *non-quote
119
- chord-accidental ::= "#" / "b" / "="
120
- chord-type ::= 1*( ALPHA / DIGIT / "+" / "-" ) ; e.g. m, 7, m7, +, mb5, sus, sus4, maj7, mmaj7, 7sus4, dim
121
- text-expression ::= [ "^" / "<" / ">" / "_" / "@" ] 1*non-quote ; above, left, right, below, anywhere
122
- non-quote ::= SP / %x21 / %x23-7E ; all characters except quote
123
- chord-newline ::= "\n" / ";"
124
-
125
- ; --------------------------------------------------------------------------------
126
- slur-begin ::= "("
127
- slur-end ::= ")"
128
- rollback ::= "&"
129
- measure-repeat ::= "/" ["/"] ; repeat whole measure
130
- multi-measure-rest ::= %5A *DIGIT ; e.g. Z4
131
- nth-repeat ::= "[" ( nth-repeat-num / nth-repeat-text )
132
- nth-repeat-num ::= 1*DIGIT *(("," / "-") 1*DIGIT)
133
- nth-repeat-text ::= %x22 *non-quote %x22
134
- end-nth-repeat ::= "]"
135
- unused-char ::= "#" / "$" / "*" / "+" / ";" / "?" / "@" / "`" ; ignore for backward and forward compatibility, but maybe warn about them
136
-
137
- ; --------------------------------------------------------------------------------
138
- inline-field ::= ifield-area / ifield-book / ifield-composer / ifield-discography / ifield-group / ifield-history / ifield-length / ifield-meter / ifield-notes / ifield-origin / ifield-part / ifield-tempo / ifield-rhythm / ifield-source / ifield-title / ifield-voice / ifield-words / ifield-lyrics / ifield-transcription / ifield-key
139
- ifield-area ::= %5B.%41.%3A tex-text-ifield %5D ; [A:..]
140
- ifield-book ::= %5B.%42.%3A *WSP tex-text-ifield %5D ; [B:..]
141
- ifield-composer ::= %5B.%43.%3A *WSP tex-text-ifield %5D ; [C:..]
142
- ifield-discography ::= %5B.%44.%3A *WSP tex-text-ifield %5D ; [D:..]
143
- ifield-group ::= %5B.%47.%3A *WSP tex-text-ifield %5D ; [G:..]
144
- ifield-history ::= %5B.%48.%3A *WSP tex-text-ifield %5D ; [H:..]
145
- ifield-length ::= %5B.4C.3A *WSP note-length-strict %5D ; e.g. [L:1/8]
146
- ifield-meter ::= %5B.4D.3A *WSP meter %5D ; e.g. [M:C|] [M: 2+3/8]
147
- ifield-notes ::= %5B.%4E.%3A *WSP tex-text-ifield %5D ; [N:..]
148
- ifield-origin ::= %5B.%4F.%3A *WSP tex-text-ifield %5D ; [O:..]
149
- ifield-part ::= %5B.%50.%3A *WSP (ALPHA / tex-text-ifield) %5D ; e.g. [P:A]
150
- ifield-tempo ::= %5B.%51.%3A *WSP tempo %5D ; e.g. [Q:1/4=120]
151
- ifield-rhythm ::= %5B.%52.%3A *WSP tex-text-ifield %5D ; e.g. [R:reel]
152
- ifield-source ::= %5B.%53.%3A *WSP tex-text-ifield %5D ; [S:..]
153
- ifield-title ::= %5B.%54.%3A *WSP tex-text-ifield %5D ; e.g. [T:second version]
154
- ifield-voice ::= %5B.%56.%3A *WSP voice %5D ; [V:..] options should be better defined
155
- ifield-words ::= %5B.%57.%3A *WSP tex-text-ifield %5D ; [W:..]
156
- ifield-lyrics ::= %5B.%77.%3A *WSP tex-text-ifield %5D ; [w:..]
157
- ifield-transcription ::= %5B.%5A.%3A *WSP tex-text-ifield %5D ; [Z:..]
158
- ifield-key ::= %5B.4B.3A *WSP key %5D ; e.g. [K:Ador] [K: Bphr ^d]
159
- unused-ifield ::= %5B (%x45 / %x49 / %4A / %59 / %61-6c / %6e-%74 / %76 / %78-7A) %3A *(WSP / VCHAR) %5D ; E: I: J: Y: a:-l: n:-t: v: x: y: z: ignore - but for backward and forward compatibility
160
- non-bracket-char ::= *(WSP / %21-%5C / %5E-7E) ; all except ]
161
-
162
- ; --------------------------------------------------------------------------------
163
- abc-eol ::= comment / ([line-continuation / hard-line-break] *WSP eol)
164
- line-continuation ::= "\"
165
- hard-line-break ::= "!" ; kept for compatibility with abc2win
166
-
167
- ; --------------------------------------------------------------------------------
168
- tune-field ::= field-area / field-book / field-composer / field-discography / field-group / field-history / field-length / field-meter / field-notes / field-origin / field-part / field-tempo / field-rhythm / field-source / field-title / field-voice / field-words / field-lyrics / field-transcription / field-key / unused-field
169
- field-part ::= %x50.3A *WSP (ALPHA / tex-text) header-eol ; P:
170
- field-lyrics ::= %x56.3A *WSP lyrics header-eol ; w: formatted lyrics printed under staff
171
-
172
- ; --------------------------------------------------------------------------------
173
- long-gracing ::= gracing-grace / gracing-vol / gracing-style / gracing-finger / gracing-phrase / gracing-exec / gracing-other
174
- gracing-grace ::= "!trill!" / "!mordent!" / "!lowermordent!" / "!pralltriller!" / "!uppermordent!" / "!turn!" / "!roll!" / "!turnx!" / "!invertedturn!" / "!invertedturnx!" / "!trill(!" / "!trill)!"
175
- gracing-vol ::= "!accent!" / "!emphasis!" / "!crescendo(!" / "!crescendo)!" / "!diminuendo(!" / "!diminuendo)!" / "!p!" / "!pp!" / "!ppp!" / "!pppp!" / "!mp!" / "!mf!" / "!fp!" / "!f!" / "!ff!" / "!fff!" / "!ffff!" / "!sfz!" / "!cresc!" / "!decresc!" / "!dimin!"
176
- gracing-style ::= "!+!" / "!open!" / "!snap!" / "!upbow!" / "!downbow!" / "!slide!" / "!arpeggio!"
177
- gracing-len ::= "!fermata!" / "!invertedfermata!" / "!tenuto!"
178
- gracing-finger ::= "!0!" / "!1!" / "!2!" / "!3!" / "!4!" / "!5!"
179
- gracing-phrase ::= "!shortphrase!" / "!mediumphrase!" / "!longphrase!"
180
- gracing-exec ::= "!segno!" / "!coda!" / "!D.S.!" / "!D.C.!" / "!fine!" / ("!repeatbar" *DIGIT "!")
181
- gracing-other ::= "!wedge!" / "!thumb!" / "!breath!" / ("!" 1*(SP / %x22-x7E) "!") ; any text between !! is allowed
182
-
183
- ; --------------------------------------------------------------------------------
184
- comment ::= "%" ([non-comment-char *(VCHAR / WSP)]) eol
185
- non-comment-char ::= %x20-24 / %x26-%x7E / HTAB ; all characters except %
186
- xcommand ::= "%%" xcom eol
187
- xcom ::= xcom-staff / xcom-measurenb / xcom-text / xcom-layout / xcom-margins / xcom-midi / xcom-other ; more need to be defined
188
- xcom-staff ::= xcom-staffbreak / xcom-multicol / xcom-staves / xcom-indent
189
- xcom-staffbreak ::= "staffbreak" 1*WSP xcom-number xcom-unit
190
- xcom-multicol ::= "multicol" 1*WSP ("start" / "new" / "end")
191
- xcom-staves ::= "staves" 1*WSP stave-voice *( bar-staves stave-voice)
192
- stave-voice ::= single-voice / bracketed-voice / braced-voice / paren-voice
193
- bracketed-voice ::= "[" *WSP (single-voice / braced-voice / paren-voice) 1*(bar-staves (single-voice / braced-voice / paren-voice)) *WSP "]" ; staves joined by bracket
194
- braced-voice ::= "{" *WSP (single-voice / paren-voice) 1*(bar-staves (single-voice / paren-voice)) *WSP "}" ; staves joined by brace
195
- paren-voice ::= "(" single-voice 1*( 1*WSP single-voice) ")" ; on same staff
196
- single-voice ::= 1*(ALPHA / DIGIT)
197
- bar-staves ::= (*WSP "|" *WSP) / 1*WSP ; | to not bar
198
- xcom-indent ::= "indent" 1*WSP xcom-number xcom-unit
199
- xcom-measurenb ::= "measurenb" / "measurebox" / "measurefirst" / ("setbarnb" 1*WSP 1*DIGIT)
200
- xcom-text ::= xcom-textline / xcom-textcenter / xcom-textblock
201
- xcom-textline ::= "text" 1*WSP tex-text
202
- xcom-textcenter ::= "center" 1*WSP tex-text
203
- xcom-textblock ::= "begintext" [textblock-param] eol *(["%%"] tex-text) "%%endtext"
204
- textblock-param ::= "obeylines" / ("fill" / "ragged") / ("align" / "justify") / "skip"
205
- xcom-layout ::= xcom-sep / xcom-vskip / xcom-newpage
206
- xcom-sep ::= "sep" [3(1*WSP xcom-number xcom-unit)] ; space-above, space-below, width
207
- xcom-vskip ::= "vskip" 1*WSP xcom-number xcom-unit
208
- xcom-newpage ::= "newpage" [1*WSP 1*DIGIT] ; optionally restart page numbering at n
209
- xcom-margins ::= ("botmargin" / "topmargin" / "leftmargin" / "rightmargin") 1*WSP xcom-number xcom-unit
210
- xcom-midi ::= "midi" 1*WSP (midi-channel / midi-program / midi-transpose)
211
- midi-channel ::= "channel" 1*WSP midi-channel-number
212
- midi-program ::= "program" 1*WSP [midi-channel-number 1*WSP] midi-program-number
213
- midi-channel-number ::= %x31-39 / (%x31 %x30-36) ; channels 1-16
214
- midi-program-number ::= %x31-39 / (%x31-39 %x30-39) / (%x31 %x30-31 %x30-39) / (%x31.32 %x30-38) ; programs 1-128
215
- midi-transpose ::= "transpose" 1*WSP ["-"] 1*DIGIT
216
- xcom-other ::= *(VCHAR / WSP)
217
- xcom-number ::= 1*DIGIT ["." 1*DIGIT]
218
- xcom-unit ::= ["cm" / "pt" / "in"]
219
-
220
- ; --------------------------------------------------------------------------------
221
- lyrics ::= *(lyrics-char / lyrics-syllable-break / lyrics-next-bar / lyrics-hold / lyrics-skip-note / lyrics-nbsp / lyrics-dash / tex-escape)
222
- lyrics-ifield ::= *(lyrics-char-ifield / lyrics-syllable-break / lyrics-next-bar / lyrics-hold / lyrics-skip-note / lyrics-nbsp / lyrics-dash / tex-escape)
223
- lyrics-syllable-break ::= "-" ; break between syllables in a word
224
- lyrics-next-bar ::= "|" ; advance to next bar
225
- lyrics-hold ::= "_" ; hold syllable for one more note
226
- lyrics-skip-note ::= "*" ; =blank syllable
227
- lyrics-nbsp ::= "~" ; non-breaking space = words on same note
228
- lyrics-dash ::= "\-" ; printed as a -
229
- lyrics-char ::= WSP / DIGIT / ALPHA / %x21-29 / %x2B-2C / %x2E-2F / %x3A-40 / %x5B / %x5D / %x5E / %x60 / %x7B-7D ; all characters without special meaning
230
- lyrics-char-ifield ::= WSP / DIGIT / ALPHA / %x21-29 / %x2B-2C / %x2E-2F / %x3A-40 / %x5B / %x5E / %x60 / %x7B-7D ; all characters without special meaning and except ]
231
-
232
- ; --------------------------------------------------------------------------------
233
- tex-text ::= *(WSP / %21-%5B / %5D-7E / tex-escape) ; text that may contain TeX escapes
234
- tex-text-ifield ::= *(WSP / %21-%5B / %5E-7E / tex-escape) ; as above, but except ]
235
- tex-escape ::= "\" 1*(VCHAR) ; to be defined better
236
-
237
- ; --------------------------------------------------------------------------------
238
- tex ::= "\" *(VCHAR / WSP) eol ; deprecated - kept only for backward compatibility with abc2mtex
239
- eol ::= CRLF / LF / CR ; only one version should occur in the whole file - win / *nix / mac line breaks
240
-
241
- ; --------------------------------------------------------------------------------
242
- ; Core rules in ABNF:
243
- ; ALPHA ::= %x41-5A / %x61-7A ; A-Z / a-z
244
- ; CR ::= %x0D ; carriage return
245
- ; CRLF ::= %x0D.0A ; CR+LF
246
- ; DIGIT ::= %x30-39 ; 0-9
247
- ; DQUOTE ::= %x22 ; "
248
- ; HTAB ::= %x09 ; tab
249
- ; LF ::= %x0A ; linefeed
250
- ; SP ::= %x20 ; space
251
- ; VCHAR ::= %x21-7e ; printing chars
252
- ; WSP ::= SP / HTAB ; whitespace
253
- ; %xDD means a hexadecimal code for a character
254
- ; %xCC-DD means any character in that range
255
- ; %xCC.DD means two characters
256
- ; / means or
257
- ; * means 0 or more occurences of
258
- ; 1* means 1 or more occurences of
259
- ; 2* means 2 or more occurences of
260
- ; [ ] means optional
261
- ; ( ) used for grouping
262
- ; " " is a literal string (note that it is case insensitive)
263
- ; ; starts a comment to end of line
264
- ; read more about ABNF at http://www.ietf.org/rfc/rfc2234.txt.