예제 #1
0
파일: Pharser.py 프로젝트: TeguhP7/CS
    def comp_expr(self):
        res = ParseResult()

        if self.current_tok.matches(Lexer.TT_KEYWORD, 'Tak_dapat'):
            op_tok = self.current_tok
            res.register_advancement()
            self.advance()

            node = res.register(self.comp_expr())
            if res.error: return res
            return res.success(Lexer.UnaryOpNode(op_tok, node))

        node = res.register(
            self.bin_op(self.arith_expr,
                        (Lexer.TT_EE, Lexer.TT_NE, Lexer.TT_LT, Lexer.TT_GT,
                         Lexer.TT_LTE, Lexer.TT_GTE)))

        if res.error:
            return res.failure(
                Lexer.InvalidSyntaxError(
                    self.current_tok.pos_start, self.current_tok.pos_end,
                    "Mengharapkan seperti (senja kala itu) int, float, identifier, '+', '-', '(', '[', 'Ketika_nada', 'Untuk_kita', 'Sedangkan', 'Fungsi' or 'Tak_dapat'"
                ))

        return res.success(node)
예제 #2
0
파일: Pharser.py 프로젝트: TeguhP7/CS
    def factor(self):
        res = ParseResult()
        tok = self.current_tok

        if tok.type in (Lexer.TT_PLUS, Lexer.TT_MINUS):
            res.register_advancement()
            self.advance()
            factor = res.register(self.factor())
            if res.error: return res
            return res.success(Lexer.UnaryOpNode(tok, factor))

        return self.power()