diff options
author | Michael Davis | 2023-02-07 08:18:44 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2023-03-08 01:48:35 +0000 |
commit | c8e6857affdd286a5aff1e8f72fc428ea216076e (patch) | |
tree | df0f46056161273fba9bd4a11f771b704c8c8a06 /grammars.nix | |
parent | f976c004e2efa4cb583b06827b44fef84bf925f5 (diff) |
Add a parser-combinator crate
Parser-combinators are one of the simpler tools for building ad-hoc
parsers. They're a good fit because they are...
* Small: each parser / parser-combinator is around 10 LOC.
* Functional: helix_core strives to be a functional set of utilities
usable throughout the rest of the editor.
* Flexible: use them to build any sort of ad-hoc parser. In the child
commit, we'll parse LSP Snippet syntax using these new parser
combinators.
Why not use an existing parser-combinator crate? Existing popular
parser-combinator crates have histories of making breaking changes
(for example nom and combine).
> Implementation note: I tried to not introduce a new trait since the
> types can be expressed in terms of `impl Fn`s. The trait is necessary
> to build `seq` implementations without a proc macro though, and also
> allows us to use `&'static str`s very conveniently: see the trait
> implementation for `&'static str`.
Diffstat (limited to 'grammars.nix')
0 files changed, 0 insertions, 0 deletions