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)
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