diff --git a/goboscript_gdsl/cls.py b/goboscript_gdsl/cls.py index f1c53f1..9486fe9 100644 --- a/goboscript_gdsl/cls.py +++ b/goboscript_gdsl/cls.py @@ -3,6 +3,7 @@ @dataclass class UnOp: + variant: str opcode: str input: str fields: dict[str, str] @@ -10,6 +11,7 @@ class UnOp: @dataclass class BinOp: + variant: str opcode: str lhs: str rhs: str @@ -25,6 +27,7 @@ class Menu: @dataclass class Block: + variant: str name: str opcode: str args: list[str] diff --git a/goboscript_gdsl/parse.py b/goboscript_gdsl/parse.py index 3795092..e001b60 100644 --- a/goboscript_gdsl/parse.py +++ b/goboscript_gdsl/parse.py @@ -99,7 +99,7 @@ def parse(self) -> GDSLData: else: old_input = inp - ret.un_ops[variant] = UnOp(opcode, inp, fields) + ret.un_ops[variant] = UnOp(variant, opcode, inp, fields) elif section == "BINARY": if line.endswith("~"): @@ -124,7 +124,7 @@ def parse(self) -> GDSLData: else: old_rhs = rhs - ret.bin_ops[variant] = BinOp(opcode, lhs, rhs) + ret.bin_ops[variant] = BinOp(variant, opcode, lhs, rhs) else: self.p(line, repr=True) @@ -200,10 +200,10 @@ def parse(self) -> GDSLData: if not isinstance(block, list): block = [block] - block.append(Block(name, opcode, args, fields, menu)) + block.append(Block(variant, name, opcode, args, fields, menu)) container[variant] = block else: - container[variant] = Block(name, opcode, args, fields, menu) + container[variant] = Block(variant, name, opcode, args, fields, menu) return ret