/=1/=9/!
/^(.*)=x/M$1/
# Don't use quoting for this program, as it'll just disturb the count.
# (It doesn't matter what we use for each character, as there are only
# four distinct possibilities.) Make sure this doesn't clash with what
# we use later!
/=[^x~?!]/*/
/=([^x])/$1/
# Mfit
# ? does nothing on Mfit if the program has an even length.
/^M\?((..)*.)$/S$1/
# Otherwise, it cycles ? to ! to ~ to ?.
/^M\?((..)*)$/C%%$1/
/%%\?/!%%/
/%%!/~%%/
/%%~/?%%/
/^C(.*)%%/S$1/
# ~ duplicates the source code.
/^M~(.*)$/S$1$1/
# Anything else prints the length of the source as an ASCII character.
/^M(.*)()/$
/^M/P$g:128:/
/^P([0-9]+):(128):/#
/^P([0-9]+):(128):/P$m:0:/
/^P([0-9]+):(0):/#
/^P([0-9]+):(0):/P-$c-/
/^P-([^a]|[^b])-/|
/^P-([^a]|[^b])-./S/
# Shanty
# ! duplicates the source code.
/^S!(.*)$/M$1$1/
# ? reverses the source code.
/^S\?/R--/
/--(.*)(.)$/$2--$1/
/^R(.*)--/M$1/
# Anything else errors out.
/^S(.*)()/$
/^S.*$/O$g/
/^O(.*)$/|
/^O(.*)$/=n=x=9/
/=1/*
/=1//
.