This is an attempt to program this pattern in C. It compromises between efficiency and perspicacity, achieving neither. Just now I think the older code plan here may be better overall. As short as these code fragments are, they are longer than the corresponding assembler versions.
push.h: The Universal Header
Type ele is the name of the element of a stream, normally a single character but up to 32 bits if necessary.
Type ds is the type of a routine that accepts a stream element. Its 2nd argument is a stream context pointer to a node state block.
Type ns is a super type that encompasses particular sorts of node states. Particular node states are declared in particular files with file scope and generated called bl there.
Type pull is the type of a routine that generates a new character in some stream determined by the context parameter.
on.c: The shared code to go to next node.
The arguments passed to on are the stream element and a pointer to the next node state block.
inf.c: In infinite supply of some one character.
u2u8.c: Convert to UTF-8.