SIG
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.
Commands
SIG signal
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.
TERM
Ends a signal block.
TRIP signal
Trips the signal and causes any same-named signal blocks to be executed turing the next run.
RESET signal
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.
PRY
This pries a char from the input stream and shoves it into the napkin holder.
CRAM
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.
GROW
Adds the front napkin to the current item and burns it.
GROW BY value
Adds value to the current item.
SHRINK
Subtracts the front napkin from the current item and buns it.
SHRINK BY value
Subtracts value from the current item.
ENLARGE
Multiplies the front napkin by the current item and burns it.
ENLARGE BY value
Multiplies the current item by value.
REDUCE
Divides the current item by the front napkin and burns the napkin.
RECUDE BY value
Divides the current item by value.
PURGE
Resets the current value on the belt to zero.
BURN
Burns the front napkin.
SHOVE
Shove the current value on the belt into the napkin holder.
YANK
Yanks the top value out of the napkin holder and put it onto the belt in place of the old value.
CLONE
Duplicates the front napkin and shoves the new one into the napkin holder.
Example programs
The following is the cat program that ignores EOF:
SIG tick PRY CRAM TERM