self.FileName = FileName\r
self.CurrentLineNumber = 1\r
self.CurrentOffsetWithinLine = 0\r
-\r
+ self.TokenReleaceList = []\r
self.__Token = ""\r
self.__SkippedChars = ""\r
\r
FileStringContents = ''\r
for fileLine in self.Profile.FileLinesList:\r
FileStringContents += fileLine\r
+ for Token in self.TokenReleaceList:\r
+ if Token in FileStringContents:\r
+ FileStringContents = FileStringContents.replace(Token, 'TOKENSTRING')\r
cStream = antlr.InputStream(FileStringContents)\r
lexer = CLexer(cStream)\r
tStream = antlr.CommonTokenStream(lexer)\r
"SmmCommParaCheckBufferType":"SmmCommParaCheckBufferType",\r
"SpaceCheckAll":"SpaceCheckAll",\r
"SpellingCheckAll":"SpellingCheckAll",\r
+ "TokenReleaceList":"TokenReleaceList",\r
"UniCheckAll":"UniCheckAll",\r
"UniCheckHelpInfo":"UniCheckHelpInfo",\r
"UniCheckPCDInfo":"UniCheckPCDInfo",\r
# A list for Copyright format\r
self.Copyright = []\r
\r
+ self.TokenReleaceList = []\r
+\r
self.ParseConfig()\r
\r
def ParseConfig(self):\r
List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)\r
if List[0] == 'Copyright':\r
List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)\r
+ if List[0] == 'TokenReleaceList':\r
+ List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)\r
self.__dict__[_ConfigFileToInternalTranslation[List[0]]] = List[1]\r
\r
def ShowMe(self):\r
tuple = os.walk(RootDir)\r
IgnoredPattern = GetIgnoredDirListPattern()\r
ParseErrorFileList = []\r
+ TokenReleaceList = EccGlobalData.gConfig.TokenReleaceList\r
+ TokenReleaceList.extend(['L",\\\""'])\r
\r
for dirpath, dirnames, filenames in tuple:\r
if IgnoredPattern.match(dirpath.upper()):\r
EdkLogger.info("Parsing " + FullName)\r
model = f.endswith('c') and DataClass.MODEL_FILE_C or DataClass.MODEL_FILE_H\r
collector = CodeFragmentCollector.CodeFragmentCollector(FullName)\r
+ collector.TokenReleaceList = TokenReleaceList\r
try:\r
collector.ParseFile()\r
except UnicodeError:\r
BinaryExtList = EXE, EFI, FV, ROM, DLL, COM, BMP, GIF, PYD, CMP, BIN, JPG, UNI, RAW, COM2, LIB, DEPEX, SYS, DB\r
# A list for only scanning dirs, the dirs should be the top folder(s) under workspace\r
ScanOnlyDirList = ScanFolder1 ScanFolder2\r
+# A list for Used to circumvent special strings\r
+TokenReleaceList = L'', L'\"', L"\"", L''', L""", L"\"\"", L"\"^", L" \"", L"\" \""\r