]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/UPT/Library/UniClassObject.py
BaseTools: Use absolute import in UPT
[mirror_edk2.git] / BaseTools / Source / Python / UPT / Library / UniClassObject.py
index 0014a7561ba88b1b02b735ecc04ba2b334571f0c..670cf3b4eeac19a9f945f06c575b593eed6463d0 100644 (file)
@@ -3,9 +3,9 @@
 #\r
 # Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>\r
 #\r
-# This program and the accompanying materials are licensed and made available \r
-# under the terms and conditions of the BSD License which accompanies this \r
-# distribution. The full text of the license may be found at \r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution. The full text of the license may be found at\r
 # http://opensource.org/licenses/bsd-license.php\r
 #\r
 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
@@ -14,6 +14,7 @@
 """\r
 Collect all defined strings in multiple uni files\r
 """\r
+from __future__ import print_function\r
 \r
 ##\r
 # Import Modules\r
@@ -23,7 +24,7 @@ import distutils.util
 from Logger import ToolError\r
 from Logger import Log as EdkLogger\r
 from Logger import StringTable as ST\r
-from Library.String import GetLineNo\r
+from Library.StringUtils import GetLineNo\r
 from Library.Misc import PathClass\r
 from Library.Misc import GetCharIndexOutStr\r
 from Library import DataType as DT\r
@@ -147,9 +148,9 @@ def GetLanguageCode1766(LangName, File=None):
         if LangName.isalpha() and gLANG_CONV_TABLE.get(LangName.lower()):\r
             return LangName\r
         else:\r
