ohm
Chevrotain
Our great sponsors
ohm | Chevrotain | |
---|---|---|
10 | 3 | |
4,877 | 2,397 | |
1.0% | 1.5% | |
6.8 | 6.7 | |
about 1 month ago | 7 days ago | |
JavaScript | TypeScript | |
MIT License | Apache License 2.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.
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.
Chevrotain
-
Ohm: A library and language for building parsers, interpreters, compilers, etc.
How does this compare with Chevrotain[1]?
More specifically, can I build lexers with Ohm? Can it generate a syntax diagram from a grammar?
[1]: https://github.com/chevrotain/chevrotain
-
Introduction to Lexers, Parsers and Interpreters with Chevrotain
To learn more about Chevrotain visit: https://chevrotain.io/
-
Why are you building a programming language?
I don't think I'll have time to make one any time soon, unfortunately. My original plan was to write a compiler in TypeScript using Chevrotain, and see if it's possible to compile down to TypeScript's AST and feed that into its own compiler programmatically. Basically piggybacking on Microsoft's hard work (work smart, not hard). I don't know if it's possible, but it's what I'd try first.
What are some alternatives?
PEG.js - PEG.js: Parser generator for JavaScript
peggy - Peggy: Parser generator for JavaScript
nearley - 📜🔜🌲 Simple, fast, powerful parser toolkit for JavaScript.
Pegged - A Parsing Expression Grammar (PEG) module, using the D programming language.
Jison - Bison in JavaScript.
usfm-grammar - An elegant USFM parser.
markdown-it - Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed
meowlang - Meow Programming Language
parsec 🌌 - 🌌 Tiniest body parser in the universe. Built for modern Node.js
pymetaterp - A python parser that builds python ASTs in 502 lines of python without using modules
csv-parser - Streaming csv parser inspired by binary-csv that aims to be faster than everyone else