ohm
Pegged
Our great sponsors
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.
ohm
-
Ohm: A library and language for building parsers, interpreters, compilers, etc.
Building an interpreter or a compiler from a grammar is an interesting idea. I can't immediately see how to go about it - the grammar would need to match on SSA or similar.
The examples have a lisp-like interpreter at https://github.com/ohmjs/ohm/blob/main/examples/simple-lisp/... which definitely uses a grammar for parsing and might use a generic AST representation.
Will have to think more - a grammar might be a worthwhile way to specify a nanopass style compiler pipeline.
-
Is there a generalised, abstract programming language, designed to be specialised to a specific domain?
Look for OMeta and its successor Ohm.
-
[AskJS] Why does our community hate Operator Overloading?
One more suggestion: Maybe create your own scripting-language using Ohm? The project works in JavaScript, so whatever you created would sit on top of your existing APIs.
-
A different / new way to write compilers?
OMeta and its successor ohm might provide some interesting ideas.
-
Ohm – A library and language for building parsers, interpreters, compilers, etc.
Always fun to find the first commit:
https://github.com/harc/ohm/commit/4611bf63c5ecb90d782112d68...
2014
Neat tool. I write parsers by hand though. More fun, and you can be a lot sleazier.
Pegged
-
Metaprogramming in Zig and Parsing CSS
Here's a parser generator that uses metaprogramming in D to run it at compile time:
-
C++17’s Useful Features for Embedded Systems
This is the intended purpose of the feature. gzip may be a little aggressive given that you have to unzip it again at the other end but its very possible (and potentially not even as expensive as one might expect given that these types of compression algorithms can be tuned on a speed/size tradeoff and backoff when struggling to compress).
https://github.com/PhilippeSigaud/Pegged is a D library that generates a parser generator for you based on a grammar (string) at compile time.
-
Good languages for writing compilers in?
Also pegged is a pretty nice library for generating parsers from PEG grammars.
-
Rule
I LOVE PEGGED IT'S MY FAVORITE PARSER GENERATOR FOR THE D PROGRAMMING LANGUAGE
-
Writing a JSON parser from scratch in TypeScript
I mean it kind of depends on the parser generator if it's simpler or harder to use. I have mainly used this which is very simple to use.
- Ohm – A library and language for building parsers, interpreters, compilers, etc.
- Pegged – a parsing expression grammar (PEG) generator in the D language
What are some alternatives?
PEG.js - PEG.js: Parser generator for JavaScript
usfm-grammar - An elegant USFM parser.
peggy - Peggy: Parser generator for JavaScript
ppci - A compiler for ARM, X86, MSP430, xtensa and more implemented in pure Python
pymetaterp - A python parser that builds python ASTs in 502 lines of python without using modules
meowlang - Meow Programming Language
proposal-operator-overloading
mpl - The MaPLe compiler for efficient and scalable parallel functional programming
Chevrotain - Parser Building Toolkit for JavaScript
TablaM - The practical relational programing language for data-oriented applications