#获得格式化后python能执行的字符串
def getPYExecStr(self, strs):
if strs.find('if' + self.marked) != -1:
strs = strs[strs.find('if' + self.marked):]
backStr = ''
struct = ''
lineSpace = ' '
gradeNum = 0
isFirstStr = True
lines = strs.splitlines()
for li in lines:
li = li.strip()
if li.startswith('if' + self.marked):
backStr = self.__addStrToBackStr(struct, gradeNum, lineSpace, backStr)
isFirstStr = True
backStr += gradeNum * lineSpace + li.replace(self.marked, '') + ':' + os.linesep
gradeNum += 1
elif li.startswith('elif' + self.marked):
backStr = self.__addStrToBackStr(struct, gradeNum, lineSpace, backStr)
isFirstStr = True
backStr += (gradeNum - 1) * lineSpace + li.replace(self.marked, '') + ':' + os.linesep
elif li.startswith('else' + self.marked):
backStr = self.__addStrToBackStr(struct, gradeNum, lineSpace, backStr)
isFirstStr = True
backStr += (gradeNum - 1) * lineSpace + li.replace(self.marked, '') + ':' + os.linesep
elif li.startswith('endif' + self.marked):
backStr = self.__addStrToBackStr(struct, gradeNum, lineSpace, backStr)
isFirstStr = True
gradeNum -= 1
else:
if isFirstStr:
struct = ''
struct += "self.structStr = \"" + li + "os.linesep"
isFirstStr = False
else:
struct += li + "os.linesep"
backStr = self.__addStrToBackStr(struct, gradeNum, lineSpace, backStr)
return backStr
#添加字符串到BackStr中(私有方法)
def __addStrToBackStr(self, struct, gradeNum, lineSpace, backStr):
if struct:
struct = struct[:struct.rfind('os.linesep')]
backStr += gradeNum * lineSpace + struct + '"' + os.linesep
return backStr
self.marked = '$'
本文介绍了一个Python程序,该程序能够将特定标记的条件语句转换为格式化的、可执行的Python代码。通过解析输入字符串,程序可以识别并转换if、elif、else等语句,并正确地处理缩进。
771

被折叠的 条评论
为什么被折叠?



