SIG is a language based on signals that was created on May 16, 2008 by revcompgeek. There are two data structures. The first data structure is stack like, but it is more like a napkin holder at restaurants. Simply pushing or pulling (popping) won't do anything. Instead you have to shove and yank. The second data structure is like a tape, but is more like a conveyor belt with no motor. Instead of you moving along the belt, you have to move the belt to where you want it by pushing and pulling it. Numbers in the napkin holder are called napkins, and numbers on the belt are called items.
Start of a signal block. Only executes if signal has been tripped during the previous run. NOTE: the signal tick is tripped at the end of every run.
Ends a signal block.
Trips the signal and causes any same-named signal blocks to be executed turing the next run.
Resets the state of the specified signal. If it was previously tripped during the current run, this undoes what the TRIP command did, which means it will no longer be active during the next run.
This pries a char from the input stream and shoves it into the napkin holder.
This yanks front napkin out of the napkin holder and stuffs it into the output stream as a character, modulo 256 if needed.
IF condition command
IF is a comparison command that compares the current item with the front napkin. Condition can be any of the following:
LESS - less than MORE - greater than GOOD - equal to EVIL - unequal to CLEAN - napkin holder is empty DIRTY - napkin holder has something
If the condition is satisfied, then command is executed.
Adds the front napkin to the current item and burns it.
GROW BY value
Adds value to the current item.
Subtracts the front napkin from the current item and buns it.
SHRINK BY value
Subtracts value from the current item.
Multiplies the front napkin by the current item and burns it.
ENLARGE BY value
Multiplies the current item by value.
Divides the current item by the front napkin and burns the napkin.
RECUDE BY value
Divides the current item by value.
Resets the current value on the belt to zero.
Burns the front napkin.
Shove the current value on the belt into the napkin holder.
Yanks the top value out of the napkin holder and put it onto the belt in place of the old value.
Duplicates the front napkin and shoves the new one into the napkin holder.
The following is the cat program that ignores EOF:
SIG tick PRY CRAM TERM