-            EdkLogger.Error("Unicode File Parser", \r
+            EdkLogger.Error("Unicode File Parser",\r
                              ToolError.FORMAT_INVALID,\r
-                             "Invalid RFC 1766 language code : %s" % LangName, \r
+                             "Invalid RFC 1766 language code : %s" % LangName,\r
                              File)\r
     elif length == 5:\r
         if LangName[0:2].isalpha() and LangName[2] == '-':\r
@@ -161,16 +162,16 @@ def GetLanguageCode1766(LangName, File=None):
             for Key in gLANG_CONV_TABLE.keys():\r
                 if gLANG_CONV_TABLE.get(Key) == LangName[0:2].lower():\r
                     return Key\r
-        if LangName[0:3].isalpha() and gLANG_CONV_TABLE.get(LangName.lower()) == None and LangName[3] == '-':\r
+        if LangName[0:3].isalpha() and gLANG_CONV_TABLE.get(LangName.lower()) is None and LangName[3] == '-':\r
             for Key in gLANG_CONV_TABLE.keys():\r
                 if Key == LangName[0:3].lower():\r
                     return Key\r
 \r
-    EdkLogger.Error("Unicode File Parser", \r
+    EdkLogger.Error("Unicode File Parser",\r
                              ToolError.FORMAT_INVALID,\r
-                             "Invalid RFC 4646 language code : %s" % LangName, \r
+                             "Invalid RFC 4646 language code : %s" % LangName,\r
                              File)\r
-    \r
+\r
 ## GetLanguageCode\r
 #\r
 # Check the language code read from .UNI file and convert RFC 1766 codes to RFC 4646 codes if appropriate\r
@@ -186,13 +187,13 @@ def GetLanguageCode(LangName, IsCompatibleMode, File):
     if IsCompatibleMode:\r
         if length == 3 and LangName.isalpha():\r
             TempLangName = gLANG_CONV_TABLE.get(LangName.lower())\r
-            if TempLangName != None:\r
+            if TempLangName is not None:\r
                 return TempLangName\r
             return LangName\r
         else:\r
-            EdkLogger.Error("Unicode File Parser", \r
+            EdkLogger.Error("Unicode File Parser",\r
                              ToolError.FORMAT_INVALID,\r
-                             "Invalid RFC 1766 language code : %s" % LangName, \r
+                             "Invalid RFC 1766 language code : %s" % LangName,\r
                              File)\r
     if (LangName[0] == 'X' or LangName[0] == 'x') and LangName[1] == '-':\r
         return LangName\r
@@ -200,7 +201,7 @@ def GetLanguageCode(LangName, IsCompatibleMode, File):
         if LangName.isalpha():\r
             return LangName\r
     elif length == 3:\r
-        if LangName.isalpha() and gLANG_CONV_TABLE.get(LangName.lower()) == None:\r
+        if LangName.isalpha() and gLANG_CONV_TABLE.get(LangName.lower()) is None:\r
             return LangName\r
     elif length == 5:\r
         if LangName[0:2].isalpha() and LangName[2] == '-':\r
@@ -208,12 +209,12 @@ def GetLanguageCode(LangName, IsCompatibleMode, File):
     elif length >= 6:\r
         if LangName[0:2].isalpha() and LangName[2] == '-':\r
             return LangName\r
-        if LangName[0:3].isalpha() and gLANG_CONV_TABLE.get(LangName.lower()) == None and LangName[3] == '-':\r
+        if LangName[0:3].isalpha() and gLANG_CONV_TABLE.get(LangName.lower()) is None and LangName[3] == '-':\r
             return LangName\r
 \r
-    EdkLogger.Error("Unicode File Parser", \r
+    EdkLogger.Error("Unicode File Parser",\r
                              ToolError.FORMAT_INVALID,\r
-                             "Invalid RFC 4646 language code : %s" % LangName, \r
+                             "Invalid RFC 4646 language code : %s" % LangName,\r
                              File)\r
 \r
 ## FormatUniEntry\r
@@ -230,7 +231,7 @@ def FormatUniEntry(StrTokenName, TokenValueList, ContainerFile):
     PreFormatLength = 40\r
     if len(StrTokenName) > PreFormatLength:\r
         PreFormatLength = len(StrTokenName) + 1\r
-    for (Lang, Value) in TokenValueList: \r
+    for (Lang, Value) in TokenValueList:\r
         if not Value or Lang == DT.TAB_LANGUAGE_EN_X:\r
             continue\r
         if Lang == '':\r
@@ -270,14 +271,14 @@ class StringDefClassObject(object):
         self.UseOtherLangDef = UseOtherLangDef\r
         self.Length = 0\r
 \r
-        if Name != None:\r
+        if Name is not None:\r
             self.StringName = Name\r
             self.StringNameByteList = UniToHexList(Name)\r
-        if Value != None:\r
+        if Value is not None:\r
             self.StringValue = Value\r
             self.StringValueByteList = UniToHexList(self.StringValue)\r
             self.Length = len(self.StringValueByteList)\r
-        if Token != None:\r
+        if Token is not None:\r
             self.Token = Token\r
 \r
     def __str__(self):\r
@@ -288,7 +289,7 @@ class StringDefClassObject(object):
                repr(self.UseOtherLangDef)\r
 \r
     def UpdateValue(self, Value = None):\r
-        if Value != None:\r
+        if Value is not None:\r
             if self.StringValue:\r
                 self.StringValue = self.StringValue + '\r\n' + Value\r
             else:\r
@@ -327,20 +328,20 @@ class UniFileClassObject(object):
         if len(Lang) != 3:\r
             try:\r
                 FileIn = codecs.open(File.Path, mode='rb', encoding='utf_8').readlines()\r
-            except UnicodeError, Xstr:\r
+            except UnicodeError as Xstr:\r
                 FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16').readlines()\r
-            except UnicodeError, Xstr:\r
+            except UnicodeError as Xstr:\r
                 FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16_le').readlines()\r
             except:\r
-                EdkLogger.Error("Unicode File Parser", \r
-                                ToolError.FILE_OPEN_FAILURE, \r
+                EdkLogger.Error("Unicode File Parser",\r
+                                ToolError.FILE_OPEN_FAILURE,\r
                                 "File read failure: %s" % str(Xstr),\r
                                 ExtraData=File)\r
             LineNo = GetLineNo(FileIn, Line, False)\r
-            EdkLogger.Error("Unicode File Parser", \r
+            EdkLogger.Error("Unicode File Parser",\r
                              ToolError.PARSER_ERROR,\r
-                             "Wrong language definition", \r
-                             ExtraData="""%s\n\t*Correct format is like '#langdef en-US "English"'""" % Line, \r
+                             "Wrong language definition",\r
+                             ExtraData="""%s\n\t*Correct format is like '#langdef en-US "English"'""" % Line,\r
                              File = File, Line = LineNo)\r
         else:\r
             LangName = GetLanguageCode(Lang[1], self.IsCompatibleMode, self.File)\r
@@ -364,7 +365,7 @@ class UniFileClassObject(object):
         if not IsLangInDef:\r
             #\r
             # The found STRING tokens will be added into new language string list\r
-            # so that the unique STRING identifier is reserved for all languages in the package list. \r
+            # so that the unique STRING identifier is reserved for all languages in the package list.\r
             #\r
             FirstLangName = self.LanguageDef[0][0]\r
             if LangName != FirstLangName:\r
@@ -374,10 +375,10 @@ class UniFileClassObject(object):
                         OtherLang = Item.UseOtherLangDef\r
                     else:\r
                         OtherLang = FirstLangName\r
-                    self.OrderedStringList[LangName].append (StringDefClassObject(Item.StringName, \r
-                                                                                  '', \r
-                                                                                  Item.Referenced, \r
-                                                                                  Item.Token, \r
+                    self.OrderedStringList[LangName].append (StringDefClassObject(Item.StringName,\r
+                                                                                  '',\r
+                                                                                  Item.Referenced,\r
+                                                                                  Item.Token,\r
                                                                                   OtherLang))\r
                     self.OrderedStringDict[LangName][Item.StringName] = len(self.OrderedStringList[LangName]) - 1\r
         return True\r
@@ -393,8 +394,8 @@ class UniFileClassObject(object):
         # Check the string name is the upper character\r
         if Name != '':\r
             MatchString = re.match('[A-Z0-9_]+', Name, re.UNICODE)\r
-            if MatchString == None or MatchString.end(0) != len(Name):\r
-                EdkLogger.Error("Unicode File Parser", \r
+            if MatchString is None or MatchString.end(0) != len(Name):\r
+                EdkLogger.Error("Unicode File Parser",\r
                              ToolError.FORMAT_INVALID,\r
                              'The string token name %s in UNI file %s must be upper case character.' %(Name, self.File))\r
         LanguageList = Item.split(u'#language ')\r
@@ -405,7 +406,7 @@ class UniFileClassObject(object):
                 Language = LanguageList[IndexI].split()[0]\r
                 #.replace(u'\r\n', u'')\r
                 Value = \\r
-                LanguageList[IndexI][LanguageList[IndexI].find(u'\"') + len(u'\"') : LanguageList[IndexI].rfind(u'\"')] \r
+                LanguageList[IndexI][LanguageList[IndexI].find(u'\"') + len(u'\"') : LanguageList[IndexI].rfind(u'\"')]\r
                 Language = GetLanguageCode(Language, self.IsCompatibleMode, self.File)\r
                 self.AddStringToList(Name, Language, Value)\r
 \r
@@ -423,7 +424,7 @@ class UniFileClassObject(object):
     #\r
     def PreProcess(self, File, IsIncludeFile=False):\r
         if not os.path.exists(File.Path) or not os.path.isfile(File.Path):\r
-            EdkLogger.Error("Unicode File Parser", \r
+            EdkLogger.Error("Unicode File Parser",\r
                              ToolError.FILE_NOT_FOUND,\r
                              ExtraData=File.Path)\r
 \r
@@ -436,14 +437,14 @@ class UniFileClassObject(object):
 \r
         try:\r
             FileIn = codecs.open(File.Path, mode='rb', encoding='utf_8').readlines()\r
-        except UnicodeError, Xstr:\r
+        except UnicodeError as Xstr:\r
             FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16').readlines()\r
         except UnicodeError:\r
             FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16_le').readlines()\r
         except:\r
             EdkLogger.Error("Unicode File Parser", ToolError.FILE_OPEN_FAILURE, ExtraData=File.Path)\r
-        \r
-        \r
+\r
+\r
         #\r
         # get the file header\r
         #\r
@@ -466,7 +467,7 @@ class UniFileClassObject(object):
             if Line.startswith(DT.TAB_COMMENT_EDK1_SPLIT) and HeaderStart and not HeaderEnd and FirstGenHeader:\r
                 self.UniFileHeader += Line + '\r\n'\r
                 continue\r
-        \r
+\r
         #\r
         # Use unique identifier\r
         #\r
@@ -485,7 +486,7 @@ class UniFileClassObject(object):
             Line = Line.strip()\r
             #\r
             # Ignore comment line and empty line\r
-            #            \r
+            #\r
             if Line == u'' or Line.startswith(u'//'):\r
                 #\r
                 # Change the single line String entry flag status\r
@@ -527,7 +528,7 @@ class UniFileClassObject(object):
                         EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
                 else:\r
                     EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
-                    \r
+\r
             Line = Line.replace(UNICODE_WIDE_CHAR, WIDE_CHAR)\r
             Line = Line.replace(UNICODE_NARROW_CHAR, NARROW_CHAR)\r
             Line = Line.replace(UNICODE_NON_BREAKING_CHAR, NON_BREAKING_CHAR)\r
@@ -555,16 +556,16 @@ class UniFileClassObject(object):
             #\r
             if Line.startswith(u'#string') and Line.find(u'#language') == -1:\r
                 MultiLineFeedExits = True\r
-                \r
+\r
             if Line.startswith(u'#string') and Line.find(u'#language') > 0 and Line.find(u'"') < 0:\r
                 MultiLineFeedExits = True\r
-            \r
+\r
             #\r
             # Between Language entry and String entry can not contain line feed\r
             #\r
             if Line.startswith(u'#language') and len(Line.split()) == 2:\r
                 MultiLineFeedExits = True\r
-            \r
+\r
             #\r
             # Between two String entry, can not contain line feed\r
             #\r
@@ -587,7 +588,7 @@ class UniFileClassObject(object):
                 StringEntryExistsFlag = 0\r
 \r
             Lines.append(Line)\r
-        \r
+\r
         #\r
         # Convert string def format as below\r
         #\r
@@ -600,11 +601,11 @@ class UniFileClassObject(object):
         #     "Mi segunda secuencia 1"\r
         #     "Mi segunda secuencia 2"\r
         #\r
-        \r
+\r
         if not IsIncludeFile and not Lines:\r
             EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                 Message=ST.ERR_UNIPARSE_NO_SECTION_EXIST, \\r
-                ExtraData=File.Path) \r
+                ExtraData=File.Path)\r
 \r
         NewLines = []\r
         StrName = u''\r
@@ -614,7 +615,7 @@ class UniFileClassObject(object):
                 EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                                 Message=ST.ERR_UNIPARSE_STRNAME_FORMAT_ERROR % StrName.split()[1], \\r
                                 ExtraData=File.Path)\r
-                \r
+\r
             if StrName and len(StrName.split()[1].split(DT.TAB_UNDERLINE_SPLIT)) == 4:\r
                 StringTokenList = StrName.split()[1].split(DT.TAB_UNDERLINE_SPLIT)\r
                 if (StringTokenList[3].upper() in [DT.TAB_STR_TOKENPROMPT, DT.TAB_STR_TOKENHELP] and \\r
@@ -623,19 +624,19 @@ class UniFileClassObject(object):
                     EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                                 Message=ST.ERR_UNIPARSE_STRTOKEN_FORMAT_ERROR % StrName.split()[1], \\r
                                 ExtraData=File.Path)\r
-                    \r
+\r
             if Line.count(u'#language') > 1:\r
                 EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                                 Message=ST.ERR_UNIPARSE_SEP_LANGENTRY_LINE % Line, \\r
-                                ExtraData=File.Path) \r
-            \r
+                                ExtraData=File.Path)\r
+\r
             if Line.startswith(u'//'):\r
                 continue\r
             elif Line.startswith(u'#langdef'):\r
                 if len(Line.split()) == 2:\r
                     NewLines.append(Line)\r
                     continue\r
-                elif len(Line.split()) > 2 and Line.find(u'"') > 0:                    \r
+                elif len(Line.split()) > 2 and Line.find(u'"') > 0:\r
                     NewLines.append(Line[:Line.find(u'"')].strip())\r
                     NewLines.append(Line[Line.find(u'"'):])\r
                 else:\r
@@ -658,10 +659,10 @@ class UniFileClassObject(object):
                     if Line[Line.find(u'#language')-1] != ' ' or \\r
                        Line[Line.find(u'#language')+len(u'#language')] != u' ':\r
                         EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
-                        \r
+\r
                     if Line.find(u'"') > 0:\r
                         EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
-                        \r
+\r
                     StrName = Line.split()[0] + u' ' + Line.split()[1]\r
                     if StrName:\r
                         if StrName.split()[1] not in ExistStrNameList:\r
@@ -683,11 +684,11 @@ class UniFileClassObject(object):
                     if Line[Line.find(u'#language')-1] != u' ' or \\r
                        Line[Line.find(u'#language')+len(u'#language')] != u' ':\r
                         EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
-                    \r
+\r
                     if Line[Line.find(u'"')-1] != u' ':\r
-                        EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)  \r
-                    \r
-                    StrName = Line.split()[0] + u' ' + Line.split()[1]     \r
+                        EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
+\r
+                    StrName = Line.split()[0] + u' ' + Line.split()[1]\r
                     if StrName:\r
                         if StrName.split()[1] not in ExistStrNameList:\r
                             ExistStrNameList.append(StrName.split()[1].strip())\r
@@ -697,11 +698,11 @@ class UniFileClassObject(object):
                                                     DT.TAB_DEC_BINARY_ABSTRACT, DT.TAB_DEC_BINARY_DESCRIPTION]:\r
                             EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                                             Message=ST.ERR_UNIPARSE_MULTI_ENTRY_EXIST % StrName.split()[1], \\r
-                                            ExtraData=File.Path)      \r
+                                            ExtraData=File.Path)\r
                     if IsIncludeFile:\r
                         if StrName not in NewLines:\r
                             NewLines.append((Line[:Line.find(u'#language')]).strip())\r
-                    else:                \r
+                    else:\r
                         NewLines.append((Line[:Line.find(u'#language')]).strip())\r
                     NewLines.append((Line[Line.find(u'#language'):Line.find(u'"')]).strip())\r
                     NewLines.append((Line[Line.find(u'"'):]).strip())\r
@@ -730,19 +731,19 @@ class UniFileClassObject(object):
                     EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
                 NewLines.append(Line)\r
             else:\r
-                print Line\r
+                print(Line)\r
                 EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
-                    \r
+\r
         if StrName and not StrName.split()[1].startswith(u'STR_'):\r
             EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                                 Message=ST.ERR_UNIPARSE_STRNAME_FORMAT_ERROR % StrName.split()[1], \\r
-                                ExtraData=File.Path)    \r
-        \r
+                                ExtraData=File.Path)\r
+\r
         if StrName and not NewLines:\r
             EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                             Message=ST.ERR_UNI_MISS_LANGENTRY % StrName, \\r
                             ExtraData=File.Path)\r
