add !include statement support for GenFds
authorjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Fri, 4 Jan 2008 04:06:49 +0000 (04:06 +0000)
committerjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Fri, 4 Jan 2008 04:06:49 +0000 (04:06 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@942 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/GenFds/FdfParser.py

index 6141dd5..2d7a59e 100644 (file)
@@ -59,6 +59,8 @@ T_CHAR_BACKSLASH, T_CHAR_DOUBLE_QUOTE, T_CHAR_SINGLE_QUOTE, T_CHAR_STAR, T_CHAR_
 \r
 SEPERATOR_TUPLE = ('=', '|', ',', '{', '}') \r
 \r
+IncludeFileList = []\r
+\r
 ## The exception class that used to report error messages when parsing FDF\r
 #\r
 # Currently the "ToolName" is set to be "FDF Parser".\r
@@ -72,10 +74,49 @@ class Warning (Exception):
     #   @param  Line        The Line number that error occurs\r
     #\r
     def __init__(self, Str, File = None, Line = None):\r
-        self.message = Str\r
-        self.FileName = File\r
-        self.LineNumber = Line\r
+        \r
+        FileLineTuple = self.GetRealFileLine(File, Line)\r
+        self.FileName = FileLineTuple[0]\r
+        self.LineNumber = FileLineTuple[1]\r
+        self.message = Str + str(self.LineNumber)\r
         self.ToolName = 'FDF Parser'\r
+        \r
+    def GetRealFileLine (self, File, Line):\r
+        \r
+        InsertedLines = 0\r
+        for Profile in IncludeFileList:\r
+            if Line >= Profile.InsertStartLineNumber and Line < Profile.InsertStartLineNumber + Profile.InsertAdjust + len(Profile.FileLinesList):\r
+                return (Profile.FileName, Line - Profile.InsertStartLineNumber + 1)\r
+            if Line >= Profile.InsertStartLineNumber + Profile.InsertAdjust + len(Profile.FileLinesList):\r
+                InsertedLines += Profile.InsertAdjust + len(Profile.FileLinesList)\r
+        \r
+        return (File, Line - InsertedLines)\r
+\r
+## The Include file content class that used to record file data when parsing include file\r
+#\r
+# May raise Exception when opening file.\r
+#\r
+class IncludeFileProfile :\r
+    ## The constructor\r
+    #\r
+    #   @param  self        The object pointer\r
+    #   @param  FileName    The file that to be parsed\r
+    #\r
+    def __init__(self, FileName):\r
+        self.FileName = FileName\r
+        self.FileLinesList = []\r
+        try:\r
+            fsock = open(FileName, "rb", 0)\r
+            try:\r
+                self.FileLinesList = fsock.readlines()\r
+            finally:\r
+                fsock.close()\r
+\r
+        except IOError:\r
+            raise Warning("Error when opening file %s" % FileName)\r
+        \r
+        self.InsertStartLineNumber = None\r
+        self.InsertAdjust = 0\r
 \r
 ## The FDF content class that used to record file data when parsing FDF\r
 #\r
@@ -93,7 +134,6 @@ class FileProfile :
             fsock = open(FileName, "rb", 0)\r
             try:\r
                 self.FileLinesList = fsock.readlines()\r
-                self.FileLinesList = [list(s) for s in self.FileLinesList]\r
             finally:\r
                 fsock.close()\r
 \r
@@ -132,6 +172,8 @@ class FdfParser:
         self.CurrentFvName = None\r
         self.__Token = ""\r
         self.__SkippedChars = ""\r
+        \r
+        self.__InsertedFileDict = {}\r
 \r
     ## __IsWhiteSpace() method\r
     #\r
@@ -283,6 +325,9 @@ class FdfParser:
     def __CurrentLine(self):\r
         return self.Profile.FileLinesList[self.CurrentLineNumber - 1]\r
         \r
+    def __StringToList(self):\r
+        self.Profile.FileLinesList = [list(s) for s in self.Profile.FileLinesList]\r
+    \r
     ## PreprocessFile() method\r
     #\r
     #   Preprocess file contents, replace comments with spaces.\r
@@ -300,7 +345,7 @@ class FdfParser:
         HashComment = False\r
         # HashComment in quoted string " " is ignored.\r
         InString = False    \r
-\r
+        \r
         while not self.__EndOfFile():\r
             \r
             if self.__CurrentChar() == T_CHAR_DOUBLE_QUOTE:\r
@@ -343,11 +388,77 @@ class FdfParser:
                 InComment = True\r
             else:\r
                 self.__GetOneChar()\r
-\r
+        \r
         # restore from ListOfList to ListOfString\r
         self.Profile.FileLinesList = ["".join(list) for list in self.Profile.FileLinesList]\r
         self.Rewind()\r
 \r
+    ## PreprocessIncludeFile() method\r
+    #\r
+    #   Preprocess file contents, replace !include statements with file contents.\r
+    #   In the end, rewind the file buffer pointer to the beginning\r
+    #\r
+    #   @param  self        The object pointer\r
+    #   \r
+    def PreprocessIncludeFile(self):\r
+        \r
+        while self.__GetNextToken():\r
+            \r
+            if self.__Token == '!include':\r
+                IncludeLine = self.CurrentLineNumber\r
+                IncludeOffset = self.CurrentOffsetWithinLine - len('!include')\r
+                if not self.__GetNextToken():\r
+                    raise Warning("expected include file name At Line ", self.FileName, self.CurrentLineNumber)\r
+                IncFileName = self.__Token\r
+                if not os.path.isabs(IncFileName):\r
+                    if IncFileName.startswith('$(WORKSPACE)'):\r
+                        Str = IncFileName.replace('$(WORKSPACE)', os.environ.get('WORKSPACE'))\r
+                        if os.path.exists(Str):\r
+                            if not os.path.isabs(Str):\r
+                                Str = os.path.abspath(Str)\r
+                        IncFileName = Str\r
+                    else:\r
+                        # file is in the same dir with FDF file\r
+                        FullFdf = self.FileName\r
+                        if not os.path.isabs(self.FileName):\r
+                            FullFdf = os.path.join(os.environ.get('WORKSPACE'), self.FileName)\r
+                \r
+                        IncFileName = os.path.join(os.path.dirname(FullFdf), IncFileName)\r
+                    \r
+                if not os.path.exists(os.path.normpath(IncFileName)):\r
+                    raise Warning("Include file not exists At Line ", self.FileName, self.CurrentLineNumber)\r
+                \r
+                IncFileProfile = IncludeFileProfile(os.path.normpath(IncFileName))\r
+                \r
+                CurrentLine = self.CurrentLineNumber\r
+                CurrentOffset = self.CurrentOffsetWithinLine\r
+                # list index of the insertion, note that line number is 'CurrentLine + 1'\r
+                InsertAtLine = CurrentLine\r
+                IncFileProfile.InsertStartLineNumber = InsertAtLine + 1\r
+                # deal with remaining portions after "!include filename", if exists.\r
+                if self.__GetNextToken():\r
+                    if self.CurrentLineNumber == CurrentLine:\r
+                        RemainingLine = self.__CurrentLine()[CurrentOffset:]\r
+                        self.Profile.FileLinesList.insert(self.CurrentLineNumber, RemainingLine)\r
+                        IncFileProfile.InsertAdjust += 1\r
+                        self.CurrentLineNumber += 1\r
+                        self.CurrentOffsetWithinLine = 0\r
+                \r
+                for Line in IncFileProfile.FileLinesList:\r
+                    self.Profile.FileLinesList.insert(InsertAtLine, Line)\r
+                    self.CurrentLineNumber += 1\r
+                    InsertAtLine += 1    \r
+                \r
+                IncludeFileList.append(IncFileProfile)\r
+                \r
+                # comment out the processed include file statement\r
+                TempList = list(self.Profile.FileLinesList[IncludeLine - 1])\r
+                TempList.insert(IncludeOffset, '#')\r
+                self.Profile.FileLinesList[IncludeLine - 1] = ''.join(TempList)\r
+                \r
+        self.Rewind()\r
+\r
+\r
     ## __IsToken() method\r
     #\r
     #   Check whether input string is found from current char position along\r
@@ -597,14 +708,14 @@ class FdfParser:
     #\r
     def __GetNextPcdName(self):\r
         if not self.__GetNextWord():\r
-            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line ", self.FileName, self.CurrentLineNumber)\r
         pcdTokenSpaceCName = self.__Token\r
         \r
         if not self.__IsToken( "."):\r
-            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetNextWord():\r
-            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line ", self.FileName, self.CurrentLineNumber)\r
         pcdCName = self.__Token\r
         \r
         return (pcdCName, pcdTokenSpaceCName) \r
@@ -625,9 +736,9 @@ class FdfParser:
             currentLineNumber = self.CurrentLineNumber\r
             \r
             if not self.__SkipToToken("\""):\r
-                raise Warning("Missing Quote \" for String At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Missing Quote \" for String At Line ", self.FileName, self.CurrentLineNumber)\r
             if currentLineNumber != self.CurrentLineNumber:\r
-                raise Warning("Missing Quote \" for String At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Missing Quote \" for String At Line ", self.FileName, self.CurrentLineNumber)\r
             self.__Token = self.__SkippedChars.rstrip('"')\r
             return True\r
         else:\r
@@ -695,7 +806,12 @@ class FdfParser:
     def ParseFile(self):\r
 \r
         try:\r
+            self.__StringToList()\r
             self.PreprocessFile()\r
+            self.PreprocessIncludeFile()\r
+            self.__StringToList()\r
+            self.PreprocessFile()\r
+            \r
             while self.__GetFd():\r
                 pass\r
 \r
@@ -713,9 +829,10 @@ class FdfParser:
             \r
         except Warning, X:\r
             self.__UndoToken()\r
-            X.message += '\nGot Token: %s\n' % self.__Token + \\r
-                'Parsing String: %s At line: %d, Offset Within Line: %d\n' \\r
-                    % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], self.CurrentLineNumber, self.CurrentOffsetWithinLine)\r
+            FileLineTuple = X.GetRealFileLine(self.FileName, self.CurrentLineNumber)\r
+            X.message += '\nGot Token: \"%s\" from File %s\n' % (self.__Token, FileLineTuple[0]) + \\r
+                'Previous Token: \"%s\" At line: %d, Offset Within Line: %d\n' \\r
+                    % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :].rstrip('\n').rstrip('\r'), FileLineTuple[1], self.CurrentOffsetWithinLine)\r
             raise\r
         \r
     ## __GetFd() method\r
