StackBBQ2+

From Esolang
Jump to navigation Jump to search

StackBBQ2+ is a language designed by islptng to compile to StackBBQ.

Commands

Command Compile into Explanation
~ 110 NOT top
z 1110 Push 0
| 1111010 OR top 2 values
: 1111011100 Duplicate stack top
{ abc... } a1110110b1110110c1110110... Push the content to Q
_ 1110111100 Push Q to P and clear Q
? 11101110110 Append top of P to the program
; 11101110111100 pop P and discard
$ 11101110111011100 reverse the stack

Compiler

p = input()
d = {'~':'110','z':'1110','|':'1111010'
,':':'1111011100','_':'1110111100','?':'11101110110',
';':'11101110111100','$':'11101110111011100'}
for i in d:
	p = p.replace(i,d[i])

def eb(s):
	res = ""
	for i in list(s):
		res += ("1" if i == "1" else "1110") + "1110110"
	return res
def meb(s,n):
	for i in range(n): s = eb(s)
	return s
res = ""
dep = 0
for i in list(p):
	if i == "{":
		dep += 1
	elif i == "}":
		dep -= 1
	else:
		res += meb(i,dep)
print(res)