Beispiel #1
0
 def get_numeric_vector_size(cls, variable: VariableSymbol) -> int:
     """
     Returns the numerical size of the vector by resolving any variable used as a size parameter in declaration
     :param variable: vector variable
     :return: the size of the vector as a numerical value
     """
     vector_parameter = variable.get_vector_parameter()
     vector_variable = ASTVariable(vector_parameter, scope=variable.get_corresponding_scope())
     symbol = vector_variable.get_scope().resolve_to_symbol(vector_variable.get_complete_name(), SymbolKind.VARIABLE)
     if symbol is not None:
         # vector size is a variable. Get the value from RHS
         return symbol.get_declaring_expression().get_numeric_literal()
     return int(vector_parameter)
Beispiel #2
0
    def print_vector_size_parameter(self, variable: VariableSymbol) -> str:
        """
        Prints NEST compatible vector size parameter
        :param variable: Vector variable
        :return: vector size parameter
        """
        vector_parameter = variable.get_vector_parameter()
        vector_parameter_var = ASTVariable(
            vector_parameter, scope=variable.get_corresponding_scope())
        symbol = vector_parameter_var.get_scope().resolve_to_symbol(
            vector_parameter_var.get_complete_name(), SymbolKind.VARIABLE)
        vector_param = ""
        if symbol is not None:
            # size parameter is a variable
            vector_param += self.print_origin(symbol) + vector_parameter
        else:
            # size parameter is an integer
            vector_param += vector_parameter

        return vector_param