DEV Community

loading...

Lets build a simple interpreter from scratch in python, pt.04: Comparison functions

smadev profile image sma ・Updated on ・1 min read

In this post we are adding comparison functions to our interpreter:

class Interpreter:

    # .... previous code ....

    def Lt(self,xs):
        return self.eval(xs[1]) < self.eval(xs[2])
    def Gt(self,xs):
        return self.eval(xs[1]) > self.eval(xs[2])
    def Lte(self,xs):
        return not self.Gt(xs)
    def Gte(self,xs):
        return not self.Lt(xs)
    def Eq(self,xs):
        return self.eval(xs[1]) == self.eval(xs[2])
    def NotEq(self,xs):
        return not self.Eq(xs)

code=[

    ["If",["Lte",3,5],
       ["Print","3 <= 5"],
       ["Print","3 > 5"]   
    ],

    ["If",["NotEq",3,5],
       ["Print","3 != 5"],
       ["Print","3 == 5"]   
    ]   
]

interpreter=Interpreter()

interpreter.run(code)
Enter fullscreen mode Exit fullscreen mode

Output:

3 <= 5
3 != 5
Enter fullscreen mode Exit fullscreen mode

Links: Patreon Twitter

Part 5: Variables

Discussion (0)

pic
Editor guide