X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FCommon%2FExpression.py;h=4a7cd974b1212449a135e21ba0c34b5367476e9b;hp=683604cab5d3a9a83089522e2f9d23d0d4156a9f;hb=38504ad3e3163fd8afbfc66760455df9dd223713;hpb=56326323e6579d4cde9802c684baba06acbdb1d2 diff --git a/BaseTools/Source/Python/Common/Expression.py b/BaseTools/Source/Python/Common/Expression.py index 683604cab5..4a7cd974b1 100644 --- a/BaseTools/Source/Python/Common/Expression.py +++ b/BaseTools/Source/Python/Common/Expression.py @@ -41,6 +41,8 @@ ERR_EMPTY_EXPR = 'Empty expression is not allowed.' ERR_IN_OPERAND = 'Macro after IN operator can only be: $(FAMILY), $(ARCH), $(TOOL_CHAIN_TAG) and $(TARGET).' __ValidString = re.compile(r'[_a-zA-Z][_0-9a-zA-Z]*$') +_ReLabel = re.compile('LABEL\((\w+)\)') +_ReOffset = re.compile('OFFSET_OF\((\w+)\)') ## SplitString # Split string to list according double quote @@ -896,13 +898,11 @@ class ValueExpressionEx(ValueExpression): PcdValueList = SplitPcdValueString(PcdValue.strip()[1:-1]) LabelDict = {} NewPcdValueList = [] - ReLabel = re.compile('LABEL\((\w+)\)') - ReOffset = re.compile('OFFSET_OF\((\w+)\)') LabelOffset = 0 for Index, Item in enumerate(PcdValueList): # compute byte offset of every LABEL - LabelList = ReLabel.findall(Item) - Item = ReLabel.sub('', Item) + LabelList = _ReLabel.findall(Item) + Item = _ReLabel.sub('', Item) Item = Item.strip() if LabelList: for Label in LabelList: @@ -929,11 +929,11 @@ class ValueExpressionEx(ValueExpression): # for LABEL parse Item = Item.strip() try: - Item = ReLabel.sub('', Item) + Item = _ReLabel.sub('', Item) except: pass try: - OffsetList = ReOffset.findall(Item) + OffsetList = _ReOffset.findall(Item) except: pass for Offset in OffsetList: @@ -991,7 +991,7 @@ class ValueExpressionEx(ValueExpression): Item = '0x%x' % TmpValue if type(TmpValue) != type('') else TmpValue if ItemSize == 0: ItemValue, ItemSize = ParseFieldValue(Item) - if not (Item.startswith('"') or Item.startswith('L') or Item.startswith('{')) and ItemSize > 1: + if Item[0] not in ['"','L','{'] and ItemSize > 1: raise BadExpression("Byte array number %s should less than 0xFF." % Item) else: ItemValue = ParseFieldValue(Item)[0]