BaseTools: Clean up source files
1. Do not use tab characters 2. No trailing white space in one line 3. All files must end with CRLF Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
@ -1,11 +1,11 @@
|
||||
## @file
|
||||
# This file is used to check PCD logical expression
|
||||
#
|
||||
# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
# distribution. The full text of the license may be found at
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
# distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
@ -47,7 +47,7 @@ def IsValidBareCString(String):
|
||||
and (IntChar < 0x23 or IntChar > 0x7e):
|
||||
return False
|
||||
PreChar = Char
|
||||
|
||||
|
||||
# Last char cannot be \ if PreChar is not \
|
||||
if LastChar == '\\' and PreChar == LastChar:
|
||||
return False
|
||||
@ -83,7 +83,7 @@ class _ExprBase:
|
||||
self.Token = Token
|
||||
self.Index = 0
|
||||
self.Len = len(Token)
|
||||
|
||||
|
||||
## SkipWhitespace
|
||||
#
|
||||
def SkipWhitespace(self):
|
||||
@ -91,14 +91,14 @@ class _ExprBase:
|
||||
if Char not in ' \t':
|
||||
break
|
||||
self.Index += 1
|
||||
|
||||
|
||||
## IsCurrentOp
|
||||
#
|
||||
# @param OpList: option list
|
||||
#
|
||||
# @param OpList: option list
|
||||
#
|
||||
def IsCurrentOp(self, OpList):
|
||||
self.SkipWhitespace()
|
||||
LetterOp = ["EQ", "NE", "GE", "LE", "GT", "LT", "NOT", "and", "AND",
|
||||
LetterOp = ["EQ", "NE", "GE", "LE", "GT", "LT", "NOT", "and", "AND",
|
||||
"or", "OR", "XOR"]
|
||||
OpMap = {
|
||||
'|' : '|',
|
||||
@ -107,11 +107,11 @@ class _ExprBase:
|
||||
'>' : '=',
|
||||
'<' : '='
|
||||
}
|
||||
|
||||
|
||||
for Operator in OpList:
|
||||
if not self.Token[self.Index:].startswith(Operator):
|
||||
continue
|
||||
|
||||
|
||||
self.Index += len(Operator)
|
||||
Char = self.Token[self.Index : self.Index + 1]
|
||||
|
||||
@ -119,36 +119,36 @@ class _ExprBase:
|
||||
or (Operator in OpMap and OpMap[Operator] == Char):
|
||||
self.Index -= len(Operator)
|
||||
break
|
||||
|
||||
|
||||
return True
|
||||
|
||||
|
||||
return False
|
||||
|
||||
## _LogicalExpressionParser
|
||||
#
|
||||
# @param _ExprBase: _ExprBase object
|
||||
#
|
||||
#
|
||||
class _LogicalExpressionParser(_ExprBase):
|
||||
#
|
||||
# STRINGITEM can only be logical field according to spec
|
||||
#
|
||||
STRINGITEM = -1
|
||||
|
||||
|
||||
#
|
||||
# Evaluate to True or False
|
||||
#
|
||||
LOGICAL = 0
|
||||
REALLOGICAL = 2
|
||||
|
||||
|
||||
#
|
||||
# Just arithmetic expression
|
||||
#
|
||||
ARITH = 1
|
||||
|
||||
|
||||
def __init__(self, Token):
|
||||
_ExprBase.__init__(self, Token)
|
||||
self.Parens = 0
|
||||
|
||||
|
||||
def _CheckToken(self, MatchList):
|
||||
for Match in MatchList:
|
||||
if Match and Match.start() == 0:
|
||||
@ -156,7 +156,7 @@ class _LogicalExpressionParser(_ExprBase):
|
||||
self.Token[self.Index:self.Index+Match.end()]
|
||||
):
|
||||
return False
|
||||
|
||||
|
||||
self.Index += Match.end()
|
||||
if self.Token[self.Index - 1] == '"':
|
||||
return True
|
||||
@ -164,61 +164,61 @@ class _LogicalExpressionParser(_ExprBase):
|
||||
self.Token[self.Index:self.Index+1].isalnum():
|
||||
self.Index -= Match.end()
|
||||
return False
|
||||
|
||||
|
||||
Token = self.Token[self.Index - Match.end():self.Index]
|
||||
if Token.strip() in ["EQ", "NE", "GE", "LE", "GT", "LT",
|
||||
"NOT", "and", "AND", "or", "OR", "XOR"]:
|
||||
self.Index -= Match.end()
|
||||
return False
|
||||
|
||||
|
||||
return True
|
||||
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def IsAtomicNumVal(self):
|
||||
#
|
||||
# Hex number
|
||||
#
|
||||
Match1 = re.compile(self.HEX_PATTERN).match(self.Token[self.Index:])
|
||||
|
||||
|
||||
#
|
||||
# Number
|
||||
#
|
||||
Match2 = re.compile(self.INT_PATTERN).match(self.Token[self.Index:])
|
||||
|
||||
|
||||
#
|
||||
# Macro
|
||||
#
|
||||
Match3 = re.compile(self.MACRO_PATTERN).match(self.Token[self.Index:])
|
||||
|
||||
|
||||
#
|
||||
# PcdName
|
||||
#
|
||||
Match4 = re.compile(self.PCD_PATTERN).match(self.Token[self.Index:])
|
||||
|
||||
|
||||
return self._CheckToken([Match1, Match2, Match3, Match4])
|
||||
|
||||
|
||||
|
||||
def IsAtomicItem(self):
|
||||
#
|
||||
# Macro
|
||||
#
|
||||
Match1 = re.compile(self.MACRO_PATTERN).match(self.Token[self.Index:])
|
||||
|
||||
|
||||
#
|
||||
# PcdName
|
||||
#
|
||||
Match2 = re.compile(self.PCD_PATTERN).match(self.Token[self.Index:])
|
||||
|
||||
|
||||
#
|
||||
# Quoted string
|
||||
#
|
||||
Match3 = re.compile(self.QUOTED_PATTERN).\
|
||||
match(self.Token[self.Index:].replace('\\\\', '//').\
|
||||
replace('\\\"', '\\\''))
|
||||
|
||||
|
||||
return self._CheckToken([Match1, Match2, Match3])
|
||||
|
||||
|
||||
## A || B
|
||||
#
|
||||
def LogicalExpression(self):
|
||||
@ -233,12 +233,12 @@ class _LogicalExpressionParser(_ExprBase):
|
||||
raise _ExprError(ST.ERR_EXPR_LOGICAL % self.Token)
|
||||
Ret = self.REALLOGICAL
|
||||
return Ret
|
||||
|
||||
|
||||
def SpecNot(self):
|
||||
if self.IsCurrentOp(["NOT", "!", "not"]):
|
||||
return self.SpecNot()
|
||||
return self.Rel()
|
||||
|
||||
|
||||
## A < B, A > B, A <= B, A >= B
|
||||
#
|
||||
def Rel(self):
|
||||
@ -252,7 +252,7 @@ class _LogicalExpressionParser(_ExprBase):
|
||||
raise _ExprError(ST.ERR_EXPR_LOGICAL % self.Token)
|
||||
Ret = self.REALLOGICAL
|
||||
return Ret
|
||||
|
||||
|
||||
## A + B, A - B
|
||||
#
|
||||
def Expr(self):
|
||||
@ -269,7 +269,7 @@ class _LogicalExpressionParser(_ExprBase):
|
||||
return Ret
|
||||
|
||||
## Factor
|
||||
#
|
||||
#
|
||||
def Factor(self):
|
||||
if self.IsCurrentOp(["("]):
|
||||
self.Parens += 1
|
||||
@ -279,7 +279,7 @@ class _LogicalExpressionParser(_ExprBase):
|
||||
(self.Token, self.Token[self.Index:]))
|
||||
self.Parens -= 1
|
||||
return Ret
|
||||
|
||||
|
||||
if self.IsAtomicItem():
|
||||
if self.Token[self.Index - 1] == '"':
|
||||
return self.STRINGITEM
|
||||
@ -289,7 +289,7 @@ class _LogicalExpressionParser(_ExprBase):
|
||||
else:
|
||||
raise _ExprError(ST.ERR_EXPR_FACTOR % \
|
||||
(self.Token[self.Index:], self.Token))
|
||||
|
||||
|
||||
## IsValidLogicalExpression
|
||||
#
|
||||
def IsValidLogicalExpression(self):
|
||||
@ -319,7 +319,7 @@ class _ValidRangeExpressionParser(_ExprBase):
|
||||
self.INT = 2
|
||||
self.IsParenHappen = False
|
||||
self.IsLogicalOpHappen = False
|
||||
|
||||
|
||||
## IsValidRangeExpression
|
||||
#
|
||||
def IsValidRangeExpression(self):
|
||||
@ -330,12 +330,12 @@ class _ValidRangeExpressionParser(_ExprBase):
|
||||
return False, ST.ERR_EXPR_RANGE % self.Token
|
||||
except _ExprError as XExcept:
|
||||
return False, XExcept.Error
|
||||
|
||||
|
||||
self.SkipWhitespace()
|
||||
if self.Index != self.Len:
|
||||
return False, (ST.ERR_EXPR_RANGE % self.Token)
|
||||
return True, ''
|
||||
|
||||
|
||||
## RangeExpression
|
||||
#
|
||||
def RangeExpression(self):
|
||||
@ -346,22 +346,22 @@ class _ValidRangeExpressionParser(_ExprBase):
|
||||
raise _ExprError(ST.ERR_PAREN_NOT_USED % self.Token)
|
||||
self.IsParenHappen = False
|
||||
Ret = self.Unary()
|
||||
|
||||
|
||||
if self.IsCurrentOp(['XOR']):
|
||||
Ret = self.Unary()
|
||||
|
||||
|
||||
return Ret
|
||||
|
||||
|
||||
## Unary
|
||||
#
|
||||
def Unary(self):
|
||||
if self.IsCurrentOp(["NOT"]):
|
||||
return self.Unary()
|
||||
|
||||
|
||||
return self.ValidRange()
|
||||
|
||||
|
||||
## ValidRange
|
||||
#
|
||||
#
|
||||
def ValidRange(self):
|
||||
Ret = -1
|
||||
if self.IsCurrentOp(["("]):
|
||||
@ -375,10 +375,10 @@ class _ValidRangeExpressionParser(_ExprBase):
|
||||
raise _ExprError(ST.ERR_EXPR_RIGHT_PAREN % self.Token)
|
||||
self.Parens -= 1
|
||||
return Ret
|
||||
|
||||
|
||||
if self.IsLogicalOpHappen:
|
||||
raise _ExprError(ST.ERR_PAREN_NOT_USED % self.Token)
|
||||
|
||||
|
||||
if self.IsCurrentOp(["LT", "GT", "LE", "GE", "EQ", "XOR"]):
|
||||
IntMatch = \
|
||||
re.compile(self.INT_PATTERN).match(self.Token[self.Index:])
|
||||
@ -417,7 +417,7 @@ class _ValidListExpressionParser(_ExprBase):
|
||||
def __init__(self, Token):
|
||||
_ExprBase.__init__(self, Token)
|
||||
self.NUM = 1
|
||||
|
||||
|
||||
def IsValidListExpression(self):
|
||||
if self.Len == 0:
|
||||
return False, ST.ERR_EXPR_LIST_EMPTY
|
||||
@ -432,7 +432,7 @@ class _ValidListExpressionParser(_ExprBase):
|
||||
return False, (ST.ERR_EXPR_LIST % self.Token)
|
||||
|
||||
return True, ''
|
||||
|
||||
|
||||
def ListExpression(self):
|
||||
Ret = -1
|
||||
self.SkipWhitespace()
|
||||
@ -444,7 +444,7 @@ class _ValidListExpressionParser(_ExprBase):
|
||||
raise _ExprError(ST.ERR_EXPR_LIST % self.Token)
|
||||
|
||||
return Ret
|
||||
|
||||
|
||||
## _StringTestParser
|
||||
#
|
||||
class _StringTestParser(_ExprBase):
|
||||
@ -452,7 +452,7 @@ class _StringTestParser(_ExprBase):
|
||||
_ExprBase.__init__(self, Token)
|
||||
|
||||
## IsValidStringTest
|
||||
#
|
||||
#
|
||||
def IsValidStringTest(self):
|
||||
if self.Len == 0:
|
||||
return False, ST.ERR_EXPR_EMPTY
|
||||
@ -463,7 +463,7 @@ class _StringTestParser(_ExprBase):
|
||||
return True, ''
|
||||
|
||||
## StringItem
|
||||
#
|
||||
#
|
||||
def StringItem(self):
|
||||
Match1 = re.compile(self.QUOTED_PATTERN)\
|
||||
.match(self.Token[self.Index:].replace('\\\\', '//')\
|
||||
@ -489,7 +489,7 @@ class _StringTestParser(_ExprBase):
|
||||
(self.Token, self.Token[self.Index:]))
|
||||
|
||||
## StringTest
|
||||
#
|
||||
#
|
||||
def StringTest(self):
|
||||
self.StringItem()
|
||||
if not self.IsCurrentOp(["==", "EQ", "!=", "NE"]):
|
||||
@ -538,7 +538,7 @@ def IsValidRangeExpr(Token):
|
||||
##
|
||||
# Check syntax of value list expression token
|
||||
#
|
||||
# @param Token: value list expression token
|
||||
# @param Token: value list expression token
|
||||
#
|
||||
def IsValidListExpr(Token):
|
||||
return _ValidListExpressionParser(Token).IsValidListExpression()
|
||||
@ -562,7 +562,7 @@ def IsValidFeatureFlagExp(Token, Flag=False):
|
||||
if not Valid:
|
||||
Valid, Cause = IsValidLogicalExpr(Token, Flag)
|
||||
if not Valid:
|
||||
return False, Cause
|
||||
return False, Cause
|
||||
return True, ""
|
||||
|
||||
if __name__ == '__main__':
|
||||
@ -570,4 +570,4 @@ if __name__ == '__main__':
|
||||
print(_LogicalExpressionParser('gCrownBayTokenSpaceGuid.PcdPciDevice1BridgeAddressLE0').IsValidLogicalExpression())
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user