BNF for CLAPTON

	(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)