gram_grep
oak
gram_grep | oak | |
---|---|---|
4 | 2 | |
11 | 6 | |
- | - | |
7.1 | 7.9 | |
13 days ago | 20 days ago | |
C++ | Go | |
Boost Software License 1.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gram_grep
-
AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
There is also gram_grep[0]"Search text using a grammar, lexer, or straight regex. Chain searches for greater refinement."
See also parsertl-playground[1] for online edit/test grammars.
[0]https://github.com/BenHanson/gram_grep
-
Show HN: Yacc/Lex editor/tester online
I'm building an online yacc/lex (LALR(1)) grammar editor/tester to help develop/debug/document grammars, the main repository is here https://github.com/mingodad/parsertl-playground and the online playground with several non trivial examples is here https://mingodad.github.io/parsertl-playground/playground/ .
Select a grammar/example from "Examples" select box and then click "Parse" to see a parser tree for the source in "Input source" editor.
It's based on https://github.com/BenHanson/gram_grep and https://github.com/BenHanson/lexertl14 .
Any feedback is welcome !
The grammars available so far (with varying state of correctness):
- Ada parser
- Question about lexer and parser generators in Rust
-
MSVC Backend Updates in Visual Studio 2019 version 16.10 Preview 2 | C++ Team Blog
Thanks for the tip, but I fear storing the result on the stack will be too much to ask for for big lexers (see https://github.com/BenHanson/gram_grep/blob/c64f8829661f11b38a55b42b37f5051c5eabfaa6/main.cpp#L2301 for example).
oak
-
AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
I'll post my own crappy one called oak which uses templates to render the result of tree-sitter queries.
https://github.com/go-go-golems/oak
I initially hope the queries would be more powerful, but they are really not. You can write queries and a resulting template in a yaml file. The program will scan a list of repositories for all these YAML files, and expose them as command line verbs.
Here is one to find go definitions:
https://github.com/go-go-golems/oak/blob/main/cmd/oak/querie...
This can then be run as:
oak go definitions /home/manuel/code/wesen/corporate-headquarters/geppetto/pkg/cmds/cmd.go
-
Build your own custom AI CLI tools
An earth-shattering consequence of this heavenly design is that you can add repositories for various GO GO GADGETS such as sqleton, escuse-me, geppetto or oak to your projects' codebases, point to them in your config file, and BAM, you now have a rich set of CLI tools that is automatically shared across your team and kept in source control right along the rest of your code.
What are some alternatives?
frozen - a header-only, constexpr alternative to gperf for C++14 users
geppetto - golang GPT3 tooling
tracy - Frame profiler
glazed - a library to make it easy to output structured data in your command line tools. add the icing on top of your data
gramatika - A minimal toolkit for writing parsers with Rust
parka - Convert your CLI apps to APIs
parsertl14 - C++14 version of parsertl
sqleton - ☠️ sqleton ☠️ is a CLI tool to execute SQL commands
chumsky - Write expressive, high-performance parsers with ease.
pyllms - Minimal Python library to connect to LLMs (OpenAI, Anthropic, AI21, Cohere, Aleph Alpha, HuggingfaceHub, Google PaLM2, with a built-in model performance benchmark.
semgrep - Lightweight static analysis for many languages. Find bug variants with patterns that look like source code.
escuse-me - GO GO GOLEM ELASTIC SEARCH GO GO GADGET - ESCUSE ME???