-        \r
+\r
         #\r
         # Check Abstract, Description, BinaryAbstract and BinaryDescription order,\r
         # should be Abstract, Description, BinaryAbstract, BinaryDesctiption\r
@@ -761,7 +762,7 @@ class UniFileClassObject(object):
                     BinaryDescriptionPosition = ExistStrNameList.index(StrName)\r
                 else:\r
                     DescriptionPosition = ExistStrNameList.index(StrName)\r
-                    \r
+\r
         OrderList = sorted([AbstractPosition, DescriptionPosition])\r
         BinaryOrderList = sorted([BinaryAbstractPosition, BinaryDescriptionPosition])\r
         Min = OrderList[0]\r
@@ -773,39 +774,39 @@ class UniFileClassObject(object):
                    BinaryMax > Max):\r
                 EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                                 Message=ST.ERR_UNIPARSE_ENTRY_ORDER_WRONG, \\r
-                                ExtraData=File.Path) \r
+                                ExtraData=File.Path)\r
         elif BinaryAbstractPosition > -1:\r
             if not(BinaryAbstractPosition > Max):\r
                 EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                                 Message=ST.ERR_UNIPARSE_ENTRY_ORDER_WRONG, \\r
-                                ExtraData=File.Path)  \r
-            \r
+                                ExtraData=File.Path)\r
+\r
         if  DescriptionPosition > -1:\r
             if not(DescriptionPosition == Max and AbstractPosition == Min and \\r
                    DescriptionPosition > AbstractPosition):\r
                 EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
                                 Message=ST.ERR_UNIPARSE_ENTRY_ORDER_WRONG, \\r
-                                ExtraData=File.Path)  \r
-        \r
+                                ExtraData=File.Path)\r
+\r
         if not self.UniFileHeader:\r
-            EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \r
+            EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,\r
                             Message = ST.ERR_NO_SOURCE_HEADER,\r
                             ExtraData=File.Path)\r
-        \r
+\r
         return NewLines\r
 \r
     #\r
     # Load a .uni file\r
     #\r
     def LoadUniFile(self, File = None):\r
-        if File == None:\r
-            EdkLogger.Error("Unicode File Parser", \r
-                            ToolError.PARSER_ERROR, \r
-                            Message='No unicode file is given', \r
+        if File is None:\r
+            EdkLogger.Error("Unicode File Parser",\r
+                            ToolError.PARSER_ERROR,\r
+                            Message='No unicode file is given',\r
                             ExtraData=File.Path)\r
-   \r
+\r
         self.File = File\r
-        \r
+\r
         #\r
         # Process special char in file\r
         #\r
@@ -848,10 +849,10 @@ class UniFileClassObject(object):
                 SecondLine.find(u'#string ') < 0 and SecondLine.find(u'#language ') >= 0 and \\r
                 ThirdLine.find(u'#string ') < 0 and ThirdLine.find(u'#language ') < 0:\r
                 if Line.find('"') > 0 or SecondLine.find('"') > 0:\r
-                    EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \r
+                    EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,\r
                                 Message=ST.ERR_UNIPARSE_DBLQUOTE_UNMATCHED,\r
                                 ExtraData=File.Path)\r
