Let-s-build-a-compiler
the-super-tiny-compiler
Our great sponsors
Let-s-build-a-compiler | the-super-tiny-compiler | |
---|---|---|
6 | 19 | |
452 | 27,396 | |
- | - | |
0.0 | 0.0 | |
over 5 years ago | 2 months ago | |
C | JavaScript | |
- | Creative Commons Attribution 4.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.
Let-s-build-a-compiler
-
Let's Build a Compiler
A port of the tutorial's code to C which emits x86 assembly:
https://github.com/lotabout/Let-s-build-a-compiler
-
How does the compiler execute the C language?
There is also a tutorial called ’lets build a compiler' by Jack Crenshaw. Somebody put a version in C on GitHub: https://github.com/lotabout/Let-s-build-a-compiler
- Compiler tutorials.
- Let's write a compiler, part 1: Introduction, selecting a language, and planning
-
In-depth software programming
C: A C & x86 version of the "Let's Build a Compiler" by Jack Crenshaw
the-super-tiny-compiler
-
ESLint: under the hood
Now, those concepts are a whole entire world to explore, and this is out of the scope of this article. I suggest the reading of the Chapters 4, 5 and 6 of the book Crafting Interpreters by Robert Nystrom for a wider (but still practical) understanding of those subjects. Another practical great resource to look at is The SuperTiny Compiler. To explore them from a theorical point of view, you can find A LOT of resources from books or courses online.
-
Abstract Syntax Trees and Practical Applications in JavaScript
The super tiny compiler by Jamie
-
GCC uses GCC to compile itself
I am currently writing a much more intricate version of the Super Tiny Compiler (https://github.com/jamiebuilds/the-super-tiny-compiler) in Rust, only I plan on handling many basic operations, essentially a compiler for a MUCH simpler version of Go. Great project idea btw, for anyone who wants to explore compilers. But in doing so, have really found a new respect for just what is going on when you gcc -o garbageprogram mytrashcode.c
-
how would you make a programming language if you were a complete beginner?
Here, at least take this floatie: https://github.com/jamiebuilds/the-super-tiny-compiler
-
Any good resources for reading code?
Outside of this, I recently learned about The Super Tiny Compiler which was a project written to be read. Mind you, it has a vast amount of comments, which may be more of a leg-up than you're asking for.
-
Ask HN: Guidance on writing a source to source compiler (transpiler)
You could start here:
https://github.com/jamiebuilds/the-super-tiny-compiler
That converts from lisp-like to javascript. Really though this is a big field, and there are lots of resources out there.
To get started look at your input language; you'll need to lex and parse that. Then massage the parsed structure into the appropriate output.
You can see me convert brainfuck to C, or x86 assembly language here:
https://github.com/skx/bfcc
- The Super Tiny Compiler
What are some alternatives?
cbfc - an optimizing brainfuck compiler and interpreter
write-a-C-interpreter - Write a simple interpreter of C. Inspired by c4 and largely based on it.
jonesforth - Mirror of JONESFORTH
es6-cheatsheet - ES2015 [ES6] cheatsheet containing tips, tricks, best practices and code snippets
dnsguide - A guide to writing a DNS Server from scratch in Rust
minipack - 📦 A simplified example of a modern module bundler written in JavaScript
acwj - A Compiler Writing Journey
flowy - The minimal javascript library to create flowcharts ✨
tinyrenderer - A brief computer graphics / rendering course
fslightbox - An easy to use vanilla JavaScript plug-in without production dependencies for displaying images, videos, or, through custom sources, anything you want in a clean overlying box.
Crafting Interpreters - Repository for the book "Crafting Interpreters"
raspberry-pi-os - Learning operating system development using Linux kernel and Raspberry Pi