All pastes #35529 Raw Edit

Mine

public python v1 · immutable
#35529 ·published 2006-01-02 14:34 UTC
rendered paste body
def reg(str, pat):	cnt = 0	alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"	numbers = "0123456789"	alphanum = numbers + alpha	for symbol in pat:		if cnt == len(str) - 1: return 1		#check for string		if symbol == "*":			while(1):				if not str[cnt] in alpha:					break				if cnt == len(str) - 1: return 1				cnt += 1		#check for character		if symbol == "?":			if not str[cnt] in alpha:				return 0			cnt += 1		#check for numbers		if symbol == "#":			if not str[cnt] in numbers:				return 0			cnt += 1		#check for string of numbers		if symbol == "%":			while(1):				if not str[cnt] in numbers:					break				if cnt == len(str) - 1: return 1				cnt += 1		#check for alphanumeric		if symbol == "^":			if not str[cnt] in alphanum:				return 0			cnt += 1		#check for alphanum string		if symbol == "&":			while(1):				if not str[cnt] in alphanum:					break				if cnt == len(str) - 1: return 1				cnt += 1class inter:		def __init__(self):		self.mem = []		self.stack = []		self.ip = 0		self.halt = 0					def get_instr(self, op):		op = op.split(" ")		if op[0][0] == '#': return None		return int(op[0])		def get_arg1(self, op):		op = op.split(" ")		return self.numeric(op[1])		def get_arg2(self, op):		op = op.split(" ")		return self.numeric(op[2])		def numeric(self, expr):		if expr.find('.') == -1:			return int(expr)		return float(expr)		def decode_op(self, op):		opc = self.get_instr(op)		if not opc: return		if opc == 1000:			a = self.stack.pop()			b = self.stack.pop()			self.stack.append(a + b)			return		elif opc == 1001:			a = self.stack.pop()			b = self.stack.pop()			self.stack.append(b - a)			return		elif opc == 1002:			a = self.stack.pop()			b = self.stack.pop()			self.stack.append(a * b)			return		elif opc == 1003:			a = self.stack.pop()			b = self.stack.pop()			self.stack.append(float(b) / a)			return		elif opc == 1004:			a = self.stack.pop()			b = self.stack.pop()			if a == b:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1005:			a = self.stack.pop()			b = self.stack.pop()			if b > a:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1006:			a = self.stack.pop()			b = self.stack.pop()			if a > b:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1007:			a = self.stack.pop()			b = self.stack.pop()			if b >= a:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1008:			a = self.stack.pop()			b = self.stack.pop()			if a >= b:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1009:			a = self.stack.pop()			a -= 1			self.stack.append(a)			return		elif opc == 1010:			a = self.get_arg1(op)			self.stack.append(a)			return		elif opc == 1011:			a = self.get_arg1(op)			b = self.get_arg2(op)			self.mem[a] = b			return		elif opc == 1012:			a = self.get_arg1(op)			self.stack.append(self.mem[a])			return		elif opc == 1013:			a = self.get_arg1(op)			self.mem[a] = self.stack.pop()			return		elif opc == 1014:			a = self.get_arg1(op)			self.ip = a - 2			return		elif opc == 1015:			a = self.stack.pop()			if a:				self.ip = self.get_arg1(op) - 2				return			return		elif opc == 1016:			a = self.stack.pop()			if not a:				self.ip = self.get_arg1(op) - 2				return			return		elif opc == 1017:			return		elif opc == 1018:			self.halt == 1								elif opc == 1019:			print self.stack			return		elif opc == 1020:			a = self.stack.pop()			print a			return		elif opc == 1021:			a = self.stack.pop()			self.stack.append(a)			self.stack.append(a)		def run_script(self, script):		self.ip = 0		script_len = len(script)		while(1):			if self.halt: return			if self.ip == script_len: return			self.decode_op(script[self.ip])			self.ip += 1			vm = inter()f = file('d:/vm1.bpl')script = []while(1):	a = f.readline()	if not a: break	script.append(a)	vm.run_script(script)class inter:		def __init__(self):		self.mem = []		self.stack = []		self.ip = 0		self.halt = 0					def get_instr(self, op):		op = op.split(" ")		if op[0][0] == '#': return None		return int(op[0])		def get_arg1(self, op):		op = op.split(" ")		return self.numeric(op[1])		def get_arg2(self, op):		op = op.split(" ")		return self.numeric(op[2])		def numeric(self, expr):		if expr.find('.') == -1:			return int(expr)		return float(expr)		def decode_op(self, op):		opc = self.get_instr(op)		if not opc: return		if opc == 1000:			a = self.stack.pop()			b = self.stack.pop()			self.stack.append(a + b)			return		elif opc == 1001:			a = self.stack.pop()			b = self.stack.pop()			self.stack.append(b - a)			return		elif opc == 1002:			a = self.stack.pop()			b = self.stack.pop()			self.stack.append(a * b)			return		elif opc == 1003:			a = self.stack.pop()			b = self.stack.pop()			self.stack.append(float(b) / a)			return		elif opc == 1004:			a = self.stack.pop()			b = self.stack.pop()			if a == b:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1005:			a = self.stack.pop()			b = self.stack.pop()			if b > a:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1006:			a = self.stack.pop()			b = self.stack.pop()			if a > b:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1007:			a = self.stack.pop()			b = self.stack.pop()			if b >= a:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1008:			a = self.stack.pop()			b = self.stack.pop()			if a >= b:				self.stack.append(1)				return			self.stack.append(0)			return		elif opc == 1009:			a = self.stack.pop()			a -= 1			self.stack.append(a)			return		elif opc == 1010:			a = self.get_arg1(op)			self.stack.append(a)			return		elif opc == 1011:			a = self.get_arg1(op)			b = self.get_arg2(op)			self.mem[a] = b			return		elif opc == 1012:			a = self.get_arg1(op)			self.stack.append(self.mem[a])			return		elif opc == 1013:			a = self.get_arg1(op)			self.mem[a] = self.stack.pop()			return		elif opc == 1014:			a = self.get_arg1(op)			self.ip = a - 2			return		elif opc == 1015:			a = self.stack.pop()			if a:				self.ip = self.get_arg1(op) - 2				return			return		elif opc == 1016:			a = self.stack.pop()			if not a:				self.ip = self.get_arg1(op) - 2				return			return		elif opc == 1017:			return		elif opc == 1018:			self.halt == 1								elif opc == 1019:			print self.stack			return		elif opc == 1020:			a = self.stack.pop()			print a			return		elif opc == 1021:			a = self.stack.pop()			self.stack.append(a)			self.stack.append(a)		def run_script(self, script):		self.ip = 0		script_len = len(script)		while(1):			if self.halt: return			if self.ip == script_len: return			self.decode_op(script[self.ip])			self.ip += 1			vm = inter()f = file('d:/vm1.bpl')script = []while(1):	a = f.readline()	if not a: break	script.append(a)	vm.run_script(script)