Omam

Omam is a Brainfuck-equivalent esoteric programming language where all the commands are replaced by lyrics from songs by the indie folk band "Of Monsters And Men." It was devised by Peter Berg in 2013, and he admits that it is pretty darn stupid. He got the idea from listening to "Little Talks" on the Infinite Jukebox.
== Instructions ==
The actual semantic meaning of each command has no correlation to the purpose each command serves. This is simultaneously deliberate and not deliberate.
It's all lowercase.
Brainfuck Command	Omam Equivalent
> 	hold your horses now
< 	sleep until the sun goes down
+ 	through the woods we ran
- 	deep into the mountain sound
. 	don't listen to a word i say
, 	the screams all sound the same
[ 	though the truth may vary
] 	this ship will carry
Omam is thus a member of the TrivialBrainfuckSubstitution family of programming languages.
== Examples ==
=== Hello, World! ===
hold your horses now
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
though the truth may vary
sleep until the sun goes down
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
hold your horses now
deep into the mountain sound
this ship will carry
sleep until the sun goes down
don't listen to a word i say
hold your horses now
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
though the truth may vary
sleep until the sun goes down
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
hold your horses now
deep into the mountain sound
this ship will carry
sleep until the sun goes down
through the woods we ran
don't listen to a word i say
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
don't listen to a word i say
don't listen to a word i say
through the woods we ran
through the woods we ran
through the woods we ran
don't listen to a word i say
hold your horses now
hold your horses now
hold your horses now
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
though the truth may vary
sleep until the sun goes down
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
hold your horses now
deep into the mountain sound
this ship will carry
sleep until the sun goes down
don't listen to a word i say
hold your horses now
hold your horses now
hold your horses now
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
though the truth may vary
sleep until the sun goes down
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
through the woods we ran
hold your horses now
deep into the mountain sound
this ship will carry
sleep until the sun goes down
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
don't listen to a word i say
sleep until the sun goes down
sleep until the sun goes down
sleep until the sun goes down
sleep until the sun goes down
don't listen to a word i say
through the woods we ran
through the woods we ran
through the woods we ran
don't listen to a word i say
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
don't listen to a word i say
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
deep into the mountain sound
don't listen to a word i say
hold your horses now
hold your horses now
through the woods we ran
don't listen to a word i say
=== Cat program ===
the screams all sound the same
though the truth may vary
don't listen to a word i say
the screams all sound the same
this ship will carry
==Implementation==
Written in sed.
 #!/bin/sed -f
 # Slurp up the whole program
 :slurp
 $ !{
 N
 b slurp
 }
 
 # Remove BF
 s/[]<>+,-.[]//g
 
 s/hold your horses now/>/g
 s/sleep until the sun goes down/</g
 s/through the woods we ran/+/g
 s/deep into the mountain sound/-/g
 s/don't listen to a word i say/./g
 s/the screams all sound the same/,/g
 s/though the truth may vary/[/g
 s/this ship will carry/]/g
 
 # Remove non BF
 s/[^]<>+,-.[]//g
 
 # Optimisation!!
 s/++++/A/g
 s/----/B/g
 s/\[-]/C/g
 
 # Init the status
 s/\(.*\)/:=0000|%:\1:/
 
 :next
 s/%\(.\)/\1%/
 
 /%>/ { 
 s/=\([^|]*|\)/\1=/
 s/=:/=0000|:/
 b next
 }
 
 /%</ { 
 s/\([^|:]*|\)=/=\1/
 b next
 }
 
 /%+/ {
 h
 s/^.*=\(....\).*/\1c/
 t reinc
 :reinc
 s/0c/1/; t incd
 s/1c/2/; t incd
 s/2c/3/; t incd
 s/3c/c0/; t reinc
 s/c//;
 :incd
 G
 s/^\(....\).\(.*\)=\(....\)/\2=\1/
 b next
 }
 
 /%-/ {
 h
 s/^.*=\(....\).*/\1c/
 t redec
 :redec
 s/3c/2/; t decd
 s/2c/1/; t decd
 s/1c/0/; t decd
 s/0c/c3/; t redec
 s/c//;
 :decd
 G
 s/^\(....\).\(.*\)=\(....\)/\2=\1/
 b next
 }
 
 /%\[/ {
 /=0000/ !b next
 s/^/0/
 :skipo
 /^0/ {
 s/%\(.\)/\1%/
 /%\[/ s/^/0/
 /%\]/ s/^0//
 b skipo
 }
 b next
 }
 
 /%\]/ {
 /=0000/ b next
 s/^/0/
 :skipc
 /^0/ {
 s/\(.\)%/%\1/
 /%\[/ s/^0//
 /%\]/ s/^/0/
 b skipc
 }
 b next
 }
 
 /%A/ {
 h
 s/^.*=\(...\)\(.\).*/\1c\2/
 t reinc4
 :reinc4
 s/0c/1/; t incd4
 s/1c/2/; t incd4
 s/2c/3/; t incd4
 s/3c/c0/; t reinc4
 s/c//;
 :incd4
 G
 s/^\(....\).\(.*\)=\(....\)/\2=\1/
 b next
 }
 
 /%B/ {
 h
 s/^.*=\(...\)\(.\).*/\1c\2/
 t redec4
 :redec4
 s/3c/2/; t decd4
 s/2c/1/; t decd4
 s/1c/0/; t decd4
 s/0c/c3/; t redec4
 s/c//;
 :decd4
 G
 s/^\(....\).\(.*\)=\(....\)/\2=\1/
 b next
 }
 
 /%C/ {
 s/=\(....\)/=0000/
 b next
 }
 
 /%\./ { 
 s/=\(....\)\(.*\)/=\1\2\1|/
 
 /0022|$/ {
 :endprint
 h
 s/^[^:]*:[^:]*:[^:]*://
 
 # NUL and CR
 s/0000|//g
 s/0031|//g
 
 # Remove the last NL, "p" will add it back.
 s/0022|$//
 
 # A few control characters
 s/0021|/ /g
 s/0022|/\
 /g
 s/0123|/�/g
 
 s/0200|/ /g
 s/0201|/!/g
 s/0202|/"/g
 s/0203|/#/g
 s/0210|/$/g
 s/0211|/%/g
 s/0212|/\&/g
 s/0213|/'/g
 s/0220|/(/g
 s/0221|/)/g
 s/0222|/*/g
 s/0223|/+/g
 s/0230|/,/g
 s/0231|/-/g
 s/0232|/./g
 s/0233|/\//g
 s/0300|/0/g
 s/0301|/1/g
 s/0302|/2/g
 s/0303|/3/g
 s/0310|/4/g
 s/0311|/5/g
 s/0312|/6/g
 s/0313|/7/g
 s/0320|/8/g
 s/0321|/9/g
 s/0322|/:/g
 s/0323|/;/g
 s/0330|/</g
 s/0331|/=/g
 s/0332|/>/g
 s/0333|/?/g
 s/1000|/@/g
 s/1001|/A/g
 s/1002|/B/g
 s/1003|/C/g
 s/1010|/D/g
 s/1011|/E/g
 s/1012|/F/g
 s/1013|/G/g
 s/1020|/H/g
 s/1021|/I/g
 s/1022|/J/g
 s/1023|/K/g
 s/1030|/L/g
 s/1031|/M/g
 s/1032|/N/g
 s/1033|/O/g
 s/1100|/P/g
 s/1101|/Q/g
 s/1102|/R/g
 s/1103|/S/g
 s/1110|/T/g
 s/1111|/U/g
 s/1112|/V/g
 s/1113|/W/g
 s/1120|/X/g
 s/1121|/Y/g
 s/1122|/Z/g
 s/1123|/\[/g
 s/1130|/\\/g
 s/1131|/]/g
 s/1132|/^/g
 s/1133|/_/g
 s/1200|/`/g
 s/1201|/a/g
 s/1202|/b/g
 s/1203|/c/g
 s/1210|/d/g
 s/1211|/e/g
 s/1212|/f/g
 s/1213|/g/g
 s/1220|/h/g
 s/1221|/i/g
 s/1222|/j/g
 s/1223|/k/g
 s/1230|/l/g
 s/1231|/m/g
 s/1232|/n/g
 s/1233|/o/g
 s/1300|/p/g
 s/1301|/q/g
 s/1302|/r/g
 s/1303|/s/g
 s/1310|/t/g
 s/1311|/u/g
 s/1312|/v/g
 s/1313|/w/g
 s/1320|/x/g
 s/1321|/y/g
 s/1322|/z/g
 s/1323|/{/g
 
 s/1331|/}/g
 s/1332|/~/g
 s/1333|/./g
 
 # Ignore non-ASCII and most control characters.
 s/0...|//g
 s/[23]...|/./g
 
 # Do the "|" symbol last.
 s/1330|/|/g
 
 p
 x
 s/:[^:]*$/:/
 }
 
 b next
 }
 
 /%,/ {
 # This probably is possible, but not yet worthwhile.
 s/$/0022|ERROR0322| Input command not supported0022|/
 }
 
 # At the use the existing "." code to convert the last of the printout.
 /[0-9][0-9][0-9][0-9]|$/ {
 s/.*:/:%::/
 b endprint
 }
 d
Category:Languages
Category:Brainfuck derivatives
Category:Brainfuck equivalents
Category:2013
Category:Joke languages
Category:Cell-based
Category:Turing complete
Category:Turing tarpits
Category:Implemented
Category:Thematic
Category:Pseudonatural