summaryrefslogtreecommitdiff
path: root/docs/c1/index.md
blob: af01cea6d3aefd084c9884c8929ec4dbb54c693f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Chapter 1: Genesis

This chapter goes through the processes involved in reading source
code, running it, and optionally compiling it.

1. [Parse](1-parse.html)

   The parser receives a stream of bytes and transforms them into a
   minimal set of data types with very little processing.

2. [Decode](2-decode.html)

   The decoder runs configurable and extensible pre-processing steps
   over data received from the parser, enriching it with more complex
   data types, and handling primitive source code transforms.  It's
   comparable to the C pre-processor or Lisp's `DEFMACRO` mechanism,
   with a few more responsibilities, such as number literal parsing.

3. [Execute](3-execute.html)

   Code is executed (or interpreted, or evaluated) in an environment,
   also called a module, which may be mutated, and linked with other
   modules.  Execution is immediate, without any pre-compilation.

4. [Compile](4-compile.html)

   Procedures from within the compiler module can be used to demand
   the compilation of other modules, with various options, yielding
   static or dynamic object files.  These may be loaded immediately,
   replacing the previously uncompiled module code in memory.