@@ -735,7 +852,7 @@ class FdfParser:
         if S.startswith("[") and not S.startswith("[FD."):\r
             if not S.startswith("[FV.") and not S.startswith("[CAPSULE.") \\r
                 and not S.startswith("[VTF.") and not S.startswith("[RULE."):\r
-                raise Warning("Unknown section At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown section At Line ", self.FileName, self.CurrentLineNumber)\r
             self.__UndoToken()\r
             return False\r
         \r
@@ -743,20 +860,20 @@ class FdfParser:
         if not self.__IsToken("[FD.", True):\r
             print 'Parsing String: %s At line: %d, Offset Within Line: %d' \\r
                     % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], self.CurrentLineNumber, self.CurrentOffsetWithinLine)\r
-            raise Warning("expected [FD.] At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected [FD.] At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         FdName = self.__GetUiName()\r
         self.CurrentFdName = FdName.upper()\r
         \r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         FdObj = Fd.FD()\r
         FdObj.FdUiName = self.CurrentFdName\r
         self.Profile.FdDict[self.CurrentFdName] = FdObj\r
         Status = self.__GetCreateFile(FdObj)\r
         if not Status:\r
-            raise Warning("FD name error At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("FD name error At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetTokenStatements(FdObj):\r
             return False\r
@@ -766,7 +883,7 @@ class FdfParser:
         self.__GetSetStatements(FdObj)\r
 \r
         if not self.__GetRegionLayout(FdObj):\r
-            raise Warning("expected region layout At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected region layout At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         while self.__GetRegionLayout(FdObj):\r
             pass\r
@@ -798,10 +915,10 @@ class FdfParser:
 \r
         if self.__IsKeyword( "CREATE_FILE"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             if not self.__GetNextToken():\r
-                raise Warning("expected file name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected file name At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             FileName = self.__Token\r
             Obj.CreateFileName = FileName\r
@@ -819,13 +936,13 @@ class FdfParser:
     #\r
     def __GetTokenStatements(self, Obj):\r
         if not self.__IsKeyword( "BaseAddress"):\r
-            raise Warning("BaseAddress missing At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("BaseAddress missing At Line ", self.FileName, self.CurrentLineNumber)\r
            \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         if not self.__GetNextHexNumber():\r
-            raise Warning("expected Hex base address At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Hex base address At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         Obj.BaseAddress = self.__Token\r
         \r
@@ -835,13 +952,13 @@ class FdfParser:
             self.Profile.PcdDict[pcdPair] = long(Obj.BaseAddress, 0)\r
             \r
         if not self.__IsKeyword( "Size"):\r
-            raise Warning("Size missing At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Size missing At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         if not self.__GetNextHexNumber():\r
-            raise Warning("expected Hex size At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Hex size At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
       \r
         Obj.Size = long(self.__Token, 0)\r
@@ -852,16 +969,16 @@ class FdfParser:
             self.Profile.PcdDict[pcdPair] = Obj.Size\r
                     \r
         if not self.__IsKeyword( "ErasePolarity"):\r
-            raise Warning("ErasePolarity missing At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("ErasePolarity missing At Line ", self.FileName, self.CurrentLineNumber)\r
            \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Erase Polarity At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Erase Polarity At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         if self.__Token != "1" and self.__Token != "0":\r
-            raise Warning("expected 1 or 0 Erase Polarity At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected 1 or 0 Erase Polarity At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         Obj.ErasePolarity = self.__Token\r
 \r
@@ -881,20 +998,20 @@ class FdfParser:
         \r
         if self.__IsKeyword("BsBaseAddress"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__GetNextDecimalNumber() and not self.__GetNextHexNumber():\r
-                raise Warning("expected address At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected address At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             BsAddress = long(self.__Token, 0)\r
             Obj.BsBaseAddress = BsAddress\r
             \r
         if self.__IsKeyword("RtBaseAddress"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__GetNextDecimalNumber() and not self.__GetNextHexNumber():\r
-                raise Warning("expected address At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected address At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             RtAddress = long(self.__Token, 0)\r
             Obj.RtBaseAddress = RtAddress\r
@@ -911,7 +1028,7 @@ class FdfParser:
     def __GetBlockStatements(self, Obj):\r
         \r
         if not self.__GetBlockStatement(Obj):\r
-            raise Warning("expected block statement At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected block statement At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         while self.__GetBlockStatement(Obj):\r
             pass\r
@@ -931,10 +1048,10 @@ class FdfParser:
             return False\r
         \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         if not self.__GetNextHexNumber() and not self.__GetNextDecimalNumber():\r
-            raise Warning("expected Hex block size At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Hex block size At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         BlockSize = long(self.__Token, 0)\r
         BlockSizePcd = None\r
@@ -946,10 +1063,10 @@ class FdfParser:
         BlockNumber = None\r
         if self.__IsKeyword( "NumBlocks"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             if not self.__GetNextDecimalNumber() and not self.__GetNextHexNumber():\r
-                raise Warning("expected block numbers At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected block numbers At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             BlockNumber = long(self.__Token, 0)\r
         \r
@@ -983,10 +1100,10 @@ class FdfParser:
             self.__GetNextToken()\r
             Macro = self.__Token\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             if not self.__GetNextToken():\r
-                raise Warning("expected value At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected value At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
             Value = self.__Token\r
             Macro = '$(' + Macro + ')'\r
@@ -1022,16 +1139,16 @@ class FdfParser:
             PcdPair = self.__GetNextPcdName()\r
             \r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             if not self.__GetNextToken():\r
-                raise Warning("expected value At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected value At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
             Value = self.__Token\r
             if Value.startswith("{"):\r
                 # deal with value with {}\r
                 if not self.__SkipToToken( "}"):\r
-                    raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
                 Value += self.__SkippedChars\r
                 \r
             Obj.SetVarDict[PcdPair] = Value\r
@@ -1058,10 +1175,10 @@ class FdfParser:
         Fd.RegionList.append(RegionObj)\r
         \r
         if not self.__IsToken( "|"):\r
-            raise Warning("expected '|' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '|' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetNextHexNumber():\r
-            raise Warning("expected Region Size At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Region Size At Line ", self.FileName, self.CurrentLineNumber)\r
         RegionObj.Size = long(self.__Token, 0)\r
         \r
         if not self.__GetNextWord():\r
@@ -1108,13 +1225,13 @@ class FdfParser:
     def __GetRegionFvType(self, RegionObj):\r
 \r
         if not self.__IsKeyword( "FV"):\r
-            raise Warning("expected Keyword 'FV' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Keyword 'FV' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetNextToken():\r
-            raise Warning("expected FV name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         RegionObj.RegionType = "FV"\r
         RegionObj.RegionDataList.append(self.__Token)\r
@@ -1122,10 +1239,10 @@ class FdfParser:
         while self.__IsKeyword( "FV"):\r
         \r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             if not self.__GetNextToken():\r
-                raise Warning("expected FV name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             RegionObj.RegionDataList.append(self.__Token)\r
         \r
@@ -1139,13 +1256,13 @@ class FdfParser:
     def __GetRegionFileType(self, RegionObj):\r
 \r
         if not self.__IsKeyword( "FILE"):\r
-            raise Warning("expected Keyword 'FILE' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Keyword 'FILE' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected File name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected File name At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         RegionObj.RegionType = "FILE"\r
         RegionObj.RegionDataList.append( self.__Token)\r
@@ -1153,10 +1270,10 @@ class FdfParser:
         while self.__IsKeyword( "FILE"):\r
         \r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             if not self.__GetNextToken():\r
-                raise Warning("expected FILE name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected FILE name At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             RegionObj.RegionDataList.append(self.__Token)\r
 \r
@@ -1170,19 +1287,19 @@ class FdfParser:
     def __GetRegionDataType(self, RegionObj):\r
         \r
         if not self.__IsKeyword( "DATA"):\r
-            raise Warning("expected Region Data type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Region Data type At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__IsToken( "{"):\r
-            raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetNextHexNumber():\r
-            raise Warning("expected Hex byte At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Hex byte At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if len(self.__Token) > 4:\r
-            raise Warning("Hex byte(must be 2 digits) too long At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         DataString = self.__Token\r
         DataString += ","\r
@@ -1190,12 +1307,12 @@ class FdfParser:
         while self.__IsToken(","):\r
             self.__GetNextHexNumber()\r
             if len(self.__Token) > 4:\r
-                raise Warning("Hex byte(must be 2 digits) too long At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
             DataString += self.__Token\r
             DataString += ","\r
             \r
         if not self.__IsToken( "}"):\r
-            raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         DataString = DataString.rstrip(",")\r
         RegionObj.RegionType = "DATA"\r
@@ -1204,16 +1321,16 @@ class FdfParser:
         while self.__IsKeyword( "DATA"):\r
 \r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             if not self.__IsToken( "{"):\r
-                raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             if not self.__GetNextHexNumber():\r
-                raise Warning("expected Hex byte At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Hex byte At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             if len(self.__Token) > 4:\r
-                raise Warning("Hex byte(must be 2 digits) too long At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             DataString = self.__Token\r
             DataString += ","\r
@@ -1221,12 +1338,12 @@ class FdfParser:
             while self.__IsToken(","):\r
                 self.__GetNextHexNumber()\r
                 if len(self.__Token) > 4:\r
-                    raise Warning("Hex byte(must be 2 digits) too long At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
                 DataString += self.__Token\r
                 DataString += ","\r
             \r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             DataString = DataString.rstrip(",")\r
             RegionObj.RegionDataList.append( DataString)\r
@@ -1256,13 +1373,13 @@ class FdfParser:
         if not self.__IsToken("[FV.", True):\r
             print 'Parsing String: %s At line: %d, Offset Within Line: %d' \\r
                     % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], self.CurrentLineNumber, self.CurrentOffsetWithinLine)\r
-            raise Warning("Unknown Keyword At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown Keyword At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         FvName = self.__GetUiName()\r
         self.CurrentFvName = FvName.upper()\r
         \r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         FvObj = Fv.FV()\r
         FvObj.UiFvName = self.CurrentFvName\r
@@ -1270,7 +1387,7 @@ class FdfParser:
         \r
         Status = self.__GetCreateFile(FvObj)\r
         if not Status:\r
-            raise Warning("FV name error At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("FV name error At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         self.__GetDefineStatements(FvObj)\r
 \r
@@ -1310,16 +1427,16 @@ class FdfParser:
             return False\r
         \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetNextToken():\r
-            raise Warning("expected alignment value At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected alignment value At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if self.__Token.upper() not in ("1", "2", "4", "8", "16", "32", "64", "128", "256", "512", \\r
                                         "1K", "2K", "4K", "8K", "16K", "32K", "64K", "128K", "256K", "512K", \\r
                                         "1M", "2M", "4M", "8M", "16M", "32M", "64M", "128M", "256M", "512M", \\r
                                         "1G", "2G"):\r
-            raise Warning("Unknown alignment value At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown alignment value At Line ", self.FileName, self.CurrentLineNumber)\r
         Obj.FvAlignment = self.__Token\r
         return True\r
     \r
@@ -1345,10 +1462,10 @@ class FdfParser:
                 return\r
 \r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__GetNextToken() or self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
-                raise Warning("expected TRUE/FALSE (1/0) At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected TRUE/FALSE (1/0) At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             FvObj.FvAttributeDict[name] = self.__Token\r
 \r
@@ -1370,11 +1487,11 @@ class FdfParser:
             return False\r
         \r
         if not self.__IsKeyword("PEI") and not self.__IsKeyword("DXE"):\r
-            raise Warning("expected Apriori file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Apriori file type At Line ", self.FileName, self.CurrentLineNumber)\r
         AprType = self.__Token\r
         \r
         if not self.__IsToken( "{"):\r
-            raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         AprSectionObj = AprioriSection.AprioriSection()\r
         AprSectionObj.AprioriType = AprType\r
@@ -1389,7 +1506,7 @@ class FdfParser:
                 break\r
         \r
         if not self.__IsToken( "}"):\r
-            raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         FvObj.AprioriSectionList.append(AprSectionObj)\r
         return True\r
@@ -1413,7 +1530,7 @@ class FdfParser:
         self.__GetInfOptions( ffsInf)\r
         \r
         if not self.__GetNextToken():\r
-            raise Warning("expected INF file path At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected INF file path At Line ", self.FileName, self.CurrentLineNumber)\r
         ffsInf.InfFileName = self.__Token\r
         \r
         if ffsInf.InfFileName.find('$') >= 0:\r
@@ -1428,7 +1545,7 @@ class FdfParser:
             elif self.__IsKeyword('RELOCS_RETAINED'):\r
                 ffsInf.KeepReloc = True\r
             else:\r
-                raise Warning("Unknown reloc strip flag At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown reloc strip flag At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if ForCapsule:\r
             capsuleFfs = CapsuleData.CapsuleFfs()\r
@@ -1449,25 +1566,25 @@ class FdfParser:
         \r
         if self.__IsKeyword( "RuleOverride"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected Rule name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Rule name At Line ", self.FileName, self.CurrentLineNumber)\r
             FfsInfObj.Rule = self.__Token\r
             \r
         if self.__IsKeyword( "VERSION"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected Version At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Version At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if self.__GetStringData():\r
                 FfsInfObj.Version = self.__Token\r
         \r
         if self.__IsKeyword( "UI"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected UI name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected UI name At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if self.__GetStringData():\r
                 FfsInfObj.Ui = self.__Token\r
@@ -1484,7 +1601,7 @@ class FdfParser:
                 \r
             while self.__GetNextToken():\r
                 if not p.match(self.__Token):\r
-                    raise Warning("expected KeyString \"Target_Tag_Arch\" At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected KeyString \"Target_Tag_Arch\" At Line ", self.FileName, self.CurrentLineNumber)\r
                 FfsInfObj.KeyStringList.append(self.__Token)\r
     \r
                 if not self.__IsToken(","):\r
@@ -1508,14 +1625,14 @@ class FdfParser:
         FfsFileObj = FfsFileStatement.FileStatement()\r
         \r
         if not self.__GetNextWord():\r
-            raise Warning("expected FFS type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected FFS type At Line ", self.FileName, self.CurrentLineNumber)\r
         FfsFileObj.FvFileType = self.__Token\r
         \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextGuid():\r
-            raise Warning("expected File GUID At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected File GUID At Line ", self.FileName, self.CurrentLineNumber)\r
         FfsFileObj.NameGuid = self.__Token\r
     \r
         self.__GetFilePart( FfsFileObj, MacroDict.copy())\r
@@ -1584,23 +1701,23 @@ class FdfParser:
 #                    raise Warning("File type %s could not have reloc strip flag At Line %d" % (FfsFileObj.FvFileType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
 #            \r
 #            if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         if not self.__GetNextToken():\r
-            raise Warning("expected File name or section data At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected File name or section data At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if self.__Token == "FV":\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected FV name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
             FfsFileObj.FvName = self.__Token\r
             \r
         elif self.__Token == "FD":\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected FD name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected FD name At Line ", self.FileName, self.CurrentLineNumber)\r
             FfsFileObj.FdName = self.__Token\r
             \r
         elif self.__Token in ("DEFINE", "APRIORI", "SECTION"):\r
@@ -1610,7 +1727,7 @@ class FdfParser:
             FfsFileObj.FileName = self.__Token\r
         \r
         if not self.__IsToken( "}"):\r
-            raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
     \r
     ## __GetFileOpts() method\r
     #\r
@@ -1628,7 +1745,7 @@ class FdfParser:
                 if self.__IsToken(","):\r
                     while self.__GetNextToken():\r
                         if not Pattern.match(self.__Token):\r
-                            raise Warning("expected KeyString \"Target_Tag_Arch\" At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                            raise Warning("expected KeyString \"Target_Tag_Arch\" At Line ", self.FileName, self.CurrentLineNumber)\r
                         FfsFileObj.KeyStringList.append(self.__Token)\r
 \r
                         if not self.__IsToken(","):\r
@@ -1659,10 +1776,10 @@ class FdfParser:
     def __GetAlignment(self):\r
         if self.__IsKeyword( "Align", True):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__GetNextToken():\r
-                raise Warning("expected alignment value At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected alignment value At Line ", self.FileName, self.CurrentLineNumber)\r
             return True\r
             \r
         return False\r
@@ -1707,7 +1824,7 @@ class FdfParser:
         \r
         if not self.__IsKeyword( "SECTION"):\r
             if len(Obj.SectionList) == 0:\r
-                raise Warning("expected SECTION At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected SECTION At Line ", self.FileName, self.CurrentLineNumber)\r
             else:\r
                 return False\r
         \r
@@ -1718,18 +1835,18 @@ class FdfParser:
         BuildNum = None\r
         if self.__IsKeyword( "BUILD_NUM"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__GetNextToken():\r
-                raise Warning("expected Build number value At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Build number value At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             BuildNum = self.__Token\r
             \r
         if self.__IsKeyword( "VERSION"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected version At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected version At Line ", self.FileName, self.CurrentLineNumber)\r
             VerSectionObj = VerSection.VerSection()\r
             VerSectionObj.Alignment = AlignValue\r
             VerSectionObj.BuildNum = BuildNum\r
@@ -1741,9 +1858,9 @@ class FdfParser:
 \r
         elif self.__IsKeyword( "UI"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected UI At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected UI At Line ", self.FileName, self.CurrentLineNumber)\r
             UiSectionObj = UiSection.UiSection()\r
             UiSectionObj.Alignment = AlignValue\r
             if self.__GetStringData():\r
@@ -1754,9 +1871,9 @@ class FdfParser:
             \r
         elif self.__IsKeyword( "FV_IMAGE"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextWord():\r
-                raise Warning("expected FV name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             FvName = self.__Token.upper()\r
             FvObj = None\r
@@ -1780,7 +1897,7 @@ class FdfParser:
                         break\r
     \r
                 if not self.__IsToken( "}"):\r
-                    raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             FvImageSectionObj = FvImageSection.FvImageSection()\r
             FvImageSectionObj.Alignment = AlignValue\r
@@ -1798,11 +1915,11 @@ class FdfParser:
             DepexSectionObj.DepexType = self.__Token\r
             \r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__IsToken( "{"):\r
-                raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
             if not self.__SkipToToken( "}"):\r
-                raise Warning("expected Depex expression ending '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Depex expression ending '}' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             DepexSectionObj.Expression = self.__SkippedChars.rstrip('}')\r
             Obj.SectionList.append(DepexSectionObj)\r
@@ -1810,7 +1927,7 @@ class FdfParser:
         else:\r
             \r
             if not self.__GetNextWord():\r
-                raise Warning("expected section type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected section type At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             # Encapsulation section appear, UndoToken and return\r
             if self.__Token == "COMPRESS" or self.__Token == "GUIDED":\r
@@ -1819,7 +1936,7 @@ class FdfParser:
             \r
             if self.__Token not in ("COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\\r
                                "UI", "VERSION", "PEI_DEPEX", "SUBTYPE_GUID"):\r
-                raise Warning("Unknown section type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown section type At Line ", self.FileName, self.CurrentLineNumber)\r
             # DataSection\r
             DataSectionObj = DataSection.DataSection()\r
             DataSectionObj.Alignment = AlignValue\r
@@ -1836,7 +1953,7 @@ class FdfParser:
             \r
             if self.__IsToken("="):\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected section file path At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected section file path At Line ", self.FileName, self.CurrentLineNumber)\r
                 DataSectionObj.SectFileName = self.__Token\r
             else:\r
                 if not self.__GetCglSection(DataSectionObj):\r
@@ -1864,7 +1981,7 @@ class FdfParser:
                 type = self.__Token\r
                 \r
             if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
             CompressSectionObj = CompressSection.CompressSection()\r
             CompressSectionObj.Alignment = AlignValue\r
@@ -1878,11 +1995,11 @@ class FdfParser:
             \r
             \r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
             Obj.SectionList.append(CompressSectionObj)\r
                 \r
 #            else:\r
-#               raise Warning("Compress type not known At Line %d" % self.CurrentLineNumber\r
+#               raise Warning("Compress type not known At Line "\r
            \r
             return True\r
         \r
@@ -1893,7 +2010,7 @@ class FdfParser:
 \r
             AttribDict = self.__GetGuidAttrib()\r
             if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
             GuidSectionObj = GuidSection.GuidSection()\r
             GuidSectionObj.Alignment = AlignValue\r
             GuidSectionObj.NameGuid = GuidValue\r
@@ -1908,7 +2025,7 @@ class FdfParser:
                     break\r
             \r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
             Obj.SectionList.append(GuidSectionObj)\r
                 \r
             return True\r
@@ -1931,20 +2048,20 @@ class FdfParser:
             AttribKey = self.__Token\r
 \r
             if not self.__IsToken("="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__GetNextToken() or self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
-                raise Warning("expected TRUE/FALSE (1/0) At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected TRUE/FALSE (1/0) At Line ", self.FileName, self.CurrentLineNumber)\r
             AttribDict[AttribKey] = self.__Token\r
             \r
         if self.__IsKeyword("PROCESSING_REQUIRED") or self.__IsKeyword("AUTH_STATUS_VALID"):\r
             AttribKey = self.__Token\r
 \r
             if not self.__IsToken("="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ")\r
 \r
             if not self.__GetNextToken() or self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
-                raise Warning("expected TRUE/FALSE (1/0) At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected TRUE/FALSE (1/0) At Line ", self.FileName, self.CurrentLineNumber)\r
             AttribDict[AttribKey] = self.__Token\r
             \r
         return AttribDict\r
@@ -1963,7 +2080,7 @@ class FdfParser:
         OldPos = self.GetFileBufferPos()\r
         if not self.__IsKeyword( "SECTION"):\r
             if len(FfsFileObj.SectionList) == 0:\r
-                raise Warning("expected SECTION At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected SECTION At Line ", self.FileName, self.CurrentLineNumber)\r
             else:\r
                 return False\r
         \r
@@ -2002,25 +2119,25 @@ class FdfParser:
         if not self.__IsToken("[CAPSULE.", True):\r
             print 'Parsing String: %s At line: %d, Offset Within Line: %d' \\r
                     % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], self.CurrentLineNumber, self.CurrentOffsetWithinLine)\r
-            raise Warning("expected [Capsule.] At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)        \r
+            raise Warning("expected [Capsule.] At Line ", self.FileName, self.CurrentLineNumber)        \r
             \r
         CapsuleObj = Capsule.Capsule()\r
 \r
         CapsuleName = self.__GetUiName()\r
         if not CapsuleName:\r
-            raise Warning("expected capsule name At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected capsule name At line ", self.FileName, self.CurrentLineNumber)\r
         \r
         CapsuleObj.UiCapsuleName = CapsuleName.upper()\r
         \r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if self.__IsKeyword("CREATE_FILE"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__GetNextToken():\r
-                raise Warning("expected file name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected file name At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             CapsuleObj.CreateFile = self.__Token\r
         \r
@@ -2052,7 +2169,7 @@ class FdfParser:
     def __GetCapsuleTokens(self, Obj):\r
         \r
         if not self.__IsKeyword("CAPSULE_GUID"):\r
-            raise Warning("expected 'CAPSULE_GUID' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected 'CAPSULE_GUID' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         while self.__CurrentLine().find("=") != -1:\r
             NameValue = self.__CurrentLine().split("=")\r
@@ -2091,10 +2208,10 @@ class FdfParser:
             return False\r
         \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetNextToken():\r
-            raise Warning("expected FV name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         CapsuleFv = CapsuleData.CapsuleFv()\r
         CapsuleFv.FvName = self.__Token\r
@@ -2123,25 +2240,25 @@ class FdfParser:
         if not self.__IsToken("[Rule.", True):\r
             print 'Parsing String: %s At line: %d, Offset Within Line: %d' \\r
                     % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], self.CurrentLineNumber, self.CurrentOffsetWithinLine)\r
-            raise Warning("expected [Rule.] At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected [Rule.] At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__SkipToToken("."):\r
-            raise Warning("expected '.' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '.' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         Arch = self.__SkippedChars.rstrip(".")\r
         if Arch.upper() not in ("IA32", "X64", "IPF", "EBC", "COMMON"):\r
-            raise Warning("Unknown Arch At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
         \r
         ModuleType = self.__GetModuleType()\r
         \r
         TemplateName = ""\r
         if self.__IsToken("."):\r
             if not self.__GetNextWord():\r
-                raise Warning("expected template name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected template name At Line ", self.FileName, self.CurrentLineNumber)\r
             TemplateName = self.__Token\r
             \r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         RuleObj = self.__GetRuleFileStatements()\r
         RuleObj.Arch = Arch.upper()\r
@@ -2174,12 +2291,12 @@ class FdfParser:
     def __GetModuleType(self):\r
         \r
         if not self.__GetNextWord():\r
-            raise Warning("expected Module type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Module type At Line ", self.FileName, self.CurrentLineNumber)\r
         if self.__Token.upper() not in ("SEC", "PEI_CORE", "PEIM", "DXE_CORE", \\r
                              "DXE_DRIVER", "DXE_SAL_DRIVER", \\r
                              "DXE_SMM_DRIVER", "DXE_RUNTIME_DRIVER", \\r
                              "UEFI_DRIVER", "UEFI_APPLICATION", "USER_DEFINED", "DEFAULT", "BASE"):\r
-            raise Warning("Unknown Module type At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown Module type At line ", self.FileName, self.CurrentLineNumber)\r
         return self.__Token\r
     \r
     ## __GetFileExtension() method\r
@@ -2191,7 +2308,7 @@ class FdfParser:
     #\r
     def __GetFileExtension(self):\r
         if not self.__IsToken("."):\r
-                raise Warning("expected '.' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '.' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
         Ext = ""\r
         if self.__GetNextToken():\r
@@ -2200,10 +2317,10 @@ class FdfParser:
                 Ext = self.__Token                            \r
                 return '.' + Ext    \r
             else:\r
-                raise Warning("Unknown file extension At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown file extension At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
         else:\r
-            raise Warning("expected file extension At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected file extension At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
     ## __GetRuleFileStatement() method\r
     #\r
@@ -2215,21 +2332,21 @@ class FdfParser:
     def __GetRuleFileStatements(self):\r
         \r
         if not self.__IsKeyword("FILE"):\r
-            raise Warning("expected FILE At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected FILE At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetNextWord():\r
-            raise Warning("expected FV type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected FV type At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         Type = self.__Token.strip().upper()\r
         if Type not in ("RAW", "FREEFORM", "SEC", "PEI_CORE", "PEIM",\\r
                              "PEI_DXE_COMBO", "DRIVER", "DXE_CORE", "APPLICATION", "FV_IMAGE"):\r
-            raise Warning("Unknown FV type At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown FV type At line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__IsKeyword("$(NAMED_GUID)"):\r
-            raise Warning("expected $(NAMED_GUID) At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected $(NAMED_GUID) At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         KeepReloc = None\r
         if self.__IsKeyword('RELOCS_STRIPPED') or self.__IsKeyword('RELOCS_RETAINED'):\r
@@ -2249,7 +2366,7 @@ class FdfParser:
                 if self.__IsToken(","):\r
                     while self.__GetNextToken():\r
                         if not Pattern.match(self.__Token):\r
-                            raise Warning("expected KeyString \"Target_Tag_Arch\" At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                            raise Warning("expected KeyString \"Target_Tag_Arch\" At Line ", self.FileName, self.CurrentLineNumber)\r
                         KeyStringList.append(self.__Token)\r
 \r
                         if not self.__IsToken(","):\r
@@ -2270,7 +2387,7 @@ class FdfParser:
         AlignValue = ""\r
         if self.__GetAlignment():\r
             if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):\r
-                raise Warning("Incorrect alignment At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect alignment At Line ", self.FileName, self.CurrentLineNumber)\r
             AlignValue = self.__Token\r
 \r
         if self.__IsToken("{"):\r
@@ -2291,7 +2408,7 @@ class FdfParser:
                     break\r
                 \r
             if not self.__IsToken("}"):\r
-                raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             return Rule\r
         \r
@@ -2315,13 +2432,13 @@ class FdfParser:
         else:\r
             # Simple file rule expected\r
             if not self.__GetNextWord():\r
-                raise Warning("expected leaf section type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected leaf section type At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
             SectionName = self.__Token\r
         \r
             if SectionName not in ("COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\\r
                                     "UI", "PEI_DEPEX", "VERSION", "SUBTYPE_GUID"):\r
-                raise Warning("Unknown leaf section name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown leaf section name At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
 \r
             if self.__IsKeyword("Fixed", True):\r
@@ -2332,11 +2449,11 @@ class FdfParser:
     \r
             if self.__GetAlignment():\r
                 if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):\r
-                    raise Warning("Incorrect alignment At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("Incorrect alignment At Line ", self.FileName, self.CurrentLineNumber)\r
                 AlignValue = self.__Token\r
             \r
             if not self.__GetNextToken():\r
-                raise Warning("expected File name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected File name At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             Rule = RuleSimpleFile.RuleSimpleFile()\r
             Rule.SectionType = SectionName\r
@@ -2392,18 +2509,18 @@ class FdfParser:
                         break\r
     \r
                 if not self.__IsToken( "}"):\r
-                    raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
                 FvImageSectionObj.Fv = FvObj\r
                 FvImageSectionObj.FvName = None\r
                 \r
             else:\r
                 if not self.__IsKeyword("FV"):\r
-                    raise Warning("expected 'FV' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected 'FV' At Line ", self.FileName, self.CurrentLineNumber)\r
                 FvImageSectionObj.FvFileType = self.__Token\r
                 \r
                 if self.__GetAlignment():\r
                     if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):\r
-                        raise Warning("Incorrect alignment At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                        raise Warning("Incorrect alignment At Line ", self.FileName, self.CurrentLineNumber)\r
                     FvImageSectionObj.Alignment = self.__Token\r
                 \r
                 if self.__IsKeyword("FV"):\r
@@ -2411,7 +2528,7 @@ class FdfParser:
                 \r
                 if self.__GetAlignment():\r
                     if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):\r
-                        raise Warning("Incorrect alignment At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                        raise Warning("Incorrect alignment At Line ", self.FileName, self.CurrentLineNumber)\r
                     FvImageSectionObj.Alignment = self.__Token\r
                     \r
                 if self.__IsToken('|'):\r
@@ -2423,7 +2540,7 @@ class FdfParser:
                     else:\r
                         self.__UndoToken()\r
                 else:\r
-                    raise Warning("expected FV file name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected FV file name At Line ", self.FileName, self.CurrentLineNumber)\r
                     \r
             Obj.SectionList.append(FvImageSectionObj)\r
             return True\r
@@ -2432,17 +2549,17 @@ class FdfParser:
         EfiSectionObj.SectionType = SectionName\r
         \r
         if not self.__GetNextToken():\r
-            raise Warning("expected file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected file type At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if self.__Token == "STRING":\r
             if not self.__RuleSectionCouldHaveString(EfiSectionObj.SectionType):\r
                 raise Warning("%s section could NOT have string data At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__IsToken('='):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
             \r
             if not self.__GetNextToken():\r
-                raise Warning("expected Quoted String At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Quoted String At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             if self.__GetStringData():\r
                 EfiSectionObj.StringData = self.__Token\r
@@ -2452,9 +2569,9 @@ class FdfParser:
                     raise Warning("%s section could NOT have BUILD_NUM At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
             \r
                 if not self.__IsToken("="):\r
-                    raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected Build number At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected Build number At Line ", self.FileName, self.CurrentLineNumber)\r
                 EfiSectionObj.BuildNum = self.__Token\r
                 \r
         else:\r
@@ -2471,9 +2588,9 @@ class FdfParser:
                     raise Warning("%s section could NOT have BUILD_NUM At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
                 \r
                 if not self.__IsToken("="):\r
-                    raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected Build number At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected Build number At Line ", self.FileName, self.CurrentLineNumber)\r
                 EfiSectionObj.BuildNum = self.__Token\r
                 \r
         if self.__GetAlignment():\r
@@ -2500,7 +2617,7 @@ class FdfParser:
             else:\r
                 self.__UndoToken()\r
         else:\r
-            raise Warning("expected section file name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected section file name At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
         Obj.SectionList.append(EfiSectionObj)\r
         return True\r
@@ -2561,34 +2678,34 @@ class FdfParser:
     def __CheckRuleSectionFileType(self, SectionType, FileType):\r
         if SectionType == "COMPAT16":\r
             if FileType not in ("COMPAT16", "SEC_COMPAT16"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "PE32":\r
             if FileType not in ("PE32", "SEC_PE32"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "PIC":\r
             if FileType not in ("PIC", "PIC"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "TE":\r
             if FileType not in ("TE", "SEC_TE"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "RAW":\r
             if FileType not in ("BIN", "SEC_BIN", "RAW", "ASL", "ACPI"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "DXE_DEPEX":\r
             if FileType not in ("DXE_DEPEX", "SEC_DXE_DEPEX"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "UI":\r
             if FileType not in ("UI", "SEC_UI"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "VERSION":\r
             if FileType not in ("VERSION", "SEC_VERSION"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "PEI_DEPEX":\r
             if FileType not in ("PEI_DEPEX", "SEC_PEI_DEPEX"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "GUID":\r
             if FileType not in ("PE32", "SEC_GUID"):\r
-                raise Warning("Incorrect section file type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)    \r
+                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)    \r
               \r
     ## __GetRuleEncapsulationSection() method\r
     #\r
@@ -2607,7 +2724,7 @@ class FdfParser:
                 Type = self.__Token\r
                 \r
             if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
             CompressSectionObj = CompressSection.CompressSection()\r
             \r
@@ -2620,7 +2737,7 @@ class FdfParser:
                     break\r
             \r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
             Rule.SectionList.append(CompressSectionObj)\r
                 \r
             return True\r
@@ -2636,7 +2753,7 @@ class FdfParser:
             AttribDict = self.__GetGuidAttrib()\r
             \r
             if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
             GuidSectionObj = GuidSection.GuidSection()\r
             GuidSectionObj.NameGuid = GuidValue\r
             GuidSectionObj.SectionType = "GUIDED"\r
@@ -2651,7 +2768,7 @@ class FdfParser:
                     break\r
             \r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
             Rule.SectionList.append(GuidSectionObj)\r
 \r
             return True\r
@@ -2683,17 +2800,17 @@ class FdfParser:
         if not self.__IsToken("[VTF.", True):\r
             print 'Parsing String: %s At line: %d, Offset Within Line: %d' \\r
                     % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], self.CurrentLineNumber, self.CurrentOffsetWithinLine)\r
-            raise Warning("expected [VTF.] At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected [VTF.] At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__SkipToToken("."):\r
-            raise Warning("expected '.' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '.' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         Arch = self.__SkippedChars.rstrip(".").upper()\r
         if Arch not in ("IA32", "X64", "IPF"):\r
-            raise Warning("Unknown Arch At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextWord():\r
-            raise Warning("expected VTF name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected VTF name At Line ", self.FileName, self.CurrentLineNumber)\r
         Name = self.__Token.upper()\r
 \r
         VtfObj = Vtf.Vtf()\r
@@ -2702,20 +2819,20 @@ class FdfParser:
         \r
         if self.__IsToken(","):\r
             if not self.__GetNextWord():\r
-                raise Warning("expected Arch list At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Arch list At Line ", self.FileName, self.CurrentLineNumber)\r
             if self.__Token.upper() not in ("IA32", "X64", "IPF"):\r
-                raise Warning("Unknown Arch At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
             VtfObj.ArchList = self.__Token.upper()\r
 \r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if self.__IsKeyword("IA32_RST_BIN"):\r
             if not self.__IsToken("="):\r
-                raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
             if not self.__GetNextToken():\r
-                raise Warning("expected Reset file At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Reset file At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
             VtfObj.ResetBin = self.__Token\r
             \r
@@ -2740,29 +2857,29 @@ class FdfParser:
             return False\r
         \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextWord():\r
-            raise Warning("expected Component Name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component Name At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         CompStatementObj = ComponentStatement.ComponentStatement()\r
         CompStatementObj.CompName = self.__Token\r
         \r
         if not self.__IsKeyword("COMP_LOC"):\r
-            raise Warning("expected COMP_LOC At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_LOC At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         CompStatementObj.CompLoc = ""\r
         if self.__GetNextWord():\r
             CompStatementObj.CompLoc = self.__Token\r
             if self.__IsToken('|'):\r
                 if not self.__GetNextWord():\r
-                    raise Warning("Expected Region Name At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("Expected Region Name At Line ", self.FileName, self.CurrentLineNumber)\r
                 \r
                 if self.__Token not in ("F", "N", "S"):    #, "H", "L", "PH", "PL"): not support\r
-                    raise Warning("Unknown location type At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("Unknown location type At line ", self.FileName, self.CurrentLineNumber)\r
     \r
                 CompStatementObj.FilePos = self.__Token\r
         else:\r
@@ -2770,73 +2887,73 @@ class FdfParser:
             self.CurrentOffsetWithinLine = 0\r
         \r
         if not self.__IsKeyword("COMP_TYPE"):\r
-            raise Warning("expected COMP_TYPE At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_TYPE At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component type At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component type At Line ", self.FileName, self.CurrentLineNumber)\r
         if self.__Token not in ("FIT", "PAL_B", "PAL_A", "OEM"):\r
             if not self.__Token.startswith("0x") or len(self.__Token) < 3 or len(self.__Token) > 4 or \\r
                 not self.__HexDigit(self.__Token[2]) or not self.__HexDigit(self.__Token[-1]):\r
-                raise Warning("Unknown location type At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown location type At line ", self.FileName, self.CurrentLineNumber)\r
         CompStatementObj.CompType = self.__Token\r
         \r
         if not self.__IsKeyword("COMP_VER"):\r
-            raise Warning("expected COMP_VER At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_VER At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component version At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component version At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         Pattern = re.compile('-$|[0-9]{0,1}[0-9]{1}\.[0-9]{0,1}[0-9]{1}')\r
         if Pattern.match(self.__Token) == None:\r
-            raise Warning("Unknown version format At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown version format At line ", self.FileName, self.CurrentLineNumber)\r
         CompStatementObj.CompVer = self.__Token\r
         \r
         if not self.__IsKeyword("COMP_CS"):\r
-            raise Warning("expected COMP_CS At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_CS At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component CS At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component CS At Line ", self.FileName, self.CurrentLineNumber)\r
         if self.__Token not in ("1", "0"):\r
-            raise Warning("Unknown  Component CS At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown  Component CS At line ", self.FileName, self.CurrentLineNumber)\r
         CompStatementObj.CompCs = self.__Token\r
         \r
         \r
         if not self.__IsKeyword("COMP_BIN"):\r
-            raise Warning("expected COMP_BIN At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_BIN At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component file At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component file At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         CompStatementObj.CompBin = self.__Token\r
         \r
         if not self.__IsKeyword("COMP_SYM"):\r
-            raise Warning("expected COMP_SYM At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_SYM At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component symbol file At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component symbol file At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         CompStatementObj.CompSym = self.__Token\r
     \r
         if not self.__IsKeyword("COMP_SIZE"):\r
-            raise Warning("expected COMP_SIZE At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_SIZE At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if self.__IsToken("-"):\r
             CompStatementObj.CompSize = self.__Token\r
@@ -2845,7 +2962,7 @@ class FdfParser:
         elif self.__GetNextHexNumber():\r
             CompStatementObj.CompSize = self.__Token\r
         else:\r
-            raise Warning("Unknown size At line %d" % self.CurrentLineNumber, self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown size At line ", self.FileName, self.CurrentLineNumber)\r
         \r
         VtfObj.ComponentStatementList.append(CompStatementObj)\r
         return True\r
@@ -2980,7 +3097,7 @@ class FdfParser:
             return CycleRefExists\r
         \r
 if __name__ == "__main__":\r
-    parser = FdfParser("..\Test.fdf")\r
+    parser = FdfParser("..\LakeportX64Pkg.fdf")\r
     parser.ParseFile()\r
     parser.CycleReferenceCheck()\r
     print "Success!"\r