aboutsummaryrefslogtreecommitdiffstats
path: root/atk16_asm/asm_pass2.py
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2024-02-21 12:07:07 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2024-02-21 12:07:07 +0200
commit927c018f12e73c254cec32c0f60e1c01b9fc0319 (patch)
tree21fbb975e3567cb0d9ab3fb34519c50325571d6c /atk16_asm/asm_pass2.py
parenta0b4a1a6107e4dc905b21858d8ac76c47293cfb4 (diff)
Refactor names
Diffstat (limited to 'atk16_asm/asm_pass2.py')
-rw-r--r--atk16_asm/asm_pass2.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/atk16_asm/asm_pass2.py b/atk16_asm/asm_pass2.py
new file mode 100644
index 0000000..e2ad4ec
--- /dev/null
+++ b/atk16_asm/asm_pass2.py
@@ -0,0 +1,40 @@
+from dataclasses import dataclass
+from asm_ops import *
+from asm_eval import *
+from asm_pass1 import *
+
+@dataclass
+class Result2Line:
+ line_num: int
+ src_file: str
+ parts: list[str]
+ original_parts: list[str]
+
+@dataclass
+class Result2:
+ lines: list[Result2Line]
+ operations: OpExpansionDict
+
+def pass_2(result1: Result1) -> Result2:
+ result_lines: list[Result2Line] = []
+
+ for line in result1.lines:
+ keyword, *args = line.parts
+ if keyword in result1.operations:
+ fn = result1.operations[keyword]
+ output: list[list[str]] = fn(*args)
+ else:
+ output = [line.parts]
+
+ for (idx, parts) in enumerate(output):
+ result_lines.append(Result2Line(
+ line_num=line.line_num,
+ src_file=line.src_file,
+ parts=parts,
+ original_parts=line.parts if idx == 0 else ["..."]
+ ))
+
+ return Result2(
+ operations=result1.operations,
+ lines=result_lines
+ )