import OptionRom\r
import OptRomInfStatement\r
import OptRomFileStatement\r
+import string\r
\r
from GenFdsGlobalVariable import GenFdsGlobalVariable\r
from Common.BuildToolError import *\r
from Capsule import EFI_CERT_TYPE_PKCS7_GUID\r
from Capsule import EFI_CERT_TYPE_RSA2048_SHA256_GUID\r
from Common.RangeExpression import RangeExpression\r
-from Common.FdfParserLite import FileExtensionPattern\r
+from Common.FdfParserLite import FileExtensionPattern,TokenFindPattern\r
\r
##define T_CHAR_SPACE ' '\r
##define T_CHAR_NULL '\0'\r
if Scope in ['UINT64', 'UINT8']:\r
ValueNumber = 0\r
try:\r
- if Value.upper().startswith('0X'):\r
- ValueNumber = int (Value, 16)\r
- else:\r
- ValueNumber = int (Value)\r
+ ValueNumber = int (Value, 0)\r
except:\r
EdkLogger.error("FdfParser", FORMAT_INVALID, "The value is not valid dec or hex number for %s." % Name)\r
if ValueNumber < 0:\r
\r
self.__GetOneChar()\r
\r
- ## __HexDigit() method\r
- #\r
- # Whether char input is a Hex data bit\r
- #\r
- # @param self The object pointer\r
- # @param TempChar The char to test\r
- # @retval True The char is a Hex data bit\r
- # @retval False The char is NOT a Hex data bit\r
- #\r
- def __HexDigit(self, TempChar):\r
- if (TempChar >= 'a' and TempChar <= 'f') or (TempChar >= 'A' and TempChar <= 'F') \\r
- or (TempChar >= '0' and TempChar <= '9'):\r
- return True\r
- else:\r
- return False\r
-\r
def __IsHex(self, HexStr):\r
if not HexStr.upper().startswith("0X"):\r
return False\r
if len(self.__Token) <= 2:\r
return False\r
- charList = [c for c in HexStr[2 : ] if not self.__HexDigit( c)]\r
- if len(charList) == 0:\r
- return True\r
- else:\r
- return False\r
+ return True if all(x in string.hexdigits for x in HexStr[2:]) else False\r
+\r
## __GetNextHexNumber() method\r
#\r
# Get next HEX data before a seperator\r
def __GetFileOpts(self, FfsFileObj):\r
\r
if self.__GetNextToken():\r
- Pattern = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')\r
- if Pattern.match(self.__Token):\r
+ if TokenFindPattern.match(self.__Token):\r
FfsFileObj.KeyStringList.append(self.__Token)\r
if self.__IsToken(","):\r
while self.__GetNextToken():\r
- if not Pattern.match(self.__Token):\r
+ if not TokenFindPattern.match(self.__Token):\r
raise Warning("expected KeyString \"Target_Tag_Arch\"", self.FileName, self.CurrentLineNumber)\r
FfsFileObj.KeyStringList.append(self.__Token)\r
\r
\r
KeyStringList = []\r
if self.__GetNextToken():\r
- Pattern = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')\r
- if Pattern.match(self.__Token):\r
+ if TokenFindPattern.match(self.__Token):\r
KeyStringList.append(self.__Token)\r
if self.__IsToken(","):\r
while self.__GetNextToken():\r
- if not Pattern.match(self.__Token):\r
+ if not TokenFindPattern.match(self.__Token):\r
raise Warning("expected KeyString \"Target_Tag_Arch\"", self.FileName, self.CurrentLineNumber)\r
KeyStringList.append(self.__Token)\r
\r
raise Warning("expected Component type", 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
+ not self.__Token[2] in string.hexdigits or not self.__Token[-1] in string.hexdigits:\r
raise Warning("Unknown location type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
CompStatementObj.CompType = self.__Token\r
\r