Как создать импортированный код с конфликтующими именами методов и переменных? - PullRequest
0 голосов
/ 09 июня 2018

Я работаю над программным обеспечением, которое генерирует общий исходный код Python через набор входных данных (методов и переменных) пользователя из графического интерфейса.Источник также может быть сохранен в XML с тегами и.Теперь мне нужно реализовать функцию импорта через XML.При импорте пользователь выбирает новый XML, и все функции и переменные в XML должны быть добавлены к сгенерированному источнику.Пример - структура XML:

<functions>
def detect_obstacle(self):
    laserData = self.laser_scan
    for val in laserData.ranges:
        if val < 100:
            self.is_obstacle = True
            return
    self.is_obstacle = False
</functions>

<variables>
self.is_obstacle = False
</variables>

<interfaces>
LaserScan
</interfaces>

Сгенерированный код -

from codegen import State

class Node():
    def __init__(self):
        self.is_obstacle = False
        self.laserScan = (Updates from a server thorugh a callback)

    def detect_obstacle(self):
        laserData = self.laserScan
        for val in laserData.ranges:
            if val < 100:
                self.is_obstacle = True
                return
        self.is_obstacle = False

class State0(State):
    def __init__(self, id, node):
        State.__init__(self, id)
        self.Node = node

    def runCode(self):
        if self.Node.calculate_obstacle():
            return True

if __name__ == "__main__":
    node = Node()
    state0 = State0(0, node)

При импорте XML может иметь -

  • похожее имя методов и переменных
  • похожие имена методов, но разные аргументы.

Следовательно, после импорта и генерации кода в сгенерированном коде может возникнуть неоднозначность.Текущая реализация предназначена для Python, и далее я бы расширил ее и на C ++.

Стратегии, о которых я думал -

  1. Имя искажения
  2. Отдельное пространство имен или класс для каждого нового импорта.

Что лучшестратегия для реализации функции импорта?

...