From 3d8c953f57d68b1db169554a22c21819ef4690c1 Mon Sep 17 00:00:00 2001 From: uvok Date: Mon, 12 Jan 2026 19:36:04 +0100 Subject: Add previous parser experiments --- nandgame/assembler/experiments/lexer1.py | 52 ++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 nandgame/assembler/experiments/lexer1.py (limited to 'nandgame/assembler/experiments/lexer1.py') diff --git a/nandgame/assembler/experiments/lexer1.py b/nandgame/assembler/experiments/lexer1.py new file mode 100644 index 0000000..515a792 --- /dev/null +++ b/nandgame/assembler/experiments/lexer1.py @@ -0,0 +1,52 @@ +# lexer.py +import ply.lex as lex + +tokens = ( + "MOV", + "ADD", + "JMP", + "REGISTER", + "NUMBER", + "IDENT", + "COMMA", + "COLON", +) + +t_COMMA = r"," +t_COLON = r":" + +t_MOV = r"mov" +t_ADD = r"add" +t_JMP = r"jmp" + + +def t_REGISTER(t): + r"[A-Z]" + return t + + +def t_NUMBER(t): + r"\#[0-9]+" + t.value = int(t.value[1:]) + return t + + +def t_IDENT(t): + r"[a-zA-Z_][a-zA-Z0-9_]*" + return t + + +t_ignore = " \t" + + +def t_newline(t): + r"\n+" + lexer.lineno += 1 + pass + + +def t_error(t): + raise SyntaxError(f"Illegal character {t.value[0]!r}") + + +lexer = lex.lex() -- cgit v1.2.3