With tree-sit.el merged into Emacs 29, have you considered using a tree-sitter grammar in ledger-mode? A little searching revealed https://github.com/cbarrete/tree-sitter-ledger.