Rule MidiProgram() {
		return Sequence(String("program"), OneOrMore(WSP()),
				Optional(Sequence(MidiChannelNumber(), OneOrMore(WSP()))),
				MidiProgramNumber())
			.label(MidiProgram);
	}
Rule MidiProgram ( ) { return Sequence ( String ( "program" ) , OneOrMore ( WSP ( ) ) , Optional ( Sequence ( MidiChannelNumber ( ) , OneOrMore ( WSP ( ) ) ) ) , MidiProgramNumber ( ) ) . label ( MidiProgram ) ; }
midi-program ::= "program" 1*WSP [midi-channel-number 1*WSP] midi-program-number