import MathMethod import binascii import tools import shlex import json import fio import re import os def is_in(json,key): if key in json: return True else: return False def is_kin(list,index): if 0 <= index < len(list): return True else: return False #基本读取 read=fio.openr("./PyBase.psm") pybasecode=binascii.hexlify(read.encode('utf-8')) _IStart={"VERSION":"3.7.5","MAIN":".MAIN"} #获取所有头内容(.Start) _=MathMethod.GetFlatDivision(read,"[END_HIT]",0) _=MathMethod.GetCarriageSpacesSmooth(_) _=MathMethod.GetBeforeAfterRuleLookup(_,"[","]") _Start=MathMethod.GetRulesConvertedToJson(_,"[","]") if is_in(_Start,"STATED"): if is_kin(_Start["STATED"],0): if _Start["STATED"][0].lower() == "pybase": pass else: print("- * - Error: [STATED] isn't pybase") os._exit(0) else: print("- * - Error: [STATED] isn't be ") os._exit(0) else: print("- * - Error: There is no [STATED]") os._exit(0) if is_in(_Start,"VERSION"): if is_kin(_Start["VERSION"],0): if len(_Start["VERSION"][0]) <= 10: _IStart["VERSION"]=_Start["VERSION"][0] else: print("- * - Warning: [VERSION] len() > 10") else: print("- * - Warning: [VERSION] isn't be ") else: print("- * - Warning: There is no [VERSION]") if is_in(_Start,"MAIN"): if is_kin(_Start["MAIN"],0): _IStart["MAIN"]=_Start["MAIN"][0] print("- * - InFo: [MAIN] .MAIN -> "+_Start["MAIN"][0]) else: print("- * - Warning: [MAIN] isn't be (Use .MAIN)") else: print("- * - Warning: There is no [MAIN](Use .MAIN)") #获取所有代码内容(.Code) _=MathMethod.GetFlatDivision(read,"[END_HIT]",1,lambda x:x,"") _Code=MathMethod.AssemblyToJson(_,MakeRules=lambda x:MathMethod.GetRulesConvertedToJson2(x)) #编译(甚至不需要分析意思) _Base=bytes() _Base+=bytes.fromhex("0020"*2+"507942617365"+"AA"*5+"00") _Base+=bytes.fromhex("5468697320697320612070726F6772616D20746861742063616E206265206C61756E63686564206279205079426173650A") _Base+=bytes.fromhex(binascii.hexlify(_IStart["VERSION"].rjust(10).encode()).decode()) _Base+=bytes.fromhex(binascii.hexlify(tools.CBDS(str(_Code))).decode()) fio.openw("./PyBase.Bin",_Base,2)