From fbadf2115f8159d77916b1295e6fe1fff2f27a5b Mon Sep 17 00:00:00 2001 From: uvok Date: Fri, 16 Jan 2026 12:28:53 +0100 Subject: parse,lex: Make # separate token --- nandgame/assembler/py_nand_ass/lexer.py | 10 ++++++---- nandgame/assembler/py_nand_ass/parser.py | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'nandgame/assembler/py_nand_ass') 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: -- cgit v1.2.3