Combinator-reduction based macro expander
- I implemented this in compiled Kyan pascal. The small size of the machine required dividing this program into about 10 passes.
- Tokenizing/ include file processing
- Token sorting/numbering
- Parsing
- Usage analysis
- Serialized combinator tree production
- List space construction and initialization with combinator tree
- Combinator reduction in list space
- Result serialization from list space
- Unique token generation
- De-tokenization/output file generation
- Or, error message generation
- In the 3 passes involving list space, the memory available for storing the combinator tree was so small that I had to implement a sort of virtual memory, with the combinator space stored in a file, and the memory used as a cache for the file.
- I later ported this program to Turbo Pascal for PC DOS.