summaryrefslogtreecommitdiff
path: root/nandgame/assembler/py_nand_ass
diff options
context:
space:
mode:
authoruvok2026-01-16 12:28:53 +0100
committeruvok2026-01-16 12:28:53 +0100
commitfbadf2115f8159d77916b1295e6fe1fff2f27a5b (patch)
treead917360699ec8403ac17dc3508cb3ad3673ea01 /nandgame/assembler/py_nand_ass
parent5992a5d9355b62cb7f442247f32243f7f9c08bae (diff)
parse,lex: Make # separate token
Diffstat (limited to 'nandgame/assembler/py_nand_ass')
-rwxr-xr-xnandgame/assembler/py_nand_ass/lexer.py10
-rwxr-xr-xnandgame/assembler/py_nand_ass/parser.py6
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: