AbcFile | ::= | ( AbcText | AbcTune )* <EOF> |
AbcText | ::= | ( TextLine )+ |
TextLine | ::= | <TEXTLINE> Eol |
Eol | ::= | <EOL> |
| | <EOL2> | |
| | <HEOL> | |
AbcTune | ::= | AbcHeader AbcMusic |
AbcHeader | ::= | FieldNumber ( FieldTitle )+ ( OtherFields )* FieldKey |
FieldNumber | ::= | <INDEX> Digits Eol |
Digits | ::= | ( <DIGITS> | <HDIGITS> ) |
FieldTitle | ::= | <TITLE> TitleText Eol |
TitleText | ::= | <RESTOFLINE> |
OtherFields | ::= | StructuredFields |
| | FreeTextFields | |
StructuredFields | ::= | FieldDefaultLength |
| | FieldMeter | |
| | FieldTempo | |
| | FieldParts | |
FreeTextFields | ::= | ( ( <AREA> ) | ( <BOOK> ) | ( <COMPOSER> ) | ( <DISC> ) | ( <ELEMSKIP> ) | ( <GROUP> ) | ( <HISTORY> ) | ( <INFO> ) | ( <NOTES> ) | ( <ORIGIN> ) | ( <RHYTHM> ) | ( <SOURCE> ) | ( <TRANSNOTES> ) ) Text Eol |
Text | ::= | <RESTOFLINE> |
FieldDefaultLength | ::= | <LENGTH> NoteLengthStrict Eol |
NoteLengthStrict | ::= | Digits <SLASH> Digits |
FieldMeter | ::= | <METER> Meter Eol |
Meter | ::= | <RESTOFLINE> |
FieldKey | ::= | <KEY> Key Eol |
Key | ::= | <RESTOFKEY> |
FieldTempo | ::= | <TEMPO> Tempo Eol |
Tempo | ::= | <RESTOFLINE> |
FieldParts | ::= | <PARTS> Parts Eol |
Parts | ::= | <RESTOFLINE> |
AbcMusic | ::= | AbcLine ( LineEnder AbcLine )* EndOfTune |
AbcLine | ::= | ( Element )+ |
EndOfTune | ::= | <ENDOFTUNE> |
| | <EOF> | |
| | Eol <EOF> | |
Element | ::= | ( NoteElement | Tuplet | BarLine | NthRepeat | BeginSlur | EndSlur | Space | GuitarChord ) |
LineEnder | ::= | Eol |
Tuplet | ::= | ( TupletSpec ( TupletContents )+ ) |
TupletSpec | ::= | <OPAREN> Digits |
TupletContents | ::= | NoteElement |
BeginSlur | ::= | <OPAREN> |
EndSlur | ::= | <CPAREN> |
NoteElement | ::= | ( NoteStem ( BrokenRhythm )? ) |
NoteStem | ::= | ( GraceNotes )? ( Gracings )* ( Note | MultiNote ) |
BrokenRhythm | ::= | ( <GT> )+ |
| | ( <LT> )+ | |
MultiNote | ::= | <OBRACK> ( Note )+ <CBRACK> |
Note | ::= | NoteOrRest ( NoteLength )? ( Tie )? |
Tie | ::= | <MINUS> |
Gracings | ::= | <GRACING> |
GraceNotes | ::= | <OBRACE> ( Pitch )* <CBRACE> |
GuitarChord | ::= | <QUOTEDSTRING> |
NoteOrRest | ::= | ( Pitch | Rest ) |
Pitch | ::= | ( ( Accidental )? BaseNote ( Octave )? ) |
Accidental | ::= | <CARET2> |
| | <CARET> | |
| | <UNDER> | |
| | <UNDER2> | |
| | <EQUALS> | |
Octave | ::= | ( HiOctave )+ |
| | ( LoOctave )+ | |
HiOctave | ::= | <APOS> |
LoOctave | ::= | <COMMA> |
NoteLength | ::= | ( Digits | ( Digits )? <SLASH2> ( Digits )? ) |
BaseNote | ::= | ( <HINOTE> | <LONOTE> ) |
Rest | ::= | <RESTNOTE> |
BarLine | ::= | <BARLINE> |
NthRepeat | ::= | <NTHREPEAT> |
Space | ::= | <WHITESPACE> |