<commit_before>score: details instruments | instruments

details: detail string details

detail: "author:" | "tempo:" | "timesignature:" | "title:" 

instruments: instrument instruments | instrument

instrument: "bass:" bassMusic | "cymbal:" cymbalMusic | "snare:" snareMusic | "tenor:" tenorMusic


// snare
snareMusic: snareMeasure "|" snareMusic |  snareMeasure

snareMeasure: snareBeat space* snareMeasure | snareBeat

snareBeat: snareNotes ':' sticking | snareNotes

snareNotes: snareNote snareNotes | snareNote

snareNote: snareModifers snareSurface | snareSurface

snareModifiers: snareModifier snareModifiers | snareModifier

snareModifier: dynamicModifier | [,-=]

snareSurface: [hHxXrRbBsSgG] | rest


// tenor
tenorMusic: tenorMeasure "|" tenorMusic | tenorMeasure

tenorMeasure: tenorBeat space* tenorMeasure | tenorBeat

tenorBeat: tenorNotes ':' sticking | tenorNotes

tenorSimultaneousNotes: tenorNote tenorSimultaneousNotes | tenorNote

tenorNotes: tenorNote tenorNotes | tenorNote

tenorNote: tenorModifers tenorSurface | tenorSurface

tenorModifiers: tenorModifier tenorModifiers | tenorModifier

tenorModifier: dynamicModifier | [,-=*]

tenorSurface: [aAbBcCdDeEuU] | rest


// bass
bassMusic: bassMeasure "|" bassMusic | bassMeasure

bassMeasure: bassBeat space* bassMeasure | bassBeat

bassBeat: bassNotes ':' sticking | bassNotes

bassSimultaneousNotes: bassNote bassSimultaneousNotes | bassNote
<commit_msg>Update grammar with tenor simultaneous notes<commit_after>score: details instruments | instruments

details: detail string details

detail: "author:" | "tempo:" | "timesignature:" | "title:" 

instruments: instrument instruments | instrument

instrument: "bass:" bassMusic | "cymbal:" cymbalMusic | "snare:" snareMusic | "tenor:" tenorMusic


// snare
snareMusic: snareMeasure "|" snareMusic |  snareMeasure

snareMeasure: snareBeat space* snareMeasure | snareBeat

snareBeat: snareNotes ':' sticking | snareNotes

snareNotes: snareNote snareNotes | snareNote

snareNote: snareModifers snareSurface | snareSurface

snareModifiers: snareModifier snareModifiers | snareModifier

snareModifier: dynamicModifier | [,-=]

snareSurface: [hHxXrRbBsSgG] | rest


// tenor
tenorMusic: tenorMeasure "|" tenorMusic | tenorMeasure

tenorMeasure: tenorBeat space* tenorMeasure | tenorBeat

tenorBeat: tenorNotes ':' sticking | tenorNotes

tenorSimultaneousNotes: tenorNote tenorSimultaneousNotes | tenorNote

tenorNotes: tenorNote tenorNotes | tenorNote

tenorNote: tenorModifers tenorSurface | tenorSurface

tenorModifiers: tenorModifier tenorModifiers | tenorModifier

tenorModifier: dynamicModifier | [,-=*]

tenorSurface: '(' tenorSurfaces ') | tenorSurface2
tenorSurface2: [aAbBcCdDeEfF]
tenorSurfaces: tenorSurface2 tenorSurfaces | tenorSurface2


// bass
bassMusic: bassMeasure "|" bassMusic | bassMeasure

bassMeasure: bassBeat space* bassMeasure | bassBeat

bassBeat: bassNotes ':' sticking | bassNotes

bassSimultaneousNotes: bassNote bassSimultaneousNotes | bassNote

{'fraction_non_alphanumeric': 0.08547579298831386, 'fraction_numerical': 0.001335559265442404, 'mean_word_length': 6.662404092071611, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5642089', 'n_tokens_mistral': 1032, 'n_tokens_neox': 984, 'n_words': 231}