X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FCommon%2FRangeExpression.py;h=4c29bc9ee4bd88c2660345b0ce8bf7fb09689fae;hp=4d07bd752330efb80d2ce80d9f896ccd4dbcbbff;hb=92beb1e4c73a40a708c7c0cade5c7cee314b3887;hpb=25598f8bdbd63dd96194fd3f43dd53dd814cd1c0 diff --git a/BaseTools/Source/Python/Common/RangeExpression.py b/BaseTools/Source/Python/Common/RangeExpression.py index 4d07bd7523..4c29bc9ee4 100644 --- a/BaseTools/Source/Python/Common/RangeExpression.py +++ b/BaseTools/Source/Python/Common/RangeExpression.py @@ -12,11 +12,12 @@ # # Import Modules # +from __future__ import print_function from Common.GlobalData import * from CommonDataClass.Exceptions import BadExpression from CommonDataClass.Exceptions import WrnExpression import uuid -from Common.Expression import PcdPattern +from Common.Expression import PcdPattern,BaseExpression from Common.DataType import * ERR_STRING_EXPR = 'This operator cannot be used in string expression: [%s].' @@ -85,11 +86,11 @@ class RangeContainer(object): self.__clean__() def dump(self): - print "----------------------" + print("----------------------") rangelist = "" for object in self.rangelist: rangelist = rangelist + "[%d , %d]" % (object.start, object.end) - print rangelist + print(rangelist) class XOROperatorObject(object): @@ -186,7 +187,7 @@ def GetOperatorObject(Operator): else: raise BadExpression("Bad Operator") -class RangeExpression(object): +class RangeExpression(BaseExpression): # Logical operator mapping LogicalOperators = { '&&' : 'and', '||' : 'or', @@ -347,6 +348,7 @@ class RangeExpression(object): def __init__(self, Expression, PcdDataType, SymbolTable = {}): + super(RangeExpression, self).__init__(self, Expression, PcdDataType, SymbolTable) self._NoProcess = False if type(Expression) != type(''): self._Expr = Expression @@ -415,48 +417,48 @@ class RangeExpression(object): # Template function to parse binary operators which have same precedence # Expr [Operator Expr]* - def _ExprFuncTemplate(self, EvalFunc, OpLst): + def _ExprFuncTemplate(self, EvalFunc, OpSet): Val = EvalFunc() - while self._IsOperator(OpLst): + while self._IsOperator(OpSet): Op = self._Token try: Val = self.Eval(Op, Val, EvalFunc()) - except WrnExpression, Warn: + except WrnExpression as Warn: self._WarnExcept = Warn Val = Warn.result return Val # A [|| B]* def _OrExpr(self): - return self._ExprFuncTemplate(self._AndExpr, ["OR", "or"]) + return self._ExprFuncTemplate(self._AndExpr, {"OR", "or"}) # A [&& B]* def _AndExpr(self): - return self._ExprFuncTemplate(self._NeExpr, ["AND", "and"]) + return self._ExprFuncTemplate(self._NeExpr, {"AND", "and"}) def _NeExpr(self): Val = self._RelExpr() - while self._IsOperator([ "!=", "NOT", "not"]): + while self._IsOperator({"!=", "NOT", "not"}): Op = self._Token if Op in ["!", "NOT", "not"]: - if not self._IsOperator(["IN", "in"]): + if not self._IsOperator({"IN", "in"}): raise BadExpression(ERR_REL_NOT_IN) Op += ' ' + self._Token try: Val = self.Eval(Op, Val, self._RelExpr()) - except WrnExpression, Warn: + except WrnExpression as Warn: self._WarnExcept = Warn Val = Warn.result return Val # [!]*A def _RelExpr(self): - if self._IsOperator(["NOT" , "LE", "GE", "LT", "GT", "EQ", "XOR"]): + if self._IsOperator({"NOT" , "LE", "GE", "LT", "GT", "EQ", "XOR"}): Token = self._Token Val = self._NeExpr() try: return self.Eval(Token, Val) - except WrnExpression, Warn: + except WrnExpression as Warn: self._WarnExcept = Warn return Warn.result return self._IdenExpr() @@ -693,25 +695,3 @@ class RangeExpression(object): raise BadExpression(ERR_OPERATOR_UNSUPPORT % OpToken) self._Token = OpToken return OpToken - - # Check if current token matches the operators given from OpList - def _IsOperator(self, OpList): - Idx = self._Idx - self._GetOperator() - if self._Token in OpList: - if self._Token in self.LogicalOperators: - self._Token = self.LogicalOperators[self._Token] - return True - self._Idx = Idx - return False - - - - - - - - - - -# UTRangeList()