diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2024-02-20 16:55:14 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2024-02-20 16:56:09 +0200 |
| commit | 549901c85044b6ccd912688d6be007c2fdacc6c6 (patch) | |
| tree | 15d1123eedb4347472e4b47fec880e2e5b79927e /atk16-asm/asm_pass2.py | |
| parent | abf0594c78087434bced59054896f7f411e18faf (diff) | |
Refactor dir structure
Diffstat (limited to 'atk16-asm/asm_pass2.py')
| -rw-r--r-- | atk16-asm/asm_pass2.py | 40 |
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 + ) |
