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示例:

        
    
    

最新文章

  1. jQuery动画
  2. Nodejs学习总结
  3. [Cocos2d-x For WP8]Layer 层
  4. php大力力 [003节]php在百度文库的几个基础教程mac环境下文本编辑工具
  5. (剑指Offer)面试题15:链表中倒数第k个结点
  6. 50个常用的笔试、面试sql语句
  7. 存储过程/游标/mysql 函数
  8. Linux 内核的文件 Cache 管理机制介绍-ibm
  9. Jest
  10. js keycode 列表
  11. CocoaChina 第四个测试
  12. jmeter分布式压测
  13. Liers 树状数组+中国剩余定理
  14. SpringMVC【开发Controller】详解
  15. jQuery Datetable
  16. awk 手册
  17. Shader 入门笔记(二) CPU和GPU之间的通信,渲染流水线
  18. 牛客寒假算法基础集训营3处女座和小姐姐(三) (数位dp)
  19. 使用redis-cli --pipe快速插入数据
  20. ThinkPHP5项目目录

热门文章

  1. JSON提取器中串联一个接口的多个值传给下个接口(compute concatenation var的实际使用场景)
  2. Springboot 2.3.1配置拦截器遇到的坑
  3. 数电第7周周结_by_yc
  4. Day36:List详解
  5. 「笔记」某移动SRE运维体系交流
  6. JavaScript:变量:如何声明变量?
  7. Azure DevOps 的架构窥探
  8. Potree 002 Desktop开发环境搭建
  9. .Net引用根目录子文件夹下的dll文件
  10. BBS项目(二): 登录功能 首页导航条搭建 首页主体部分 个人站点页面搭建 文章分类与标签 日期归档