コード例 #1
0
ファイル: Visitor.py プロジェクト: theQRL/silicon
    def setAtIndex(self, ctx: ParserRuleContext, indexes: list,
                   val: SiliconValue, newVal: SiliconValue):
        if not val.isList():
            raise Exception('setAtIndex Exception' + ctx.getText())

        for i in range(len(indexes) - 1):
            idx = self.visit(indexes[i])
            if not idx.isNumber:
                raise Exception('setAtIndex Exception: Not a number' +
                                ctx.getText())
            val = val.asList()[int(idx.asDouble())]

        idx = self.visit(indexes[len(indexes) - 1])
        if not idx.isNumber():
            raise Exception('setAtIndex Exception: Not a number ' +
                            ctx.getText())

        val.asList()[int(idx.asDouble())] = newVal
コード例 #2
0
ファイル: Visitor.py プロジェクト: theQRL/silicon
    def resolveIndexes(self, val, indexes):
        for ec in indexes:
            idx = self.visit(ec)
            if not idx.isNumber() or (not val.isList() and not val.isString()):
                raise Exception("resolveIndexes Exception")

            i = idx.asDouble().intValue()
            if val.isString():
                val = SiliconValue(val.asString()[i, i + 1])
            else:
                val = val.asList()[i]

        return val