WebBS
npeg
WebBS | npeg | |
---|---|---|
1 | 2 | |
50 | 326 | |
- | - | |
10.0 | 5.1 | |
almost 2 years ago | 2 months ago | |
JavaScript | Nim | |
MIT License | 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.
WebBS
-
Pratt Parsers: Expression Parsing Made Easy
A few years back I had to implement a new parser for a custom expression language to replace an old parser that didn’t giving very good errors and was hard to extend. I never did the traditional CS track so parsers were kind of mysterious black magic so naturally first thing I did was search HN.
I stumbled on an older parsing thread [1] with a link to a toy Prayt implementation [2] made by an HNer… and shamelessly ripped it off to write my own Pratt parser implementation.
Great success! Writing a Pratt parser by hand is a lot easier than I thought and like the comment says, adding type information was trivial.
[1] https://news.ycombinator.com/item?id=24480504
[2] https://github.com/mx-scissortail/WebBS
npeg
-
Pratt Parsers: Expression Parsing Made Easy
Ha, nice to see this on HN: this article was pretty helpful to me to understand the concept a few years back when extending my PEG parsing library [1] with a Pratt parser; this mitigates the problem of PEG parsers not allowing left recursion and allows for a much more concise notation of grammars with operator precedence. Thank you Bob:
1. https://github.com/zevv/npeg
-
Nim v2.0 Released
Ones that have not been mentioned so far:
nlvm is an unofficial LLVM backend: https://github.com/arnetheduck/nlvm
npeg lets you write PEGs inline in almost normal PEG notation: https://github.com/zevv/npeg
futhark provides for much more automatic C interop: https://github.com/PMunch/futhark
nimpy allows calling Python code from Nim and vice versa: https://github.com/yglukhov/nimpy
questionable provides a lot of syntax sugar surrounding Option/Result types: https://github.com/codex-storage/questionable
ratel is a framework for embedded programming: https://github.com/PMunch/ratel
cps allows arbitrary procedure rewriting to continuation passing style: https://github.com/nim-works/cps
chronos is an alternative async/await backend: https://github.com/status-im/nim-chronos
zero-functional fixes some inefficiencies when chaining list operations: https://github.com/zero-functional/zero-functional
owlkettle is a declarative macro-oriented library for GTK: https://github.com/can-lehmann/owlkettle
A longer list can be found at https://github.com/ringabout/awesome-nim.
What are some alternatives?
pratt-parser-blog-code - The code to illustrate the pratt parser blog post for the desmos engineering blog.
awesome-nim - A curated list of awesome Nim frameworks, libraries, software and resources.
jsony - A loose, direct to object json parser with hooks.
futhark - Automatic wrapping of C headers in Nim
torrentinim - A very low memory-footprint, self hosted API-only torrent search engine. Sonarr + Radarr Compatible, native support for Linux, Mac and Windows.
nlvm - LLVM-based compiler for the Nim language
mummy - An HTTP and WebSocket server for Nim that returns to the ancient ways of threads.
FrameworkBenchmarks - Source for the TechEmpower Framework Benchmarks project
pixie - Full-featured 2d graphics library for Nim.
questionable - Elegant optional types for Nim
nimpy - Nim - Python bridge
jester - A sinatra-like web framework for Nim.