python 操作 WhiteSpace 语言

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

        
       		   	 
    	    
      
    
       		  			
       			 	 	
     
    
     
      
    
       		 	 		
     
      
    
       	 	 
    	    
      
    
       	   		 
       				 		
     
    
     
      
    
       		   	
     
      
    
       				   
     
      
    
       	     	
     
      
    
       	 		 	
    	    
      
    
       	   	 	
     
      
    
      		    
    	    
      
    
       		  			
       		 			 
       		    	
       		 		  
       		 				
     
    
     
    
     
    
     
    
     
      
    
       			  	 
       	 	    
     
    
     
      
    
      		    	 
    	    
      
    
       		 			
    	    
      
    
       	 		
    	    
      
    
       		 	  
     
      
    
       			  	
    	    
      
    
       	 	 	  
     
      
    
       		    
     
      
    
       		    	
       	    		
     
    
     
      
    
       			  	 
       			 	 	
       		 			
       			    
     
    
     
    
     
    
     
      
    
       	   		 
       		  		
       		 	   
       	 	 	  
       		  	 	
     
    
     
    
     
    
     
    
     
      
    
       		   	
     
      
    
       		 	  
     
      
    
       		  		
    	    
      
    
       	 		 
    	    
      
    
    
    
    
    
    
posted @ 2022-12-11 16:36  f_carey  阅读(208)  评论(0编辑  收藏  举报