(program) := BEGIN (statement-sequence) END; (statement-sequence) := (statement) | (statement)(statement-sequence) (statement) := (tuning-statement) | (note-statement) | (chord-statement) | (tune-statement) | (define-tuning-statement) | (wait-statement) (tuning-statement) := tuning (preset); (preset) := standard | drop_D | down_half_step | open_G | slack_key | open_D | G_modal | (tuning-name) (define-tuning-statement) := define (tuning-name) (user-defined-tuning); (tuning-name) := (letter) | (letter)(more-stuff) (more-stuff) := (letter) | (digit) | (letter)(more-stuff) | (digit)(more-stuff) (digit) := 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 (letter) := a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z | A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z | _ (user-defined-tuning) := (note)(note)(note)(note)(note)(note) (note) := A|A#|B|C|C#|D|D#|E|F|F#|G|G# (note-statement) := note (note); (chord-statement) := chord (key)(type); (key) := A|A#|B|C|C#|D|D#|E|F|F#|G|G# (type) := maj | m | m7 | maj7 | 9 | maj9 | dim | aug | sus2 | sus4 | 11 | 13 | 6 | 6/9 | 7+5 | 7+9 | 7-5 | 7-9 | 7sus4 | 9-5 | m6 | m9 (tune-statement) := tune (string-number) (note); (string-number) := 1 | 2 | 3 | 4 | 5 | 6 (wait-statement) := wait; (number) := (digit) | (number)(digit)