If you want to know, which part of code is responsible for what function, look here.

The code is thematically divided into directories. The top-level directory contains only main.c file, which just starts everything as needed.

Each directory contains a module (.c and .h files) with the same name as the directory. That one coordinates functions of the whole directory — it has directory global initialization function, which in turn calls initialization functions of each module, and the like.

common

This directory contains miscellaneous utilities and routines, like linked lists, memory management, debugging support.

parser

This one holds routines for transforming source scripts to syntax trees.

lang

Contains definition of syntax structures and evaluation. This one is kind of heart of remake — it makes the language alive, contexts and variables live here.

hierarchy

This one holds the hierarchy builder. It uses parser and language evaluator to build hierarchy of contexts from source scripts.

plan

Oversees the compilation, what is called and when.

interact

This holds routines cooperating with outside world — calling external programs, coroutines will be implemented here (kind of userland semi-threads, to allow parallel compilation).

cache

Cache stores data between runs of remake. It is somehow buggy.