\r
## Regular expressions for string identifier checking\r
gIdentifierPattern = re.compile('^[a-zA-Z][a-zA-Z0-9_]*$', re.UNICODE)\r
+## Regular expression for GUID c structure format\r
+_GuidCFormatPattern = r"{{\s*0[xX]{Hex}{{1,8}}\s*,\s*0[xX]{Hex}{{1,4}}\s*,\s*0[xX]{Hex}{{1,4}}" \\r
+ r"\s*,\s*{{\s*0[xX]{Hex}{{1,2}}\s*,\s*0[xX]{Hex}{{1,2}}" \\r
+ r"\s*,\s*0[xX]{Hex}{{1,2}}\s*,\s*0[xX]{Hex}{{1,2}}" \\r
+ r"\s*,\s*0[xX]{Hex}{{1,2}}\s*,\s*0[xX]{Hex}{{1,2}}" \\r
+ r"\s*,\s*0[xX]{Hex}{{1,2}}\s*,\s*0[xX]{Hex}{{1,2}}\s*}}\s*}}".format(Hex=_HexChar)\r
+gGuidCFormatPattern = re.compile(r"{}".format(_GuidCFormatPattern))\r
\r
#\r
# A global variable for whether current build in AutoGen phase or not.\r
# @retval string The GUID value in xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx format\r
#\r
def GuidStructureStringToGuidString(GuidValue):\r
+ if not GlobalData.gGuidCFormatPattern.match(GuidValue):\r
+ return ''\r
guidValueString = GuidValue.lower().replace("{", "").replace("}", "").replace(" ", "").replace(";", "")\r
guidValueList = guidValueString.split(",")\r
if len(guidValueList) != 11:\r
Value = Value.split('(', 1)[1][:-1].strip()\r
if Value[0] == '{' and Value[-1] == '}':\r
TmpValue = GuidStructureStringToGuidString(Value)\r
- if len(TmpValue) == 0:\r
+ if not TmpValue:\r
raise BadExpression("Invalid GUID value string %s" % Value)\r
Value = TmpValue\r
if Value[0] == '"' and Value[-1] == '"':\r