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
def __init__(self, ctx: ParserRuleContext): self.evalException("Illegal expression: " + ctx.getText(), ctx)