[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Tree-sitter introduction documentation
From: |
Philip Kaludercic |
Subject: |
Re: Tree-sitter introduction documentation |
Date: |
Thu, 29 Dec 2022 17:12:35 +0000 |
Gregory Heytings <gregory@heytings.org> writes:
>>> That's not possible, no, at least not without a lot of
>>> complications that do not seem worth the price, compared to
>>> installing Node.js. And note that even if that were feasible, it
>>> would only solve the first half of the problem: to transform a
>>> grammar.js file into its corresponding parser.c file, you also need
>>> the tree-sitter command line program.
>>
>> Not necessarily, that could also be ported to JavaScript.
>>
>
> I'm puzzled. What would be the benefit of doing that? Installing
> Node.js and tree-sitter is easy.
Not always, I always have issues with Node.js on Debian Stable.
Especially when external dependencies are added to the mix.
The advantage would be a simpler toolchain that would require less
effort for the user to get running, instead of dealing with version
mismatches and dependency resolution.
>>
>> That being said, I don't imagine it to be an easy process.
>>
>
> Indeed. The generator is about 13500 lines of non-trivial Rust code.
I was under the impression that the main part of generating C code was
bundled in here:
https://github.com/tree-sitter/tree-sitter/blob/master/cli/src/generate/render.rs
But I see that it appears to include some other modules, which is
probably where a lot of the logic happens :/
>>> Indeed, grammar authors are not limited to the standard Node.js
>>> API, they can import other libraries.
>>
>> How common is this in practice? Is it encouraged?
>
> I don't know. I'd guess it is not frequent, but neither encouraged
> nor discouraged.
This would be a nice thing to clarify. I have also found out that there
is a Javascript interpreter written in Rust that could be used to remove
the Node.js dependency: https://github.com/boa-dev/boa. It would be
interesting to suggest this upstream and see if something like this
could be used at some point.
- Re: Tree-sitter introduction documentation, (continued)
- Re: Tree-sitter introduction documentation, Stefan Monnier, 2022/12/27
- Re: Tree-sitter introduction documentation, Yuan Fu, 2022/12/27
- Re: Tree-sitter introduction documentation, Gregory Heytings, 2022/12/28
- Re: Tree-sitter introduction documentation, Lynn Winebarger, 2022/12/28
- Re: Tree-sitter introduction documentation, Danny Freeman, 2022/12/28
- Re: Tree-sitter introduction documentation, Philip Kaludercic, 2022/12/29
- Re: Tree-sitter introduction documentation, Gregory Heytings, 2022/12/29
- Re: Tree-sitter introduction documentation, Lynn Winebarger, 2022/12/29
- Re: Tree-sitter introduction documentation, Philip Kaludercic, 2022/12/29
- Re: Tree-sitter introduction documentation, Gregory Heytings, 2022/12/29
- Re: Tree-sitter introduction documentation,
Philip Kaludercic <=
- Re: Tree-sitter introduction documentation, Gregory Heytings, 2022/12/29
- Re: Tree-sitter introduction documentation, Philip Kaludercic, 2022/12/29
- Re: Tree-sitter introduction documentation, Eli Zaretskii, 2022/12/29
- Re: Tree-sitter introduction documentation, Stefan Monnier, 2022/12/29
- Re: Tree-sitter introduction documentation, Eli Zaretskii, 2022/12/29
- Re: Tree-sitter introduction documentation, Stefan Monnier, 2022/12/29
- Re: Tree-sitter introduction documentation, Eli Zaretskii, 2022/12/29
- Re: Tree-sitter introduction documentation, Stefan Monnier, 2022/12/29
- Re: Tree-sitter introduction documentation, Eli Zaretskii, 2022/12/29
- Re: Tree-sitter introduction documentation, Philip Kaludercic, 2022/12/29