import sys import string def Extract_RightSide_From_FileLines( FileLines ) : RightSideList = [] for eachline in FileLines : if( IsExistOnlyOneEqual( eachline ) == True ) : RightSideValue = RightSideOfEqual( eachline ) RightSideList.append( RightSideValue ) return RightSideList def Extract_LeftSide_From_FileLines( FileLines ) : LeftSideList = [] for eachline in FileLines : if( IsExistOnlyOneEqual( eachline ) == True ) : LeftSideValue = LeftSideOfEqual( eachline ) LeftSideList.append( LeftSideValue ) return LeftSideList def IsExistOnlyOneEqual( strLine ) : strLine = RemoveLuaComment( strLine ) find_pos = strLine.find( '=', 0 ) if( find_pos == -1 ) : return False find_pos = strLine.find( '=', find_pos + 1 ) if( find_pos == -1 ) : return True return False def RemoveLuaComment( strLine ) : find_pos = strLine.find( '--', 0 ) if( find_pos != -1 ) : return strLine[0 : find_pos].strip() return strLine.strip() def LeftSideOfEqual( strLine ) : strLine = RemoveLuaComment( strLine ) find_pos = strLine.find( '=', 0 ) if( find_pos != -1 ) : return strLine[0 : find_pos].strip() return strLine.strip() def RightSideOfEqual( strLine ) : strLine = RemoveLuaComment( strLine ) find_pos = strLine.find( '=', 0 ) if( find_pos != -1 ) : return strLine[find_pos + 1 : len(strLine)].strip() return strLine.strip() def Extract_Alparbet_Number_UnderBar( strLine ) : strAlparbet_Number_UnderBar = string.letters + string.digits + '_' strList = [] for OneWord in strLine : if( OneWord in strAlparbet_Number_UnderBar ) : strList.append( OneWord ) strTemp = ''.join( strList ) return strTemp def RefTypeMaching( strStartKeyword, nLineNumber, strSourceLine, strRefTypeList ) : strSourceTempList = strSourceLine.split() for eachSource in strSourceTempList : strExtractedSource = Extract_Alparbet_Number_UnderBar( eachSource ) if( strExtractedSource.startswith( strStartKeyword ) == True ) : if( strExtractedSource not in strRefTypeList ) : print 'RefType Mismatch. LineNumber : ' + str( nLineNumber ) + ', Source String : ' + strExtractedSource def main(argv) : Reference_file = argv[1] Programed_file = argv[2] # Reference File Loading(RefTypeList) Ref_fstream = open( Reference_file, 'r' ) RefFileList = Ref_fstream.xreadlines() RefTypeList = Extract_LeftSide_From_FileLines( RefFileList ) Ref_fstream.close() # Programed File Loading(ProgramFileList) Programed_fstream = open( Programed_file, 'r' ) ProgramFileList = Programed_fstream.readlines() Programed_fstream.close() # Print Type Check print '---------------------------------------------------------' print 'Start Type Check. File Name : ' + str( argv[2] ) print '---------------------------------------------------------' for i, eachProgramLine in enumerate( ProgramFileList ) : strRemovedComment = RemoveLuaComment( eachProgramLine ) RefTypeMaching( 'Item_', i + 1, strRemovedComment, RefTypeList ) print '---------------------------------------------------------' if __name__ == "__main__" : main(argv=sys.argv)
[Python] Lua Reference Type Checker
프로그래밍/Python
2010/02/11 16:56
덧글을 달아 주세요