Tree-sitter is a parsing library that was just brought into neovim 0.5, and I think some other editors use it too. It’s intended to be used by any editor, so like LSP servers, they can all share a common tool for a given language.
It is really cool since it does fast incremental parsing, so as you type it can reparse just the new part of the tree, and it handles errors (such as a partially typed keyword, or whatever). This talk from the author is good Tree-sitter - a new parsing system for programming tools - Strange Loop
By having your editor be able to actually parse the code instead of just doing some complicated regexes, you get much better and faster syntax highlighting. But more than that it starts to enable refactoring tools that deal with the actual AST.
I started trying to write one for crystal, but it’s a pretty daunting project, and I know I’ll never be able to finish it myself. If anyone is interested, I’ve put what little I’ve got so far (just symbols) GitHub - will/tree-sitter-crystal and I think something like this would work well rubinus-commit-bit style, where anyone who gets a PR in gets commit.
Hopefully eventually it can get in a state where it gets added to the http://github.com/tree-sitter org since that seems to be like the package manager of sorts for the grammars.