Introduction
Why Write a Compiler?
Tools You Didn't Know Were Compilers
Contributing
Getting Started
1.
Parts of a Compiler
2.
Domain Specific vs General Purpose Languages
3.
Which Language Will We Use?
Domain Specific Languages
4.
Simple Configuration Language
4.1.
Your Options
4.1.1.
Building Everything By Hand
4.1.1.1.
Practical Benefits
4.1.1.2.
What It Can Teach You
4.1.2.
Chevrotain
4.1.2.1.
Practical Benefits
4.1.2.2.
What It Can Teach You
4.1.3.
Langium
4.1.3.1.
Practical Benefits
4.1.3.2.
What It Can Teach You
4.2.
Parsing a Configuration File
4.2.1.
Langium
4.2.1.1.
Writing the Grammar
4.2.1.2.
Generating Everything
4.2.1.3.
Using the VS Code Extension
4.2.2.
By Hand
4.2.2.1.
Turn Source Code Into Tokens
4.2.2.2.
Parsing Sections
4.2.2.3.
Creating an Abstract Syntax Tree
4.2.3.
Chevrotain
4.3.
Semantic Analysis
4.3.1.
Validating Names
4.4.
Code Generation
4.4.1.
Turn an AST Into JSON
5.
Advanced Configuration Language
5.1.
Adding Section Schemas
5.1.1.
Defining Field
5.1.2.
Making Fields Required
5.2.
Adding Features
5.2.1.
Statements
5.2.2.
Variables
5.2.2.1.
Defining Variables
5.2.2.2.
Scopes
5.2.3.
Operations
5.2.4.
Functions
5.3.
Importing From Other Files
5.3.1.
First Attempt: Importing Everything
5.3.2.
Importing Selectively
5.3.2.1.
Sections
5.3.2.2.
Schemas
5.3.2.3.
Variables
5.3.2.4.
Functions
Light
Rust
Coal
Navy
Ayu
Compilers By Example
Introduction
This is all under active construction 😜