summaryrefslogtreecommitdiff
path: root/BaseTools/Source/Python/UPT/Parser/InfDefineSectionParser.py
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/Python/UPT/Parser/InfDefineSectionParser.py')
-rw-r--r--BaseTools/Source/Python/UPT/Parser/InfDefineSectionParser.py197
1 files changed, 0 insertions, 197 deletions
diff --git a/BaseTools/Source/Python/UPT/Parser/InfDefineSectionParser.py b/BaseTools/Source/Python/UPT/Parser/InfDefineSectionParser.py
deleted file mode 100644
index d00087a128..0000000000
--- a/BaseTools/Source/Python/UPT/Parser/InfDefineSectionParser.py
+++ /dev/null
@@ -1,197 +0,0 @@
-## @file
-# This file contained the parser for define sections in INF file
-#
-# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-#
-# This program and the accompanying materials are licensed and made available
-# under the terms and conditions of the BSD License which accompanies this
-# distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-
-'''
-InfDefineSectionParser
-'''
-##
-# Import Modules
-#
-import re
-
-from Library import DataType as DT
-from Library import GlobalData
-from Library.Parsing import MacroParser
-from Library.Misc import GetSplitValueList
-from Library.ParserValidate import IsValidArch
-from Object.Parser.InfCommonObject import InfLineCommentObject
-from Object.Parser.InfDefineObject import InfDefMember
-from Parser.InfParserMisc import InfExpandMacro
-from Object.Parser.InfMisc import ErrorInInf
-from Logger import StringTable as ST
-from Parser.InfParserMisc import InfParserSectionRoot
-
-## __GetValidateArchList
-#
-#
-def GetValidateArchList(LineContent):
-
- TempArch = ''
- ArchList = []
- ValidateAcrhPatten = re.compile(r"^\s*#\s*VALID_ARCHITECTURES\s*=\s*.*$", re.DOTALL)
-
- if ValidateAcrhPatten.match(LineContent):
- TempArch = GetSplitValueList(LineContent, DT.TAB_EQUAL_SPLIT, 1)[1]
-
- TempArch = GetSplitValueList(TempArch, '(', 1)[0]
-
- ArchList = re.split('\s+', TempArch)
- NewArchList = []
- for Arch in ArchList:
- if IsValidArch(Arch):
- NewArchList.append(Arch)
-
- ArchList = NewArchList
-
- return ArchList
-
-class InfDefinSectionParser(InfParserSectionRoot):
- def InfDefineParser(self, SectionString, InfSectionObject, FileName, SectionComment):
-
- if SectionComment:
- pass
- #
- # Parser Defines section content and fill self._ContentList dict.
- #
- StillCommentFalg = False
- HeaderComments = []
- SectionContent = ''
- ArchList = []
- _ContentList = []
- _ValueList = []
- #
- # Add WORKSPACE to global Marco dict.
- #
- self.FileLocalMacros['WORKSPACE'] = GlobalData.gWORKSPACE
-
- for Line in SectionString:
- LineContent = Line[0]
- LineNo = Line[1]
- TailComments = ''
- LineComment = None
-
- LineInfo = ['', -1, '']
- LineInfo[0] = FileName
- LineInfo[1] = LineNo
- LineInfo[2] = LineContent
-
- if LineContent.strip() == '':
- continue
- #
- # The first time encountered VALIDATE_ARCHITECHERS will be considered as support arch list.
- #
- if not ArchList:
- ArchList = GetValidateArchList(LineContent)
-
- #
- # Parser Comment
- #
- if LineContent.strip().startswith(DT.TAB_COMMENT_SPLIT):
- #
- # Last line is comments, and this line go on.
- #
- if StillCommentFalg:
- HeaderComments.append(Line)
- SectionContent += LineContent + DT.END_OF_LINE
- continue
- #
- # First time encounter comment
- #
- else:
- #
- # Clear original data
- #
- HeaderComments = []
- HeaderComments.append(Line)
- StillCommentFalg = True
- SectionContent += LineContent + DT.END_OF_LINE
- continue
- else:
- StillCommentFalg = False
-
- if len(HeaderComments) >= 1:
- LineComment = InfLineCommentObject()
- LineCommentContent = ''
- for Item in HeaderComments:
- LineCommentContent += Item[0] + DT.END_OF_LINE
- LineComment.SetHeaderComments(LineCommentContent)
-
- #
- # Find Tail comment.
- #
- if LineContent.find(DT.TAB_COMMENT_SPLIT) > -1:
- TailComments = LineContent[LineContent.find(DT.TAB_COMMENT_SPLIT):]
- LineContent = LineContent[:LineContent.find(DT.TAB_COMMENT_SPLIT)]
- if LineComment == None:
- LineComment = InfLineCommentObject()
- LineComment.SetTailComments(TailComments)
-
- #
- # Find Macro
- #
- Name, Value = MacroParser((LineContent, LineNo),
- FileName,
- DT.MODEL_META_DATA_HEADER,
- self.FileLocalMacros)
- if Name != None:
- self.FileLocalMacros[Name] = Value
- continue
-
- #
- # Replace with [Defines] section Macro
- #
- LineContent = InfExpandMacro(LineContent,
- (FileName, LineContent, LineNo),
- self.FileLocalMacros,
- None, True)
-
- SectionContent += LineContent + DT.END_OF_LINE
-
- TokenList = GetSplitValueList(LineContent, DT.TAB_EQUAL_SPLIT, 1)
- if len(TokenList) < 2:
- ErrorInInf(ST.ERR_INF_PARSER_DEFINE_ITEM_NO_VALUE,
- LineInfo=LineInfo)
- _ValueList[0:len(TokenList)] = TokenList
- if not _ValueList[0]:
- ErrorInInf(ST.ERR_INF_PARSER_DEFINE_ITEM_NO_NAME,
- LineInfo=LineInfo)
- if not _ValueList[1]:
- ErrorInInf(ST.ERR_INF_PARSER_DEFINE_ITEM_NO_VALUE,
- LineInfo=LineInfo)
-
- Name, Value = _ValueList[0], _ValueList[1]
-
- InfDefMemberObj = InfDefMember(Name, Value)
- if (LineComment != None):
- InfDefMemberObj.Comments.SetHeaderComments(LineComment.GetHeaderComments())
- InfDefMemberObj.Comments.SetTailComments(LineComment.GetTailComments())
-
- InfDefMemberObj.CurrentLine.SetFileName(self.FullPath)
- InfDefMemberObj.CurrentLine.SetLineString(LineContent)
- InfDefMemberObj.CurrentLine.SetLineNo(LineNo)
-
- _ContentList.append(InfDefMemberObj)
- HeaderComments = []
- TailComments = ''
-
- #
- # Current Define section archs
- #
- if not ArchList:
- ArchList = ['COMMON']
-
- InfSectionObject.SetAllContent(SectionContent)
-
- InfSectionObject.SetDefines(_ContentList, Arch=ArchList)
- \ No newline at end of file