__ValidString = re.compile(r'[_a-zA-Z][_0-9a-zA-Z]*$')\r
_ReLabel = re.compile('LABEL\((\w+)\)')\r
_ReOffset = re.compile('OFFSET_OF\((\w+)\)')\r
+PcdPattern = re.compile(r'[_a-zA-Z][0-9A-Za-z_]*\.[_a-zA-Z][0-9A-Za-z_]*$')\r
\r
## SplitString\r
# Split string to list according double quote\r
\r
NonLetterOpLst = ['+', '-', '*', '/', '%', '&', '|', '^', '~', '<<', '>>', '!', '=', '>', '<', '?', ':']\r
\r
- PcdPattern = re.compile(r'[_a-zA-Z][0-9A-Za-z_]*\.[_a-zA-Z][0-9A-Za-z_]*$')\r
\r
SymbolPattern = re.compile("("\r
"\$\([A-Z][A-Z0-9_]*\)|\$\(\w+\.\w+\)|\w+\.\w+|"\r
raise BadExpression(ERR_EMPTY_TOKEN)\r
\r
# PCD token\r
- if self.PcdPattern.match(self._Token):\r
+ if PcdPattern.match(self._Token):\r
if self._Token not in self._Symb:\r
Ex = BadExpression(ERR_PCD_RESOLVE % self._Token)\r
Ex.Pcd = self._Token\r
elif Item.startswith('UINT64'):\r
ItemSize = 8\r
ValueType = 'UINT64'\r
- elif Item.startswith('"') or Item.startswith("'") or Item.startswith('L'):\r
+ elif Item[0] in ['"',"'",'L']:\r
ItemSize = 0\r
ValueType = 'VOID*'\r
else:\r
\r
if ItemSize == 0:\r
try:\r
- tmpValue = int(Item, 16) if Item.upper().startswith('0X') else int(Item, 0)\r
+ tmpValue = int(Item, 0)\r
if tmpValue > 255:\r
raise BadExpression("Byte array number %s should less than 0xFF." % Item)\r
except BadExpression, Value:\r
ItemValue = ParseFieldValue(Item)[0]\r
\r
if type(ItemValue) == type(''):\r
- ItemValue = int(ItemValue, 16) if ItemValue.startswith('0x') else int(ItemValue)\r
+ ItemValue = int(ItemValue, 0)\r
\r
TmpValue = (ItemValue << (Size * 8)) | TmpValue\r
Size = Size + ItemSize\r
OffsetList = _ReOffset.findall(Item)\r
except:\r
pass\r
+ # replace each offset, except errors\r
for Offset in OffsetList:\r
- if Offset in LabelDict.keys():\r
- Re = re.compile('OFFSET_OF\(%s\)' % Offset)\r
- Item = Re.sub(LabelDict[Offset], Item)\r
- else:\r
+ try:\r
+ Item = Item.replace('OFFSET_OF({})'.format(Offset),LabelDict[Offset])\r
+ except:\r
raise BadExpression('%s not defined' % Offset)\r
+\r
NewPcdValueList.append(Item)\r
\r
AllPcdValueList = []\r