コード例 #1
0
ファイル: map.py プロジェクト: bartlomiej-pluta/smnp-py
def _function1(env, vararg):
    map = {}
    for entry in vararg:
        key, value = entry.value
        map[key] = value

    return Type.map(map)
コード例 #2
0
ファイル: map.py プロジェクト: bartlomiej-pluta/smnp-py
def _function2(env, list):
    map = {}
    for entry in list.value:
        key, value = entry.value
        map[key] = value

    return Type.map(map)
コード例 #3
0
ファイル: sum.py プロジェクト: bartlomiej-pluta/smnp-py
    def mapEvaluator(cls, left, operator, right):
        if operator.value == "+":
            return Type.map({**left.value, **right.value})

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

        raise RuntimeError("This line should never be reached")
コード例 #4
0
ファイル: atom.py プロジェクト: bartlomiej-pluta/smnp-py
    def evaluator(cls, node, environment):
        map = {}
        keyEvaluator = Evaluator.oneOf(
            Evaluator.forNodes(lambda node, environment: EvaluationResult.OK(Type.string(node.value)), Identifier),
            expressionEvaluator(doAssert=True)
        )
        for entry in node.children:
            key = keyEvaluator(entry.key, environment).value
            if key in map:
                raise RuntimeException(f"Duplicated key '{key.stringify()}' found in map", entry.pos)
            map[key] = expressionEvaluator(doAssert=True)(entry.value, environment).value

        return Type.map(map)