[Spambayes-checkins] spambayes/Outlook2000/dialogs/resources
rcparser.py, 1.5, 1.6
Mark Hammond
mhammond at users.sourceforge.net
Mon Aug 18 20:19:07 EDT 2003
Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources
In directory sc8-pr-cvs1:/tmp/cvs-serv1962
Modified Files:
rcparser.py
Log Message:
Hacks made while trying to track down another problem.
* When we expect a comma token, check it is.
* When we fail to parse the file, dump the line number and next few toks.
* Print a warning when a negative literal is used as a control ID
(which is what my problem turned out to be - damn MSVC)
Index: rcparser.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources/rcparser.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** rcparser.py 17 Aug 2003 21:09:00 -0000 1.5
--- rcparser.py 19 Aug 2003 02:19:05 -0000 1.6
***************
*** 115,118 ****
--- 115,122 ----
return self.token
+ def getCommaToken(self):
+ tok = self.getToken()
+ assert tok == ",", "Token '%s' should be a comma!" % tok
+
def loadDialogs(self, rcFileName):
"""
***************
*** 210,220 ****
self.getToken()
dlg.x = int(self.token)
! self.getToken() # should be ,
self.getToken() # number
dlg.y = int(self.token)
! self.getToken() # should be ,
self.getToken() # number
dlg.w = int(self.token)
! self.getToken() # should be ,
self.getToken() # number
dlg.h = int(self.token)
--- 214,224 ----
self.getToken()
dlg.x = int(self.token)
! self.getCommaToken()
self.getToken() # number
dlg.y = int(self.token)
! self.getCommaToken()
self.getToken() # number
dlg.w = int(self.token)
! self.getCommaToken()
self.getToken() # number
dlg.h = int(self.token)
***************
*** 287,291 ****
self.getToken()
dlg.fontSize = int(self.token)
! self.getToken() # ,
self.getToken() # Font name
dlg.font = self.token[1:-1] # it's quoted
--- 291,295 ----
self.getToken()
dlg.fontSize = int(self.token)
! self.getCommaToken()
self.getToken() # Font name
dlg.font = self.token[1:-1] # it's quoted
***************
*** 302,319 ****
if self.token[0:1]=='"':
control.label = self.token[1:-1]
! self.getToken() # ,
self.getToken()
elif self.token.isdigit():
control.label = self.token
! self.getToken() # ,
self.getToken()
control.id = self.token
control.idNum = self.addId(control.id)
! self.getToken() # ,
if control.controlType == "CONTROL":
self.getToken()
control.subType = self.token[1:-1]
# Styles
! self.getToken() #,
self.getToken()
control.style, control.styles = self.styles([], defaultControlStyle)
--- 306,326 ----
if self.token[0:1]=='"':
control.label = self.token[1:-1]
! self.getCommaToken()
self.getToken()
elif self.token.isdigit():
control.label = self.token
! self.getCommaToken()
self.getToken()
+ if self.token=='-':
+ raise RuntimeError, \
+ "Negative literal in rc script - don't know what to do"
control.id = self.token
control.idNum = self.addId(control.id)
! self.getCommaToken()
if control.controlType == "CONTROL":
self.getToken()
control.subType = self.token[1:-1]
# Styles
! self.getCommaToken()
self.getToken()
control.style, control.styles = self.styles([], defaultControlStyle)
***************
*** 321,329 ****
# Rect
control.x = int(self.getToken())
! self.getToken() # ,
control.y = int(self.getToken())
! self.getToken() # ,
control.w = int(self.getToken())
! self.getToken() # ,
self.getToken()
control.h = int(self.token)
--- 328,336 ----
# Rect
control.x = int(self.getToken())
! self.getCommaToken()
control.y = int(self.getToken())
! self.getCommaToken()
control.w = int(self.getToken())
! self.getCommaToken()
self.getToken()
control.h = int(self.token)
***************
*** 336,339 ****
def ParseDialogs(rc_file):
rcp = RCParser()
! rcp.loadDialogs(rc_file)
return rcp
--- 343,355 ----
def ParseDialogs(rc_file):
rcp = RCParser()
! try:
! rcp.loadDialogs(rc_file)
! except:
! print "ERROR parsing dialogs at line", rcp.lex.lineno
! print "Next 10 tokens are:"
! for i in range(10):
! print rcp.lex.get_token(),
! print
! raise
!
return rcp
More information about the Spambayes-checkins
mailing list