Build your own Lisp, Learn C and build your own programming language in 1000 lines of code!

Build your own Lisp, Learn C and build your own programming language in 1000 lines of code!

By Daniel Holden

Contents • Build Your Own Lisp

Chapter 1 • Introduction
About
Who this is for
Why learn C
How to learn C
Why build a Lisp
Your own Lisp

Chapter 2 • Installation
Setup
Text Editor
Compiler
Hello World
Compilation
Errors
Documentation

Chapter 3 • Basics
Overview
Programs
Variables
Function Declarations
Structure Declarations
Pointers
Strings
Conditionals
Loops

Chapter 4 • An Interactive Prompt
Read, Evaluate, Print
An Interactive Prompt
Compilation
Editing input
The C Preprocessor

Chapter 5 • Languages
What is a Programming Language?
Parser Combinators
Coding Grammars
Natural Grammars

Chapter 6 • Parsing
Polish Notation
Regular Expressions
Installing mpc
Polish Notation Grammar
Parsing User Input

Chapter 7 • Evaluation
Trees
Recursion
Evaluation
Printing

Chapter 8 • Error Handling
Crashes
Lisp Value
Enumerations
Lisp Value Functions
Evaluating Errors
Plumbing

Chapter 9 • S-Expressions
Lists and Lisps
Types of List
Pointers
The Stack & The Heap
Parsing Expressions
Expression Structure
Constructors & Destructors
Reading Expressions
Printing Expressions
Evaluating Expressions

Chapter 10 • Q-Expressions
Adding Features
Quoted Expressions
Reading Q-Expressions
Builtin Functions
First Attempt
Macros
Builtins Lookup

Chapter 11 • Variables
Immutability
Function Pointers
Cyclic Types
Function Type
Environment
Variable Evaluation
Builtins
Define Function
Error Reporting

Chapter 12 • Functions
What is a Function?
Function Type
Lambda Function
Parent Environment
Function Calling
Variable Arguments
Interesting Functions

Chapter 13 • Conditionals
Doing it yourself
Ordering
Equality
If Function
Recursive Functions

Chapter 14 • Strings
Libraries
String Type
Reading Strings
Comments
Load Function
Command Line Arguments
Print Function
Error Function
Finishing Up

Chapter 15 • Standard Library
Minimalism
Atom
Building Blocks
Logical Operators
Miscellaneous Functions
List Functions
Conditional Functions
Fibonacci

Chapter 16 • Bonus Projects
Only the Beginning
Native Types
User Defined Types
List Literal
Operating System Interaction
Macros
Variable Hashtable
Pool Allocation
Garbage Collection
Tail Call Optimisation
Lexical Scoping
Static Typing

Conclusion

Credits

FAQ

Source

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s