我正在研究一种软件,该软件通过用户从GUI通过一组输入(方法和变量)生成通用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 ++。
我想到的策略 -
实施导入功能的最佳策略是什么?