misc: readme update
This commit is contained in:
parent
5efd9cd3be
commit
2dd4a7d4b4
1 changed files with 80 additions and 0 deletions
80
README.md
80
README.md
|
|
@ -3,4 +3,84 @@
|
|||
|
||||
Managed Grammars and Highlight Queries for use with [Tree-Sitter Zig Bindings](https://github.com/tree-sitter/zig-tree-sitter)
|
||||
|
||||
## How to use
|
||||
|
||||
### Grab Dependencies
|
||||
```sh
|
||||
zig fetch --save git+https://github.com/tree-sitter/zig-tree-sitter.git
|
||||
|
||||
# official source
|
||||
zig fetch --save git+https://git.gae.moe/grace/eazy-zig-tree-sitter.git
|
||||
# mirrors
|
||||
zig fetch --save git+https://github.com/gyoder/eazy-zig-tree-sitter.git
|
||||
zig fetch --save git+https://tangled.org/grace.pink/eazy-zig-tree-sitter.git
|
||||
```
|
||||
|
||||
### `build.zig`
|
||||
```zig
|
||||
const std = @import("std");
|
||||
|
||||
pub fn build(b: *std.Build) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
|
||||
const ezts = b.dependency("eazy_zig_tree_sitter", .{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.use_all_langs = false
|
||||
.use_langs = &.{"c", "js", "ts", "py", "rs"},
|
||||
.third_party = true, // optional, for community grammars
|
||||
});
|
||||
|
||||
const exe = b.addExecutable(.{
|
||||
.name = "my_project",
|
||||
.root_module = b.createModule(.{
|
||||
.root_source_file = b.path("src/main.zig"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.imports = &.{
|
||||
.{ .name = "eazy_zig_tree_sitter", .module = ezts.module("eazy_zig_tree_sitter") },
|
||||
.{ .name = "tree-sitter", .module = ezts.module("tree-sitter") },
|
||||
},
|
||||
}),
|
||||
});
|
||||
b.installArtifact(exe);
|
||||
}
|
||||
```
|
||||
|
||||
### `main.zig`
|
||||
```zig
|
||||
const std = @import("std");
|
||||
const ts = @import("tree-sitter");
|
||||
const ezts = @import("eazy_zig_tree_sitter");
|
||||
|
||||
pub fn main() !void {
|
||||
const source =
|
||||
\\fn fib(n: u32) u32 {
|
||||
\\ if n < 2 { return n; }
|
||||
\\ return fib(n - 1) + fib(n - 2);
|
||||
\\}
|
||||
;
|
||||
|
||||
const lang = (ezts.getLang("rs") orelse return error.NoLang).?;
|
||||
defer lang.destroy();
|
||||
|
||||
var parser = ts.Parser.create();
|
||||
defer parser.destroy();
|
||||
try parser.setLanguage(lang);
|
||||
|
||||
const tree = (parser.parseString(source, null) orelse return error.ParseFailed);
|
||||
defer tree.destroy();
|
||||
|
||||
std.debug.print("tree: {s}\n", .{tree.rootNode().string()});
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## LLM Notice
|
||||
|
||||
An LLM was used to aggregate dependencies. It was not used in any of the (quite
|
||||
minimal) logic of this repo. That was all done by hand by me without LLM
|
||||
influence.
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue