Re: Forth
Verfasst: Mittwoch 16. August 2017, 08:27
Dann hätte ich die beiden vielleicht doch in einem Thema belassen sollen.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
import sys
class Interpreter:
def __init__(self, code, functions=None):
self.code = code
self.functions = functions
self.ip = 0
self.running = False
self.stack = []
self.returnstack = []
self.loopstack = []
def next_code(self):
self.ip += 1
return self.code[self.ip - 1]
def run(self):
self.running = True
while self.running:
try:
command = self.next_code()
except IndexError:
if not self.returnstack:
break
self.code, self.ip = self.returnstack.pop()
else:
getattr(self, 'cmd_' + command)()
def cmd_abort(self):
self.running = False
def cmd_semis(self):
self.code, self.ip = self.returnstack.pop()
def cmd_lit(self):
self.stack.append(self.next_code())
def cmd_output(self):
sys.stdout.write('{}'.format(self.stack.pop()))
def cmd_emit(self):
sys.stdout.write(chr(self.stack.pop()))
def cmd_do(self):
self.loopstack.append([self.stack.pop(), self.stack.pop(), self.ip])
def cmd_i(self):
self.stack.append(self.loopstack[-1][0])
def cmd_loop(self):
self.loopstack[-1][0] += 1
cur, end, ip = self.loopstack[-1]
if cur < end:
self.ip = ip
else:
self.loopstack.pop()
def cmd_call(self):
function = self.functions[self.next_code()]
self.returnstack.append((self.code, self.ip))
self.code = function
self.ip = 0
code_nl = ('lit','\n','output','semis')
code = ('lit',96,'lit',65,'do','i','output','lit',' ','output','i','emit','call', 'nl', 'loop','abort')
interpreter = Interpreter(code, {'nl': code_nl})
interpreter.run()
Code: Alles auswählen
def cmd_output(self):
sys.stdout.write('{}'.format(self.stack.pop()))
Aus einem anderem Thread geht hervor, das jan.b einen Raspi hat. Bei Raspi-Neulingen und auch Nutzern ist die Motivation, Python vernünftig zu lernen, gerne eher gering. Sieht man auch immer wieder in diversen Threads im deutschen Raspi-Forum...Entweder Troll oder er ist noch sehr jung, dass er so komisch schreibt.
*fg* Ich bin auch für einen VaterschaftstestVielleicht ist er auch das Kind von Alfons Mittelmeyer.