Пример #1
0
    def equ_numstr(self):
        """( y x -- y=x? )
        push 1 if a number is equal to the sum of the characters in a string"""
        y, x = self.popn()
        if allof(isstr(y), isnum(x)):
            self.push(CatClutter.bool2int(x == CatClutter.strsum(y)))

        elif allof(isnum(y), isstr(x)):
            self.push(CatClutter.bool2int(y == CatClutter.strsum(x)))

        else:
            CatLogger.Crit("unexpected types for equ_numstr")
Пример #2
0
 def get_until_not(self):
     """( -- y )
     read stdin until !char"""
     x = self.pop()
     if isnone(x):
         return
     elif isnum(x):
         x = chr(x)
     elif isstr(x):
         x = x[0]
     else:
         CatLogger.Crit("bad type for get_until_not; ignoring")
         return
     from input_constrain import until_not
     self.push(until_not(x))
Пример #3
0
 def get_until(self):
     """( x -- y )
     get stdin until the character with codepoint x is read, pushing to y"""
     x = self.pop()
     if isnone(x):
         return
     elif isnum(x):
         x = chr(x)
     elif isstr(x):
         x = x[0]
     else:
         CatLogger.Crit("bad type for get_until_not; ignoring")
         return
     from input_constrain import until
     self.push(until(x))