diff options
Diffstat (limited to 'nandgame')
| -rwxr-xr-x | nandgame/assembler/py_nand_ass/lexer.py | 10 | ||||
| -rwxr-xr-x | nandgame/assembler/py_nand_ass/parser.py | 6 |
2 files changed, 9 insertions, 7 deletions
diff --git a/nandgame/assembler/py_nand_ass/lexer.py b/nandgame/assembler/py_nand_ass/lexer.py index 830d527..75a3f2f 100755 --- a/nandgame/assembler/py_nand_ass/lexer.py +++ b/nandgame/assembler/py_nand_ass/lexer.py @@ -9,6 +9,7 @@ tokens = ( "COMMA", "COLON", "SYMBOL", + "SHARP", "NUMBER", "HEXNUMBER", "DOT", @@ -20,6 +21,7 @@ tokens = ( t_COMMA = r"," t_COLON = r":" t_DOT = r"\." +t_SHARP = r"\#" def t_OP(t): @@ -38,14 +40,14 @@ def t_JUMP(t): def t_NUMBER(t): - r"\#\d+" - t.value = int(t.value[1:]) + r"\d+" + t.value = int(t.value) return t def t_HEXNUMBER(t): - r"\#0x[0-9a-fA-F]+" - t.value = int(t.value[1:], 16) + r"0x[0-9a-fA-F]+" + t.value = int(t.value, 16) return t diff --git a/nandgame/assembler/py_nand_ass/parser.py b/nandgame/assembler/py_nand_ass/parser.py index 432b40b..2ed79a0 100755 --- a/nandgame/assembler/py_nand_ass/parser.py +++ b/nandgame/assembler/py_nand_ass/parser.py @@ -158,10 +158,10 @@ def p_opcode_njmp(p: P) -> None: def p_number(p: P) -> None: - """number : NUMBER - | HEXNUMBER + """number : SHARP NUMBER + | SHARP HEXNUMBER """ - p[0] = pt.Immediate(p[1]) + p[0] = pt.Immediate(p[2]) def p_error(p: LexToken | None) -> LexToken|None: |
