#! /usr/bin/env python # -*- coding: shift_jis -*- #evallがプログラムを受け取り、評価して返す。 #syntaxは他のプログラムで別にチェック。 #(例) #>>>evall("```sABC") #``AC`BC def search(s,i): t=-1 while t: t+=[1,-1][s[i]=="`"] i+=1 return i def evall(pr): x=[];s=pr;g=0 while 1: if g: if x==[]:return s m,p=x.pop() if m==0:x.append((1,s));s=p;g=0;continue if p=="i":continue if p[:2]=="`k":s=p[2:];continue if p[:3]=="``s": i=search(p,3) s="``%s%s`%s%s"%(p[3:i],s,p[i:],s) g=0;continue s="`%s%s"%(p,s);continue if s[0]=="`": i=search(s,1) x.append((0,s[i:])) s=s[1:i] continue else: g=1