From 87e878548d475c21999a2be1a0aaa89485d5ede2 Mon Sep 17 00:00:00 2001 From: uvok Date: Mon, 12 Jan 2026 19:49:04 +0100 Subject: py: Reformat files with black --- nandgame/assembler/lexer.py | 52 ++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 20 deletions(-) (limited to 'nandgame/assembler/lexer.py') diff --git a/nandgame/assembler/lexer.py b/nandgame/assembler/lexer.py index e716af8..d0c9462 100755 --- a/nandgame/assembler/lexer.py +++ b/nandgame/assembler/lexer.py @@ -4,68 +4,79 @@ import ply.lex as lex # List of token names. This is always required tokens = ( - 'OP', - 'JUMP', - 'COMMA', - 'COLON', - 'SYMBOL', - 'NUMBER', - 'HEXNUMBER', - 'DOT', - 'REG', - 'NL' + "OP", + "JUMP", + "COMMA", + "COLON", + "SYMBOL", + "NUMBER", + "HEXNUMBER", + "DOT", + "REG", + "NL", ) # Regular expression rules for simple tokens -t_COMMA = r',' -t_COLON = r':' -t_DOT = r'\.' +t_COMMA = r"," +t_COLON = r":" +t_DOT = r"\." + def t_OP(t): r"mov|and|dec|hlt|add|sub|inc" return t + def t_REG(t): r"\b(AD?M?|DM?|M|_)\b" return t + def t_JUMP(t): r"jmp|jlt|jgt|jle|jge|jeq|jne" return t + def t_NUMBER(t): - r'\#\d+' + r"\#\d+" t.value = int(t.value[1:]) return t + def t_HEXNUMBER(t): - r'\#0x[0-9a-fA-F]+' + r"\#0x[0-9a-fA-F]+" t.value = int(t.value[1:], 16) return t + def t_SYMBOL(t): - r'[a-z][A-Za-z0-9_]+' + r"[a-z][A-Za-z0-9_]+" return t + # Define a rule so we can track line numbers def t_NL(t): - r'\n+' + r"\n+" t.lexer.lineno += len(t.value) return t + # A string containing ignored characters (spaces and tabs) -t_ignore = ' \t' -#t_ignore_COMMENT = r';.*' +t_ignore = " \t" +# t_ignore_COMMENT = r';.*' + def t_COMMENT(t): - r';.*' + r";.*" pass + # Error handling rule def t_error(t): print("!!! Illegal character '%s'" % t.value[0]) t.lexer.skip(1) + # EOF handling rule def t_eof(t): if not t.lexer.newline_added: @@ -74,6 +85,7 @@ def t_eof(t): return t.lexer.token() return None + # Build the lexer lexer = lex.lex() lexer.newline_added = False -- cgit v1.2.3