123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960def interp(code): data=[0 for _ in range(30000)] pc=0 ptr=0 st=[]#list模拟stack while(pc<len(code)): c=code[pc] print("正在处理字符'{}'".format(c)) if c=='<': ptr-=1 elif c=='>': ptr+=1 elif c=='+': data[ptr]+=1 elif c=='-': #print('ptr:',ptr) data[ptr]-=1 elif c=='.': print(data[ptr]) elif c==',': data[ptr]=input() elif c=='[': if data[ptr]!=0:#要做循环 print('{}不为0,开始循环'.format(data[ptr])) st.append(pc) print('入栈',pc) else: print('不循环了') cnt=0 fx=0#记录从当前位置到对应匹配的']'要走的步数 for i in code[pc:]: fx+=1 if i=='[': cnt+=1 if i==']': cnt-=1 if cnt==0: break if cnt==0:#括号匹配 print('匹配') pc=pc+fx-1#pc去往匹配的']'位置 print('pc前往下标',pc) elif c==']': pc=st.pop()-1 pc+=1 #########测试样例1##############print('\n\n测试样例1:\n\n')interp('+[+--].')#########测试样例2##############print('\n\n测试样例2:\n\n')interp('++++.>+--.')