# Autogenerated from a Treetop grammar. Edits may be lost. module Music module Transcription module Parsing module Note include Treetop::Runtime def root @root ||= :note end include Pitch include Articulation include Link include Duration def _nt_note start_index = index if node_cache[:note].has_key?(index) cached = node_cache[:note][index] if cached node_cache[:note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_polyphonic_note if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_monophonic_note if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else r3 = _nt_rest_note if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else @index = i0 r0 = nil end end end node_cache[:note][start_index] = r0 r0 end module RestNote0 def duration elements[0] end end def _nt_rest_note start_index = index if node_cache[:rest_note].has_key?(index) cached = node_cache[:rest_note][index] if cached node_cache[:rest_note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_duration s0 << r1 if s0.last r0 = instantiate_node(RestNoteNode,input, i0...index, s0) r0.extend(RestNote0) else @index = i0 r0 = nil end node_cache[:rest_note][start_index] = r0 r0 end module MonophonicNote0 def duration elements[0] end def art elements[1] end def pl elements[2] end def acc elements[3] end end def _nt_monophonic_note start_index = index if node_cache[:monophonic_note].has_key?(index) cached = node_cache[:monophonic_note][index] if cached node_cache[:monophonic_note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_duration s0 << r1 if r1 r3 = _nt_articulation if r3 r2 = r3 else r2 = instantiate_node(SyntaxNode,input, index...index) end s0 << r2 if r2 r4 = _nt_pitch_link s0 << r4 if r4 r6 = _nt_accent if r6 r5 = r6 else r5 = instantiate_node(SyntaxNode,input, index...index) end s0 << r5 end end end if s0.last r0 = instantiate_node(MonophonicNoteNode,input, i0...index, s0) r0.extend(MonophonicNote0) else @index = i0 r0 = nil end node_cache[:monophonic_note][start_index] = r0 r0 end module PolyphonicNote0 def pl elements[1] end end module PolyphonicNote1 def duration elements[0] end def art elements[1] end def pl elements[2] end def more_pitches elements[3] end def acc elements[4] end end def _nt_polyphonic_note start_index = index if node_cache[:polyphonic_note].has_key?(index) cached = node_cache[:polyphonic_note][index] if cached node_cache[:polyphonic_note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_duration s0 << r1 if r1 r3 = _nt_articulation if r3 r2 = r3 else r2 = instantiate_node(SyntaxNode,input, index...index) end s0 << r2 if r2 r4 = _nt_pitch_link s0 << r4 if r4 s5, i5 = [], index loop do i6, s6 = index, [] if (match_len = has_terminal?(",", false, index)) r7 = true @index += match_len else terminal_parse_failure(",") r7 = nil end s6 << r7 if r7 r8 = _nt_pitch_link s6 << r8 end if s6.last r6 = instantiate_node(SyntaxNode,input, i6...index, s6) r6.extend(PolyphonicNote0) else @index = i6 r6 = nil end if r6 s5 << r6 else break end end if s5.empty? @index = i5 r5 = nil else r5 = instantiate_node(SyntaxNode,input, i5...index, s5) end s0 << r5 if r5 r10 = _nt_accent if r10 r9 = r10 else r9 = instantiate_node(SyntaxNode,input, index...index) end s0 << r9 end end end end if s0.last r0 = instantiate_node(PolyphonicNoteNode,input, i0...index, s0) r0.extend(PolyphonicNote1) else @index = i0 r0 = nil end node_cache[:polyphonic_note][start_index] = r0 r0 end module PitchLink0 def pitch elements[0] end def the_link elements[1] end end def _nt_pitch_link start_index = index if node_cache[:pitch_link].has_key?(index) cached = node_cache[:pitch_link][index] if cached node_cache[:pitch_link][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_pitch s0 << r1 if r1 r3 = _nt_link if r3 r2 = r3 else r2 = instantiate_node(SyntaxNode,input, index...index) end s0 << r2 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(PitchLink0) else @index = i0 r0 = nil end node_cache[:pitch_link][start_index] = r0 r0 end def _nt_accent start_index = index if node_cache[:accent].has_key?(index) cached = node_cache[:accent][index] if cached node_cache[:accent][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end if (match_len = has_terminal?("!", false, index)) r0 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure("!") r0 = nil end node_cache[:accent][start_index] = r0 r0 end end class NoteParser < Treetop::Runtime::CompiledParser include Note end end end end