-                    \r
+\r
                 Name = Line[Line.find(u'#string ') + len(u'#string ') : ].strip(' ')\r
                 Language = SecondLine[SecondLine.find(u'#language ') + len(u'#language ') : ].strip(' ')\r
                 for IndexJ in range(IndexI + 2, len(Lines)):\r
@@ -893,50 +894,50 @@ class UniFileClassObject(object):
         for LangNameItem in self.LanguageDef:\r
             if Language == LangNameItem[0]:\r
                 break\r
-            \r
+\r
         if Language not in self.OrderedStringList:\r
             self.OrderedStringList[Language] = []\r
             self.OrderedStringDict[Language] = {}\r
-            \r
+\r
         IsAdded = True\r
         if Name in self.OrderedStringDict[Language]:\r
             IsAdded = False\r
-            if Value != None:\r
+            if Value is not None:\r
                 ItemIndexInList = self.OrderedStringDict[Language][Name]\r
                 Item = self.OrderedStringList[Language][ItemIndexInList]\r
                 Item.UpdateValue(Value)\r
-                Item.UseOtherLangDef = ''   \r
+                Item.UseOtherLangDef = ''\r
 \r
         if IsAdded:\r
             Token = len(self.OrderedStringList[Language])\r
             if Index == -1:\r
