Beispiel #1
0
    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
Beispiel #2
0
    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)
Beispiel #3
0
 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
Beispiel #4
0
    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)
Beispiel #5
0
 def argCheck(self, tree):
     if (len(tree.value)<3):
         raise lce.NumberArgumentsException("2+", len(tree.value) - 1)
     tree.initialized = True
Beispiel #6
0
 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
Beispiel #7
0
    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)
Beispiel #8
0
 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