summaryrefslogtreecommitdiff
path: root/nandgame
diff options
context:
space:
mode:
Diffstat (limited to 'nandgame')
-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: