from CommonDataClass.DataClass import *\r
from Common.DataType import *\r
from Common.String import *\r
-from Common.Misc import GuidStructureStringToGuidString, CheckPcdDatum, PathClass, AnalyzePcdData, AnalyzeDscPcd, AnalyzePcdExpression\r
+from Common.Misc import GuidStructureStringToGuidString, CheckPcdDatum, PathClass, AnalyzePcdData, AnalyzeDscPcd, AnalyzePcdExpression, ParseFieldValue\r
from Common.Expression import *\r
from CommonDataClass.Exceptions import *\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
self._PostProcessed = False\r
# Different version of meta-file has different way to parse.\r
self._Version = 0\r
+ self._GuidDict = {} # for Parser PCD value {GUID(gTokeSpaceGuidName)}\r
\r
## Store the parsed data in table\r
def _Store(self, *Args):\r
File=self.MetaFile, Line=self._LineIndex + 1)\r
self._ValueList[0] = TokenList[0]\r
self._ValueList[1] = TokenList[1]\r
+ if self._ValueList[0] not in self._GuidDict:\r
+ self._GuidDict[self._ValueList[0]] = self._ValueList[1]\r
\r
## PCD sections parser\r
#\r
ValueList[0] = ValueExpression(PcdValue, self._AllPcdDict)(True)\r
except WrnExpression, Value:\r
ValueList[0] = Value.result\r
+ except BadExpression, Value:\r
+ EdkLogger.error('Parser', FORMAT_INVALID, Value, File=self.MetaFile, Line=self._LineIndex + 1)\r
\r
- if ValueList[0] == 'True':\r
- ValueList[0] = '1'\r
- if ValueList[0] == 'False':\r
- ValueList[0] = '0'\r
-\r
+ if ValueList[0]:\r
+ try:\r
+ ValueList[0] = ValueExpressionEx(ValueList[0], ValueList[1], self._GuidDict)(True)\r
+ except BadExpression, Value:\r
+ EdkLogger.error('Parser', FORMAT_INVALID, Value, ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1)\r
# check format of default value against the datum type\r
IsValid, Cause = CheckPcdDatum(ValueList[1], ValueList[0])\r
if not IsValid:\r