Exemplo n.º 1
0
def _evaluate_entity(entity, functions):
    if entity.name == "INTEGRAL_NUMBER":
        return int(entity.value)
    elif entity.name == "REAL_NUMBER":
        return float(entity.value)
    elif entity.name == "CHARACTER":
        return ord(string_utilities.unquote(entity.value))
    elif entity.name == "STRING":
        return string_utilities.make_list_from_string(string_utilities.unquote(entity.value))
    elif entity.name == "IDENTIFIER":
        return trampoline.closure_trampoline(functions[entity.value])
    elif entity.name == "function":
        return _evaluate_function(entity, functions)
    elif entity.name == "call":
        return _evaluate_call(entity, functions)
Exemplo n.º 2
0
def _evaluate_call(call, functions):
    inner_function = _evaluate_entity(call.children[0].children[0].children[0], functions)
    parameters = [_evaluate_entity(parameter, functions) for parameter in call.children[1].children]
    return trampoline.closure_trampoline(inner_function(*parameters))