pomsky
chumsky
pomsky | chumsky | |
---|---|---|
19 | 54 | |
1,259 | 3,327 | |
0.2% | - | |
8.4 | 8.8 | |
3 months ago | 6 days ago | |
Rust | Rust | |
Apache License 2.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.
pomsky
-
How to call from Rust into JS, Java, C#, Ruby and Python?
I started with JS, and my first step was to write a simple script that checks if a regex is valid. I can call this script from Rust, but there's a problem: Starting a nodejs process takes about 100ms, which is not acceptable, especially for fuzzing.
-
How do you guard against stack overflows
I noticed this when a test case of a parser I wrote failed in CI on Windows. I then learned that the default stack size on Windows is only 1 MiB whereas its 8 MiB on Linux if I remember correctly. The parser has a hard-coded recursion limit to prevent stack overflows, which is currently set to 128. However, this limit is lower than necessary on Linux, and might still be too high for some platforms (embedded?)
-
I have to rename Rulex
I was informed that Rulex is a registered trademark and I'm not allowed to use the name for my project. A lawyer contacted me and gave me a week to rename the project, so I have to come up with a different name :(
-
Melody 0.18 (a sane alternative to regular expressions)
In the other discussion, there's also a link to Rulex, which has similar goals but is more concise. Also claims to compile to multiple regex dialects.
-
Fuzzing rust-minidump at Mozilla for Embarrassment and Crashes – Part 2
Something similar happened to me a week ago. Someone emailed me that they found panics in rulex, and then created a PR to fix them. They even explained to me how to create a security advisory on GitHub because the panics could be used to DoS someone. It was very helpful.
-
Where would you put Error enums?
Sorry for not being more specific. Since this is a parser, the span points into the text file that is being parsed, so it's not that relevant for most libraries. Here is the parser, it uses nom parser combinators. Unfortunately, and adding the spans to the errors involves some boilerplate.
-
rulex VS melody - a user suggested alternative
2 projects | 19 Jun 2022
-
Any active open source repos built using Rust that need development ?
I welcome contributions for rulex. It's a medium-sized project that should be fairly easy to understand, and has some "good first issues" :)
-
Hacker News top posts: Jun 10, 2022
Rulex – A new, portable, regular expression language\ (102 comments)
- Rulex – A new, portable, regular expression language
chumsky
-
Lezer: A Parsing System for CodeMirror, Inspired by Tree-Sitter
I attempted to use this but was disheartened but the fact that it doesn't statically type node names. Tree Sitter doesn't either but it has much more of an excuse given that it targets C.
https://github.com/lezer-parser/lezer/issues/8
The dev seems mildly hostile to outside involvement too, so I moved on. These days I use Chumsky which is Rust rather than Typescript, but also way more awesome, if you can deal with the often incomprehensible compilation errors at least!
https://github.com/zesterer/chumsky
-
nom > regex
there’s also chumsky: https://github.com/zesterer/chumsky
-
Writing an Equation Solver
We are using technique called parser combinator. And we are using a library chumsky to write parser combinators.
-
loxcraft: a compiler, language server, and online playground for the Lox programming language
rust-langdev has a lot of libraries for building compilers in Rust. Perhaps you could use these to make your implementation easier, and revisit it later if you want to build things from scratch. I'd suggest logos for lexing, LALRPOP / chumsky for parsing, and rust-gc for garbage collection.
-
Examples of function-based parsers in chumsky? Examples of unit tests?
The examples that come with chumsky and the chumsky tutorial and guide all define their parsers using closures.
-
Flamingo - A start: the syntax, a soon-to-be-built keyword-less lang with flavoured code blocks. Seeking help and advice please :)
Parser: https://crates.io/crates/chumsky
-
pep-508 v0.2.1 - Zero copy Python dependency parser written with chumsky
chumsky's zero-copy rewrite has reached its first alpha release, and I have migrated my pep-508 parser to it, as suggested in my last announcement.
-
winnow = toml_edit + combine + nom
On my side, nom is still advancing well and a new major version is in preparation, with some interesting work a new GAT based design inspired from the awesome work on chumsky, that promises to bring great performance with complex error types. 2023 will be fun for parser libraries!
-
Rust implementation of Python dependency parser for PEP 508
I am using chumsky because I like the API, but it doesn't support zero copy at the moment. Although efficiency is good to have, it is not my primary good. This will probably get supported once chumsky implements support for it (see upstream issue).
-
Question about lexer and parser generators in Rust
Checkout https://github.com/zesterer/chumsky or https://github.com/rust-bakery/nom
What are some alternatives?
melody - Melody is a language that compiles to regular expressions and aims to be more readable and maintainable
nom - Rust parser combinator framework
grex - A command-line tool and Rust library with Python bindings for generating regular expressions from user-provided test cases
pest - The Elegant Parser
regex-automata - A low level regular expression library that uses deterministic finite automata.
pom - PEG parser combinators using operator overloading without macros.
kleenexp - modern regular expression syntax everywhere with a painless upgrade path
lalrpop - LR(1) parser generator for Rust
taffy - A high performance rust-powered UI layout library
instaparse
regex - An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.
combine - A parser combinator library for Rust