|
From: <yi...@us...> - 2011-11-28 02:10:37
|
Revision: 2434
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2434&view=rev
Author: yingke
Date: 2011-11-28 02:10:31 +0000 (Mon, 28 Nov 2011)
Log Message:
-----------
FDF parser bug fix:
1. Fix bug to get complete macro value.
2. Fix bug to report error if ?\226?\128?\156!if?\226?\128?\157, ?\226?\128?\156!ifdef?\226?\128?\157 are missing before ?\226?\128?\156!endif?\226?\128?\157.
3. Fix bug to get token correctly if the first line of FDF file is not comment.
Signed-off-by:yingke
Reviewed-by: jsu1
Reviewed-by: gikidy
Modified Paths:
--------------
trunk/BaseTools/Source/Python/GenFds/FdfParser.py
Modified: trunk/BaseTools/Source/Python/GenFds/FdfParser.py
===================================================================
--- trunk/BaseTools/Source/Python/GenFds/FdfParser.py 2011-11-28 02:00:55 UTC (rev 2433)
+++ trunk/BaseTools/Source/Python/GenFds/FdfParser.py 2011-11-28 02:10:31 UTC (rev 2434)
@@ -695,12 +695,7 @@
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
- if not self.__GetNextToken():
- raise Warning("expected value", self.FileName, self.CurrentLineNumber)
-
- if self.__GetStringData():
- pass
- Value = self.__Token
+ Value = self.__GetExpression()
self.__SetMacroValue(Macro, Value)
self.__WipeOffArea.append(((DefineLine, DefineOffset), (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))
elif self.__Token == 'SET':
@@ -761,6 +756,8 @@
IfList[-1][2] = True
self.__WipeOffArea.append((IfList[-1][0], (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))
elif self.__Token == '!endif':
+ if len(IfList) <= 0:
+ raise Warning("Missing !if statement", self.FileName, self.CurrentLineNumber)
if IfList[-1][1]:
self.__WipeOffArea.append(((self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - len('!endif')), (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))
else:
@@ -823,8 +820,6 @@
if Op == 'eval':
try:
return ValueExpression(Expression, MacroPcdDict)()
- except SymbolNotFound:
- return False
except WrnExpression, Excpt:
#
# Catch expression evaluation warning here. We need to report
@@ -1047,7 +1042,7 @@
# That is, when we got a space or any char in the tuple, we got the end of token.
if not str(TempChar).isspace() and not TempChar in SEPERATOR_TUPLE:
if not self.__UndoOneChar():
- break
+ return
# if we happen to meet a seperator as the first char, we must proceed to get it.
# That is, we get a token that is a seperator char. nomally it is the boundary of other tokens.
elif StartPos == self.CurrentOffsetWithinLine and TempChar in SEPERATOR_TUPLE:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|