BaseTools: create base expression class

this class has a fucntion to share between Exception and RangeExpression
change both classes to call this function init in their init

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
Carsey, Jaben 2018-04-28 06:32:55 +08:00 committed by Yonghong Zhu
parent cf3062901d
commit b2aeaf573e
2 changed files with 20 additions and 36 deletions

View File

@ -201,7 +201,22 @@ def IntToStr(Value):
SupportedInMacroList = ['TARGET', 'TOOL_CHAIN_TAG', 'ARCH', 'FAMILY']
class ValueExpression(object):
class BaseExpression(object):
def __init__(self, *args, **kwargs):
super(BaseExpression, self).__init__()
# Check if current token matches the operators given from parameter
def _IsOperator(self, OpSet):
Idx = self._Idx
self._GetOperator()
if self._Token in OpSet:
if self._Token in self.LogicalOperators:
self._Token = self.LogicalOperators[self._Token]
return True
self._Idx = Idx
return False
class ValueExpression(BaseExpression):
# Logical operator mapping
LogicalOperators = {
'&&' : 'and', '||' : 'or',
@ -307,6 +322,7 @@ class ValueExpression(object):
return Val
def __init__(self, Expression, SymbolTable={}):
super(ValueExpression, self).__init__(self, Expression, SymbolTable)
self._NoProcess = False
if type(Expression) != type(''):
self._Expr = Expression
@ -780,17 +796,6 @@ class ValueExpression(object):
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
class ValueExpressionEx(ValueExpression):
def __init__(self, PcdValue, PcdType, SymbolTable={}):
ValueExpression.__init__(self, PcdValue, SymbolTable)

View File

@ -16,7 +16,7 @@ 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].'
@ -186,7 +186,7 @@ def GetOperatorObject(Operator):
else:
raise BadExpression("Bad Operator")
class RangeExpression(object):
class RangeExpression(BaseExpression):
# Logical operator mapping
LogicalOperators = {
'&&' : 'and', '||' : 'or',
@ -347,6 +347,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
@ -693,25 +694,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()