Exemple #1
0
    def calculate(self, vars_value):
        """Function returns the result of the equation."""
        tokens = copy.deepcopy(self.token_list)
        variable = self.var_value(vars_value)
        parser = Parser(self.token_list, variable)
        tree = parser.parse()

        interpreter = Interpreter()
        value = interpreter.visit(tree)
        self.token_list = tokens

        return value.value
Exemple #2
0
    ctx.symbol_table = symb_table

    while (True):
        line = input('cassian: ')

        if (line == ':q'):
            break
        elif (line == 'st'):
            print(ctx.symbol_table)
            continue
        elif (line == 'cls'):
            ctx.restart(['null', 'false', 'true'])
            continue

        tokens, error = lex.scanner('<stdin>', line)

        if (error):
            print(error)
        else:
            # print(tokens)
            ast = par.parse(tokens)
            if (ast.error):
                print(ast.error)
            else:
                # print(type(ast.node).__name__)
                res = inter.visit(ast.node, ctx)

                if (res.error):
                    print(res.error)
                elif (res.value):
                    print(res.value)