- Pitches: pitch rule com suporte a initio debilis, oriscus, inclinatum
- Accidentals: accidental rule com todos os tipos (x,#,y,##,Y,?)
- Modifiers: modifier rule com compostos (vvv,sss,vv,ss) e simples
- Bars: bar rule com todos os tipos de divisão e sufixos
- Spacing: spacing rule com //, /!, /0, /, ! e fatores
- Attributes: attribute rule com nomes e valores
- Macros: macro rule com nm, gm, em
- Line breaks: line_break rule com z/Z e sufixos
- Custos: custos rule com [a-np]+
- Neume fusion: fusion rule com @ e @[]
Comparando com o VimScript que tem 30+ padrões específicos:
- VimScript: gabcPitchSuffix separado para sufixos [012] após [A-NP]
- Tree-sitter: Incorporado na regra pitch geral
- VimScript: gabcOriscusSuffix específico /([oO])@<=[01]/
- Tree-sitter: Incorporado na regra pitch como /[oO][01]?/
- VimScript: Separação granular (Simple, Special, Episema, Ictus, etc.)
- Tree-sitter: Uma regra modifier unificada
- VimScript: gabcBarMinorSuffix, gabcBarZeroSuffix separados
- Tree-sitter: Incorporado nas regras bar com /;[1-8]?/, /,[0]?/, etc.
- VimScript: Múltiplas regras específicas (Small, Half, Single, Double, Bracket, Factor, Zero)
- Tree-sitter: Regra spacing unificada
- VimScript: 4 regras separadas para diferentes tipos de acidentes
- Tree-sitter: Uma regra accidental unificada
A maioria dos recursos VimScript estão funcionalmente cobertos no tree-sitter, mas com granularidade diferente:
- Parsing: Tree-sitter consegue parsear todos os elementos GABC
- AST: Nodes apropriados são gerados para todos os elementos
- Validação: Sintaxe correta é reconhecida adequadamente
O tree-sitter usa uma abordagem mais unificada vs. VimScript granular:
- VimScript: 30+ regras específicas para highlighting detalhado
- Tree-sitter: ~10 regras GABC consolidadas para parsing eficiente
CONCLUSÃO: Tree-sitter tem cobertura funcional completa para GABC, mas com diferentes prioridades de design:
- VimScript: Maximiza granularidade para highlighting detalhado
- Tree-sitter: Optimiza parsing eficiente com AST estruturado
A cobertura tree-sitter é adequada porque:
- Parsing Completo: Todos os elementos GABC são reconhecidos
- AST Estruturado: Hierarquia apropriada é mantida
- Performance: Regras consolidadas são mais eficientes
- Extensibilidade: Framework permite refinamentos futuros
Se granularidade adicional for necessária:
- Subdividir modifier rule em categorias específicas
- Separar pitch suffixes em regras independentes
- Expandir bar rules para sufixos específicos
- Refinar spacing com múltiplas regras específicas
Porém, isso não é urgente pois a funcionalidade atual está completa para os casos de uso do GABC.