def has(self, name): stack, dictionary = self.world.getCurrentState() try: get(dictionary, name) except KeyError: return False return True
def interpret(I, command): ''' Given an interpreter and a string command, interpret that string on the interpreter and return the modified interpreter. ''' for word in command: # Is it an integer? try: literal = int(word) except ValueError: # Is it a float? try: literal = float(word) except ValueError: # Is it a string literal? if word.startswith('"') and word.endswith('"'): literal = word[1:-1] # Nope, it must be a command word. else: # Interpret the word. func = get(I[1], word) I = apply_func(I, func) continue # A literal was found, push it onto the stack. I = (literal, I[0]), I[1] return I
def lookup(interpreter): ''' Given a name on the top of the stack, look up the named command in the dictionary and put it on the stack in place of the name. ''' (name, stack), dictionary = interpreter word = get(dictionary, name) return (word, stack), dictionary