python 操作 WhiteSpace语言

1 WhiteSpace 简介

  • WhiteSpace,是一种只用空白字符(空格,TAB和回车)编程的语言,而其它可见字符统统为注释。
  • 它本身是个指令式、基于堆栈的语言。其程式运行在上的虚拟机器均有一个堆栈(Stack)和堆(Heap)。程式员可自由将整数推进堆栈中(只可以是整数,因为暂时并无浮点数或实数工具)。使用者亦可通过堆作为变量和数据结构的暂存区。
  • 栈的结构:栈是先进后出,后进先出。
  • WhiteSpace解析网站: Whitelips the Esoteric Language IDE (vii5ard.github.io)

2 Python 操作栈流程

  • Whitespace_process.txt为WhiteSpace解析网站中的debug处信息(所有都要复制),注意第一行为push 0,没有要补上。
from queue import LifoQueue
import re


stack = LifoQueue()

data =  open("Whitespace_process.txt", "r").read().splitlines()

"""
栈:后入先出
函数功能如下:
	push: 将数字压入栈顶
	printc: 将栈顶元素弹出并以ASCII字符形式输出
	dup: 复制栈顶元素后压入栈顶两次
	drop: 弹出栈顶元素
	add: 将堆栈最上方的两个元素弹出,二者做加法运算,得到的结果入栈
"""
text = ""
for line in data:
	if "push" in line:
		num = int(re.findall("push (.*?)$", line)[0])
		stack.put(num)
	elif line == "add":
		stack.put(stack.get() + stack.get())
	elif line == "dup":
		num = stack.get()
		stack.put(num)
		stack.put(num)
	elif line == "drop":
		asc = chr(stack.get())
		text += asc
print(text)

  • WhiteSpace示例: