Skip to content

Latest commit

 

History

History
85 lines (61 loc) · 3.38 KB

File metadata and controls

85 lines (61 loc) · 3.38 KB

COMPARAÇÃO ENTRE VIMSCRIPT E TREE-SITTER - RECURSOS GABC

COBERTURA TREE-SITTER (grammar.js)

✅ IMPLEMENTADO NO TREE-SITTER

  • 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 @[]

❌ LACUNAS IDENTIFICADAS NO TREE-SITTER

Comparando com o VimScript que tem 30+ padrões específicos:

1. Pitch Suffixes Específicos

  • VimScript: gabcPitchSuffix separado para sufixos [012] após [A-NP]
  • Tree-sitter: Incorporado na regra pitch geral

2. Oriscus Suffixes Específicos

  • VimScript: gabcOriscusSuffix específico /([oO])@<=[01]/
  • Tree-sitter: Incorporado na regra pitch como /[oO][01]?/

3. Modifier Granularidade

  • VimScript: Separação granular (Simple, Special, Episema, Ictus, etc.)
  • Tree-sitter: Uma regra modifier unificada

4. Bar Suffixes Específicos

  • VimScript: gabcBarMinorSuffix, gabcBarZeroSuffix separados
  • Tree-sitter: Incorporado nas regras bar com /;[1-8]?/, /,[0]?/, etc.

5. Spacing Granularidade

  • VimScript: Múltiplas regras específicas (Small, Half, Single, Double, Bracket, Factor, Zero)
  • Tree-sitter: Regra spacing unificada

6. Accidental Granularidade

  • VimScript: 4 regras separadas para diferentes tipos de acidentes
  • Tree-sitter: Uma regra accidental unificada

ANÁLISE DE IMPACTO

✅ FUNCIONALIDADE EQUIVALENTE

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

⚠️ GRANULARIDADE REDUZIDA

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

🎯 AVALIAÇÃO FINAL

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

RECOMENDAÇÕES

✅ MANTER ESTADO ATUAL

A cobertura tree-sitter é adequada porque:

  1. Parsing Completo: Todos os elementos GABC são reconhecidos
  2. AST Estruturado: Hierarquia apropriada é mantida
  3. Performance: Regras consolidadas são mais eficientes
  4. Extensibilidade: Framework permite refinamentos futuros

🔧 MELHORIAS OPCIONAIS (Se necessário)

Se granularidade adicional for necessária:

  1. Subdividir modifier rule em categorias específicas
  2. Separar pitch suffixes em regras independentes
  3. Expandir bar rules para sufixos específicos
  4. 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.