के साथ फ़ंक्शंस का कार्यान्वयन मैं कुछ समय के लिए अजगर के साथ खेल रहा हूं और पाइथन में एक कस्टम स्क्रिप्ट हैंडलर लिखकर प्रोग्रामिंग भाषाओं की मेरी सामान्यीकृत समझ को बेहतर बनाने का फैसला किया है। मैंने अभी तक एक बुनियादी मेमोरी हैंडलर को सफलतापूर्वक कार्यान्वित किया है और स्क्रीन पर प्रिंट करने के लिए एक मेमोरी एड्रेस समन्वयित किया है। मेरा प्रश्न इस प्रकार से देखा जा सकता है:बहुत बुनियादी स्क्रिप्टिंग
यहां कैसे कार्यान्वित किए जा सकते हैं? एक गोटो स्टेटमेंट बहुत आसान है, मैं कुछ और कठिन कोशिश करना चाहता हूं। (मूर्ख हाँ?) ...
f0(x, y, z):=ax^by^cz
एक खोल कि एक स्क्रिप्ट है कि इस मॉड्यूल चलाता चलाता में
# notes: separate addresses from data lest the loop of doom cometh
class Interpreter:
def __init__(self):
self.memory = { }
self.dictionary = {"mov" : self.mov,
"put" : self.put,
"add" : self.add,
"sub" : self.sub,
"clr" : self.clr,
"cpy" : self.cpy,
"ref" : self.ref }
self.hooks = {self.val("0") : self.out }
def interpret(self, line):
x = line.split(" ")
vals = tuple(self.val(y) for y in x[1:])
dereferenced = []
keys_only = tuple(key for key in self.memory)
for val in vals:
while val in self.memory: val = self.memory[val]
dereferenced.append(val)
vals = tuple(y for y in dereferenced)
self.dictionary[x[0]](vals)
def val(self, x):
return tuple(int(y) for y in str(x).split("."))
def mov(self, value):
self.ptr = value[0]
def put(self, value):
self.memory[self.ptr] = value[0]
def clr(self, value):
if self.ptr in self.hooks and self.ptr in self.memory:
x = self.hooks[self.ptr]
y = self.memory[self.ptr]
for z in y: x(z)
del self.memory[self.ptr]
def add(self, values):
self.put(self.mat(values, lambda x, y: x + y))
def sub(self, values):
self.put(self.mat(values, lambda x, y: x - y))
def mat(self, values, op):
a, b = self.memory[values[0]], self.memory[values[1]]
if len(a) > len(b): a, b = b, a
c = [op(a[x], b[x]) for x in xrange(len(b))] + [x for x in a[len(a):]]
return [tuple(x for x in c)]
def cpy(self, value):
self.put(value)
def out(self, x):
print chr(x),
def ref(self, x):
self.put(x)
interp = Interpreter()
for x in file(__file__.split('/')[-1].split(".")[-2] + ".why"):
interp.interpret(x.strip())
एक नमूना स्क्रिप्ट: (संपादित करें) आखिरकार मैं ऐसा करने में सक्षम होना चाहता हूँ:
mov 1
put 104.101.108.108.111.10
mov 0
ref 1
clr 0
(संपादित करें) मैंने इस प्रयास को प्रेरणा के रूप में उपयोग करने और इस परियोजना पर खरोंच से शुरू करने का निर्णय लिया है। (उम्मीद है कि कक्षाओं को फिर से शुरू करने से पहले मुझे बैठने और कोड करने के लिए कुछ वास्तविक समय मिलेगा।)
मैं कुछ दिनों में
में सर्वश्रेष्ठ उत्तर देने का इरादा रखता हूं। मुझे उम्मीद है कि वह जानकारी संभावित योगदानकर्ताओं को इस तरह की कोडिंग समस्या के लिए सहायक होने के लिए कुछ भी प्रस्तुत करने से रोकने में विफल रही है।
मुझे लगता है कि आपको "बुनियादी इनपुट/आउटपुट फ़ंक्शंस" अधिक विशिष्ट होने की आवश्यकता है, लेकिन मूल रूप से ऐसा लगता है कि आप ऐसा कुछ भी कर सकते हैं जैसा आपने सबकुछ किया है ... यानी। अपने दुभाषिया को एक या अधिक आदेश जोड़ें। – martineau
मैंने उस प्रश्न को एक बेहतर (अधिक विशिष्ट) के साथ बदल दिया। – motoku
@ सेन पेडरसन यह जवाब देना आसान होगा यदि आप दिखाते हैं कि यह कैसे व्यवहार करना चाहिए (कुछ वास्तविक-क्रिया परीक्षण, पास या असफल)। – DrTyrsa