this post was submitted on 12 Aug 2025
21 points (92.0% liked)

Programming

22442 readers
299 users here now

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



founded 2 years ago
MODERATORS
 

I just used this to update 600 lines, across 33 files! It worked great!

top 5 comments
sorted by: hot top controversial new old
[–] backlever@programming.dev 4 points 2 weeks ago (2 children)
[–] paequ2@lemmy.today 1 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

Some very quick, superficial differences:

  • ast-grep uses tree-sitter for understanding languages

  • ast-grep is written in Rust

  • ast-grep uses YAML for config

  • ast-grep more normal --flags

  • comby doesn't use tree-sitter and does it's own thing... not sure what to think of this approach

  • comby is written in OCaml

  • comby uses TOML for config

  • comby uses -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.

[–] backlever@programming.dev 1 points 2 weeks ago (1 children)

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).

[–] paequ2@lemmy.today 1 points 2 weeks ago

Oh, yeah makes sense. Thankfully, I'm refactoring Go!

[–] unexpectedprism@programming.dev 1 points 2 weeks ago

I found ast-grep inconvenient to match several consecutive lines of python whereas comby handles this reasonably fine.