-                self.OrderedStringList[Language].append(StringDefClassObject(Name, \r
-                                                                             Value, \r
-                                                                             Referenced, \r
-                                                                             Token, \r
+                self.OrderedStringList[Language].append(StringDefClassObject(Name,\r
+                                                                             Value,\r
+                                                                             Referenced,\r
+                                                                             Token,\r
                                                                              UseOtherLangDef))\r
                 self.OrderedStringDict[Language][Name] = Token\r
                 for LangName in self.LanguageDef:\r
                     #\r
                     # New STRING token will be added into all language string lists.\r
-                    # so that the unique STRING identifier is reserved for all languages in the package list. \r
+                    # so that the unique STRING identifier is reserved for all languages in the package list.\r
                     #\r
                     if LangName[0] != Language:\r
                         if UseOtherLangDef != '':\r
                             OtherLangDef = UseOtherLangDef\r
                         else:\r
                             OtherLangDef = Language\r
-                        self.OrderedStringList[LangName[0]].append(StringDefClassObject(Name, \r
-                                                                                        '', \r
-                                                                                        Referenced, \r
-                                                                                        Token, \r
+                        self.OrderedStringList[LangName[0]].append(StringDefClassObject(Name,\r
+                                                                                        '',\r
+                                                                                        Referenced,\r
+                                                                                        Token,\r
                                                                                         OtherLangDef))\r
                         self.OrderedStringDict[LangName[0]][Name] = len(self.OrderedStringList[LangName[0]]) - 1\r
             else:\r
-                self.OrderedStringList[Language].insert(Index, StringDefClassObject(Name, \r
-                                                                                    Value, \r
-                                                                                    Referenced, \r
-                                                                                    Token, \r
+                self.OrderedStringList[Language].insert(Index, StringDefClassObject(Name,\r
+                                                                                    Value,\r
+                                                                                    Referenced,\r
+                                                                                    Token,\r
                                                                                     UseOtherLangDef))\r
                 self.OrderedStringDict[Language][Name] = Index\r
 \r
@@ -1022,27 +1023,27 @@ class UniFileClassObject(object):
     # Show the instance itself\r
     #\r
     def ShowMe(self):\r
-        print self.LanguageDef\r
+        print(self.LanguageDef)\r
         #print self.OrderedStringList\r
         for Item in self.OrderedStringList:\r
-            print Item\r
+            print(Item)\r
             for Member in self.OrderedStringList[Item]:\r
-                print str(Member)\r
-    \r
+                print(str(Member))\r
+\r
     #\r
-    # Read content from '!include' UNI file \r
+    # Read content from '!include' UNI file\r
     #\r
     def ReadIncludeUNIfile(self, FilaPath):\r
         if self.File:\r
             pass\r
-        \r
+\r
         if not os.path.exists(FilaPath) or not os.path.isfile(FilaPath):\r
-            EdkLogger.Error("Unicode File Parser", \r
+            EdkLogger.Error("Unicode File Parser",\r
                              ToolError.FILE_NOT_FOUND,\r
                              ExtraData=FilaPath)\r
         try:\r
             FileIn = codecs.open(FilaPath, mode='rb', encoding='utf_8').readlines()\r
-        except UnicodeError, Xstr:\r
+        except UnicodeError as Xstr:\r
             FileIn = codecs.open(FilaPath, mode='rb', encoding='utf_16').readlines()\r
         except UnicodeError:\r
             FileIn = codecs.open(FilaPath, mode='rb', encoding='utf_16_le').readlines()\r