ast-grep is worth checking out too: https://ast-grep.github.io/
Programming
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
Some very quick, superficial differences:
-
ast-grepuses tree-sitter for understanding languages -
ast-grepis written in Rust -
ast-grepuses YAML for config -
ast-grepmore normal--flags -
combydoesn't use tree-sitter and does it's own thing... not sure what to think of this approach -
combyis written in OCaml -
combyuses TOML for config -
combyuses-single-dash-flags -
both have online playgrounds for testing
I personally hate YAML, so it's comby for me! (For now.)
Also, here's what Comby says about its approach to matching: https://comby.dev/docs/faq
Underneath the hood, Comby uses no tree definition, but turns patterns into an executable routine (a language-aware parser) where the tree structure is implicit in this executable routine. In theory, the syntax matched by this routine could dump a serialized parse tree, but this isn’t implemented :-). With this design, Comby sacrifices this ability to recognize many predefined language constructs in order to support a more freeform pattern writing and matching process. This loses precision for deeply recognizing all of a program’s structures, and may fall short of your needs depending on your use case.
Fair enough. I hate YAML too, but I'm stuck with Python for now and Comby doesn't handle indentation too well (it's in their FAQ).
Oh, yeah makes sense. Thankfully, I'm refactoring Go!
I found ast-grep inconvenient to match several consecutive lines of python whereas comby handles this reasonably fine.