]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Common/Expression.py
Revert BaseTools: PYTHON3 migration
[mirror_edk2.git] / BaseTools / Source / Python / Common / Expression.py
index 51e8d2174a8ff2352a342835fb2a140c6349f571..ff9271031b0e3351e441fdd4ff195212e1b64dd2 100644 (file)
 ## Import Modules\r
 #\r
 from __future__ import print_function\r
+from __future__ import absolute_import\r
 from Common.GlobalData import *\r
 from CommonDataClass.Exceptions import BadExpression\r
 from CommonDataClass.Exceptions import WrnExpression\r
-from Misc import GuidStringToGuidStructureString, ParseFieldValue, IsFieldValueAnArray\r
+from .Misc import GuidStringToGuidStructureString, ParseFieldValue\r
 import Common.EdkLogger as EdkLogger\r
 import copy\r
 from Common.DataType import *\r
@@ -28,7 +29,7 @@ ERR_MATCH               = 'No matching right parenthesis.'
 ERR_STRING_TOKEN        = 'Bad string token: [%s].'\r
 ERR_MACRO_TOKEN         = 'Bad macro token: [%s].'\r
 ERR_EMPTY_TOKEN         = 'Empty token is not allowed.'\r
-ERR_PCD_RESOLVE         = 'PCD token cannot be resolved: [%s].'\r
+ERR_PCD_RESOLVE         = 'The PCD should be FeatureFlag type or FixedAtBuild type: [%s].'\r
 ERR_VALID_TOKEN         = 'No more valid token found from rest of string: [%s].'\r
 ERR_EXPR_TYPE           = 'Different types found in expression.'\r
 ERR_OPERATOR_UNSUPPORT  = 'Unsupported operator: [%s]'\r
@@ -137,11 +138,11 @@ def BuildOptionValue(PcdValue, GuidDict):
         InputValue = 'L"' + PcdValue[1:] + '"'\r
     else:\r
         InputValue = PcdValue\r
-    if IsFieldValueAnArray(InputValue):\r
-        try:\r
-            PcdValue = ValueExpressionEx(InputValue, TAB_VOID, GuidDict)(True)\r
-        except:\r
-            pass\r
+    try:\r
+        PcdValue = ValueExpressionEx(InputValue, TAB_VOID, GuidDict)(True)\r
+    except:\r
+        pass\r
+\r
     return PcdValue\r
 \r
 ## ReplaceExprMacro\r
@@ -787,7 +788,7 @@ class ValueExpression(BaseExpression):
         OpToken = ''\r
         for Ch in Expr:\r
             if Ch in self.NonLetterOpLst:\r
-                if '!' == Ch and OpToken:\r
+                if Ch in ['!', '~'] and OpToken:\r
                     break\r
                 self._Idx += 1\r
                 OpToken += Ch\r