Exemplo n.º 1
0
    def listEvaluator(cls, left, operator, right):
        if operator.value == "+":
            return Type.list(left.value + right.value)

        if operator.value == "-":
            raise RuntimeException(
                f"Operator {operator.value} is not supported by list types",
                operator.pos)

        raise RuntimeError("This line should never be reached")
Exemplo n.º 2
0
    def check(args):
        if any(
            [matcher.optional
             for matcher in [varargMatcher, *basicSignature]]):
            raise RuntimeError(
                "Vararg signature can't have optional arguments")

        if len(basicSignature) > len(args):
            return doesNotMatchVararg(basicSignature)

        for i in range(len(basicSignature)):
            if not basicSignature[i].match(args[i]):
                return doesNotMatchVararg(basicSignature)

        for i in range(len(basicSignature), len(args)):
            if not varargMatcher.match(args[i]):
                return doesNotMatchVararg(basicSignature)

        if wrapVarargInValue:
            return True, (*args[:len(basicSignature)]), Type.list(
                args[len(basicSignature):])
        else:
            return True, (
                *args[:len(basicSignature)]), args[len(basicSignature):]
Exemplo n.º 3
0
    def evaluator(cls, node, environment):
        iterator = expressionEvaluator(doAssert=True)(node.left,
                                                      environment).value
        parameters = [identifier.value for identifier in node.parameters
                      ] if type(node.parameters) != NoneNode() else []

        try:
            environment.appendScope()

            output = {
                Type.INTEGER: cls.numberEvaluator,
                Type.BOOL: cls.boolEvaluator,
                Type.LIST: cls.listEvaluator,
                Type.MAP: cls.mapEvaluator
            }[iterator.type](node, environment, iterator, parameters,
                             node.filter)

            environment.popScope()
        except KeyError:
            raise RuntimeException(
                f"The {iterator.type.name.lower()} type cannot stand as an iterator for loop statement",
                node.left.pos)

        return Type.list(output)
Exemplo n.º 4
0
 def evaluator(cls, node, environment):
     list = abstractIterableEvaluator(expressionEvaluator(doAssert=True))(node, environment)
     return Type.list(list)
Exemplo n.º 5
0
def _function(env, signal):
    raw = [x.value for x in signal.value]
    N = len(raw)
    fft = np.fft.fft(raw) / N
    fft = fft[range(int(N / 2))]
    return Type.list([Type.float(float(abs(x))) for x in fft])
Exemplo n.º 6
0
 def evaluateForList(cls, value):
     return Type.list(value[::-1])
Exemplo n.º 7
0
def _function4(env, config, notes):
    return Type.list([ Type.float(float(m)) for m in __function4(config, notes) ])
Exemplo n.º 8
0
def _function2(env, notes):
    return Type.list([Type.float(float(m)) for m in __function2(notes)])