Exemplo n.º 1
0
def _test_eval(input: str) -> object.Object:
    l = lexer.Lexer(input)
    p = parser.Parser(l)
    program = p.parse_program()
    env = object.Environment()

    return evaluator.eval(program, env)
Exemplo n.º 2
0
def extend_function_env(fun: object.Function, arguments: List[ast.Expression]):
    env = object.Environment(outer=fun.env)
    # what about "let x =10; let identity = fn(x){ return x}; fn();"
    # in the above example x should be NULL
    for idx, param in enumerate(fun.parameters):
        env.set(param.value, arguments[idx])
    return env
Exemplo n.º 3
0
def start():
    env = object.Environment()
    while True:
        line = input(prompt)
        l = Lexer(line)
        p = Parser(l)
        program = p.parse_program()
        val = evaluator.eval(program, env)
        print(val)
Exemplo n.º 4
0
def start():
    env = object.Environment()

    while True:
        line = input(PROMPT)
        if not line:
            return

        l = lexer.Lexer(line)
        p = parser.Parser(l)

        program = p.parse_program()
        if len(p.errors) != 0:
            print_parse_errors(p.errors)
            continue

        evaluated = evaluator.eval(program, env)
        if evaluated is not None:
            print(evaluated.inspect())
Exemplo n.º 5
0
def eval_test(input):
    l = lexer.Lexer(input)
    p = parser.Parser(l)
    program = p.parse_program()
    return evaluator.eval(program, object.Environment())