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/parser.py | 64 +++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 24 deletions(-) (limited to 'nandgame/assembler/parser.py') diff --git a/nandgame/assembler/parser.py b/nandgame/assembler/parser.py index 8925f3f..9e4bf45 100755 --- a/nandgame/assembler/parser.py +++ b/nandgame/assembler/parser.py @@ -10,25 +10,30 @@ from lexer import tokens # Error rule for syntax errors + def p_error(p: LexToken): if p: print(f"Unexpected {repr(p.value)} on line {p.lineno}") else: print("Unexpected end of file.") + def p_program(p): - '''program : instruction_list - | empty''' + """program : instruction_list + | empty + """ pass + def p_empty(p): - '''empty :''' + """empty :""" pass + def p_inss(p): - '''instruction_list : instruction_list line + """instruction_list : instruction_list line | line - ''' + """ if len(p) == 2: p[0] = [p[1]] else: @@ -40,10 +45,11 @@ def p_inss(p): # print(f" {p[2]}") pass + def p_inss2(p): - '''instruction_list2 : line instruction_list2 + """instruction_list2 : line instruction_list2 | line - ''' + """ if len(p) == 2: p[0] = [p[1]] else: @@ -55,62 +61,71 @@ def p_inss2(p): print(f" {p[2]}") pass + def p_line(p): - '''line : instruction NL + """line : instruction NL | NL - ''' + """ if len(p) == 2: pass else: p[0] = p[1] + def p_instruction(p): - '''instruction : noarg + """instruction : noarg | onearg | twoarg | jumpdest | invalid_arg - ''' - print(f"INS: {p[1]}") + """ + print(f"Item: {p[1]}") p[0] = p[1] pass + def p_jumpdest(p): - '''jumpdest : SYMBOL COLON''' - p[0] = (p[1], ) + """jumpdest : SYMBOL COLON""" + p[0] = (p[1],) + def p_twoarg(p): - '''twoarg : op REG COMMA argument COMMA argument''' + """twoarg : op REG COMMA argument COMMA argument""" p[0] = (*p[1], p[2], p[4], p[6]) pass + def p_argument(p): - '''argument : number + """argument : number | REG | SYMBOL - ''' + """ pass + def p_onearg(p): - '''onearg : op REG COMMA argument''' + """onearg : op REG COMMA argument""" p[0] = (*p[1], p[2], p[4], None) pass + def p_noarg(p): - '''noarg : op''' + """noarg : op""" p[0] = (*p[1], None, None, None) pass + def p_invalid_arg(p): - '''invalid_arg : op argument''' + """invalid_arg : op argument""" print(f"Invalid opcode, destination missing: {p[1:]}") sys.exit(1) pass + def p_op(p): - '''op : OP DOT JUMP + """op : OP DOT JUMP | OP - ''' + """ if len(p) == 2: p[0] = (p[1], None) else: @@ -118,9 +133,10 @@ def p_op(p): def p_number(p): - '''number : NUMBER + """number : NUMBER | HEXNUMBER - ''' + """ p[0] = p[1] + parser = yacc.yacc() -- cgit v1.2.3