I've used LFE and Elixir (and other tools) to follow the Nand2Tetris course, which guides "self-learners through the construction of a modern, full-scale computer system - hardware and software - from the ground up. In the process, the students practice many major computer science (CS) abstractions studied in typical CS courses and make them concrete through 12 guided implementation projects."
+----------+ +------------+ +-----------+
Jack Program ---| Compiler |--> VM Code ---| Translator |--> Assembly Language ---| Assembler |--> Machine Code
+----------+ +------------+ +-----------+
|<-------------see below------------->|
+---------------------------------------------------------------------------+
| Compiler |
| |
| +----------------------------------------------+ |
| | Syntax Analyzer | |
| | | |
| | +-----------+ +----------------------+ | +----------------+ |
Jack Program ---|---|-->| Tokenizer |-->| Parser |---|-->| Code Generator |---|---> VM Code
| | +-----------+ | (Compilation Engine) | | +----------------+ |
| | +----------------------+ | |
| +----------------------------------------------+ |
| |
+---------------------------------------------------------------------------+
- The assembler in LFE
- The VM code translator in Elixir
- The tokenizer in Elixir
- The parser in Elixir
- The VM code generator in Elixir
- The compiler (wraps the tokenizer, parser, and generator) in Elixir
- The syntax analyzer (wraps the tokenizer and parser) in Elixir
- From Nand to Tetris In 12 Steps [~9 minutes]
- And now it's a TED talk: Shimon Schocken: The self-organizing computer course
The Elements of Computing Systems: Building a Modern Computer from First Principles, Nand to Tetris Companion, by Noam Nisan and Shimon Schocken