python, pt.03: If/Else에서 처음부터 간단한 인터프리터를 구축할 수 있습니다.

한입 크기의 포스팅은 계속됩니다. 이 게시물에서는 If 키워드를 구현하고 있습니다.

class Interpreter:

    # ... previous code ...

    def If(self,xs):
        _, cond, trueblock, falseblock = xs
        if self.eval(cond):
            if isinstance(trueblock[0],list):
                for x in trueblock:
                    self.eval(x)
            else:
                self.eval(trueblock)
        else:
            if falseblock:
                if isinstance(falseblock[0],list):
                    for x in falseblock:
                        self.eval(x)
                else:
                    self.eval(falseblock)
code=[

    ["If",True,
       # True block, 3 statements
       [["Print","answer is 42"],
        ["Print","that is 21*2"],
        ["Print","that is just an ordinary number"]],

       # False block
       ["Print","answer is something else"]   
    ],

    ["Print",["Mul","-",42]],

    ["If",False,
       ["Print","answer is 42"],
       ["Print","answer is something else"]   
    ]   
]

interpreter=Interpreter()

interpreter.run(code)

산출:

answer is 42
that is 21*2
that is just an ordinary number
------------------------------------------
answer is something else

Patreon에서 저를 지원하십시오
팔로우 및 공유
미리 감사드립니다. 다음 포스팅에서 뵙겠습니다.

좋은 웹페이지 즐겨찾기