Most of the pages in this directory describe the same sort of idea called ram plan here. There are two address spaces in play in these notes: the place where the plan resides, and the place where the data, and perhaps code, that conforms to the plan resides. Both of these spaces have pointers but those pointers are resolved in their own space. A plan is immutable but perhaps gradually revealed. In plan space a word is 32 bits and a pointer is a word.

A plan is defined recursively. There are a few primitive plans and a few means of composing plans of other plans. Each primitive plan is some 32 bit number which cannot be confused with a pointer. There are primitive plans for void, int, float, double, char, short, long long int etc.

Plans are composed of other plans by means of pointers. A composite plan is a pointer to the plan body, in plan space, where the details of the plan are found.

A plan body begins with a indicator word determining means of composition is being employed. The format of the rest of the plan body depends on this indicator. Here are some plan bodies:

A Fixed Array Plan
The indicator is 1.
The next word is the plan of the array element.
The next word is the number of elements in the array.
A Structure Plan
The indicator is 2.
The next word is the number of fields in the structure.
The next words are the plans of the array elements.
A Pointer Plan
The indicator is 3.
The next word is the plan for the target of the pointer.
This is quite restrictive so far.

I shall try Semantic BNF here.