nearley
dmd
Our great sponsors
nearley | dmd | |
---|---|---|
3 | 146 | |
3,548 | 2,888 | |
- | 0.7% | |
0.0 | 9.9 | |
8 months ago | 6 days ago | |
JavaScript | D | |
MIT License | Boost Software License 1.0 |
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.
nearley
-
Writing a C compiler in 500 lines of Python
While I suspect I would learn more writing a tokenizer and parsing logic myself I find grammars much easier to read and maintain.
ANTLR is pretty good and is supported across several languages and something I had previously used for some quick Elasticsearch query syntax munging in Python. It also means you can often start from an already existing grammar.
The JS version of ANTLR didn't seem to work for me so for the SQL/JSONPath stuff ended up using the Moo lever and Nearly parser which was rather pleasant. https://nearley.js.org
- Parser generators vs. handwritten parsers: surveying major languages in 2021
-
Applicative Parsing
Parsers in nearley.js [1] are written in a very readable EBNF-like DSL; then they get desugared down to a JS file that's a lot like your snippet.
[1] https://github.com/kach/nearley
dmd
- D2 Playground
-
DMD Compiler as a Library: A Call to Arms
Here's the pipeline spitting out the same error as on my macbook did.
https://github.com/dlang/dmd/actions/runs/8023469412/job/219...
-
My favourite Git commit (2019)
Not completely on topic (if you read TFA) but my favorite Git commit is by compiler badass and HN frequenter, where he checks in an entire C compiler to the D language repo:
https://github.com/dlang/dmd/pull/12507
https://news.ycombinator.com/item?id=27102584
-
The C Bounded Model Checker: Criminally Underused
A new generated code alone is 4000 lines long [1]. The actual code added is just 2000 lines, and some are used to pay debts, I mean, to make a proper code generator (which can be alternatively written in a simpler scripting langauge). In any case it is never comparable to the entier C parser proper.
[1] https://github.com/dlang/dmd/pull/15307/files#diff-3677bcc89...
-
OpenD, a D language fork that is open to your contributions
D is completely opensource already (https://github.com/dlang/dmd). The "open" of OpenD is just ADR saying that OpenD will be more open to new language features than D has historically been.
-
The OpenD Programming Language (fork of D)
The reference compiler, DMD, is open source: https://github.com/dlang/dmd
But they don't accept just any Pull Request or features the community submits, understandably. There's a process called DIP for language improvements: https://github.com/dlang/DIPs/blob/master/DIPs/README.md
However, by some accounts, it's really hard to get anything through.
Given D already has so many feature, I find that to be a good thing , to be honest, by not everyone agrees, of course.
- Odin Programming Language
- D Programming Language
What are some alternatives?
PEG.js - PEG.js: Parser generator for JavaScript
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
Jison - Bison in JavaScript.
ldc - The LLVM-based D Compiler.
Chevrotain - Parser Building Toolkit for JavaScript
v - Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
markdown-it - Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed
dextool - Suite of C/C++ tooling built on LLVM/Clang
xml2js - XML to JavaScript object converter.
Odin - Odin Programming Language
parse5 - HTML parsing/serialization toolset for Node.js. WHATWG HTML Living Standard (aka HTML5)-compliant.
llvm-project - The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.