From 2dde6bdafe6008dd0e447094daa2a947744e521a Mon Sep 17 00:00:00 2001 From: Mike Naberezny Date: Sun, 14 Dec 2014 18:55:32 -0800 Subject: [PATCH] Handle all syntax errors in immediate values --- py65/assembler.py | 14 +++++++------- py65/tests/test_assembler.py | 2 ++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/py65/assembler.py b/py65/assembler.py index d513082..0685dc8 100644 --- a/py65/assembler.py +++ b/py65/assembler.py @@ -101,15 +101,15 @@ class Assembler: # target is an immediate value if target.startswith('#'): - if target[1] in ("'", '"'): # quoted ascii character - try: + try: + if target[1] in ("'", '"'): # quoted ascii character number = ord(target[2]) - except IndexError: - raise SyntaxError(statement) - else: - number = self._address_parser.number(target[1:]) + else: + number = self._address_parser.number(target[1:]) + except IndexError: + raise SyntaxError(statement) - if (number < 0x00) or (number > self._mpu.byteMask): + if (number < 0) or (number > self._mpu.byteMask): raise OverflowError statement = before + '#$' + self._mpu.BYTE_FORMAT % number diff --git a/py65/tests/test_assembler.py b/py65/tests/test_assembler.py index 9eb7b81..a4715b1 100644 --- a/py65/tests/test_assembler.py +++ b/py65/tests/test_assembler.py @@ -22,6 +22,8 @@ class AssemblerTests(unittest.TestCase): def test_assemble_bad_syntax_raises_syntaxerror(self): self.assertRaises(SyntaxError, self.assemble, 'foo') + self.assertRaises(SyntaxError, + self.assemble, 'lda #') self.assertRaises(SyntaxError, self.assemble, 'lda #"')