def argCheck(self, tree): flist = tree.value # For needs at least 3 arguments. if (len(flist)<3): raise lce.NumberArgumentsException("2 or more", len(flist) - 1) # Check that loop arguments are correct. loop_args = flist[1] if not isinstance(loop_args, lexerParser.LCadExpression): raise lce.LCadException("first argument in for() must be a list.") # Check for the right number of arguments. loop_args = loop_args.value if (len(loop_args) < 2): raise lce.NumberArgumentsException("2,3 or 4", len(loop_args)) elif (len(loop_args) > 4): raise lce.NumberArgumentsException("2,3 or 4", len(loop_args)) # Check for correct type of loop variable. if not isinstance(loop_args[0], lexerParser.LCadSymbol): raise lce.LCadException("loop variable must be a symbol.") # Create loop variable. inc_name = loop_args[0].value interp.checkOverride(tree.lenv, inc_name) tree.lenv.symbols[inc_name] = interp.Symbol(inc_name, tree.filename) tree.initialized = True
def argCheck(self, tree): # def needs at least 3 arguments. if (len(tree.value)<3): raise lce.NumberArgumentsException("2 or more", len(tree.value) - 1) # Check for the right number of arguments (4 for a function, # a multiple of 2 for variables). if (len(tree.value)!=4) and ((len(tree.value)%2)!=1): raise lce.NumberArgumentsException("an even number of arguments", len(tree.value) - 1)
def argCheck(self, tree): args = tree.value[1:] if self.has_keyword_args or self.has_optional_args: if (len(args) < self.minimum_args): raise lce.NumberArgumentsException( "at least " + str(self.minimum_args), len(args)) else: if (len(args) != self.minimum_args): raise lce.NumberArgumentsException( "exactly " + str(self.minimum_args), len(args)) tree.initialized = True
def call(self, model, *args, **kwargs): # Check argument count. if (len(args) != self.minimum_args): raise lce.NumberArgumentsException(self.minimum_args, len(args)) # Fill in arguments. for i in range(len(args)): self.lenv.symbols[self.arg_names[i]].setv(args[i]) if self.has_keyword_args: for key in kwargs.keys(): self.lenv.symbols[key].setv(kwargs[key]) # Evaluate function. return interpret(model, self.body)
def argCheck(self, tree): if (len(tree.value)<3): raise lce.NumberArgumentsException("2+", len(tree.value) - 1) tree.initialized = True
def argCheck(self, tree): flist = tree.value if (len(flist) < 3) or ((len(flist[1:])%2) != 0): raise lce.NumberArgumentsException("A multiple of 2", len(flist[1:])) tree.initialized = True
def argCheck(self, tree): # Import needs at least 1 arguments. if (len(tree.value)<2): raise lce.NumberArgumentsException("1 or more", len(tree.value) - 1)
def argCheck(self, tree): if (len(tree.value) != 3) and (len(tree.value) != 4): raise lce.NumberArgumentsException("2 or 3", len(tree.value) - 1) tree.initialized = True