from CommonDataClass.DataClass import *\r
from Common.DataType import *\r
from Common.String import *\r
-from Common.Misc import GuidStructureStringToGuidString, CheckPcdDatum, PathClass, AnalyzePcdData, AnalyzeDscPcd\r
+from Common.Misc import GuidStructureStringToGuidString, CheckPcdDatum, PathClass, AnalyzePcdData, AnalyzeDscPcd, AnalyzePcdExpression\r
from Common.Expression import *\r
from CommonDataClass.Exceptions import *\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
self._Comments = []\r
self._Version = 0x00010005 # Only EDK2 dec file is supported\r
self._AllPCDs = [] # Only for check duplicate PCD\r
+ self._AllPcdDict = {}\r
\r
## Parser starter\r
def Start(self):\r
# Has VOID* type string, may contain "|" character in the string. \r
if len(PtrValue) != 0:\r
ptrValueList = re.sub(ValueRe, '', TokenList[1])\r
- ValueList = GetSplitValueList(ptrValueList)\r
+ ValueList = AnalyzePcdExpression(ptrValueList)\r
ValueList[0] = PtrValue[0]\r
else:\r
- ValueList = GetSplitValueList(TokenList[1])\r
+ ValueList = AnalyzePcdExpression(TokenList[1])\r
\r
\r
# check if there's enough datum information given\r
ExtraData=self._CurrentLine + \\r
" (<TokenSpaceGuidCName>.<PcdCName>|<DefaultValue>|<DatumType>|<Token>)",\r
File=self.MetaFile, Line=self._LineIndex + 1)\r
+\r
+ PcdValue = ValueList[0]\r
+ if PcdValue:\r
+ try:\r
+ ValueList[0] = ValueExpression(PcdValue, self._AllPcdDict)(True)\r
+ except WrnExpression, Value:\r
+ ValueList[0] = Value.result\r
+\r
+ if ValueList[0] == 'True':\r
+ ValueList[0] = '1'\r
+ if ValueList[0] == 'False':\r
+ ValueList[0] = '0'\r
+\r
# check format of default value against the datum type\r
IsValid, Cause = CheckPcdDatum(ValueList[1], ValueList[0])\r
if not IsValid:\r
ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1)\r
else:\r
self._AllPCDs.append((self._Scope[0], self._ValueList[0], self._ValueList[1]))\r
+ self._AllPcdDict[TAB_SPLIT.join(self._ValueList[0:2])] = ValueList[0]\r
\r
self._ValueList[2] = ValueList[0].strip() + '|' + ValueList[1].strip() + '|' + ValueList[2].strip()\r
\r