Skip to content

Commit 9599ef0

Browse files
committed
fix: use a different approach for norm attr
1 parent 2489ed4 commit 9599ef0

File tree

2 files changed

+6
-24
lines changed

2 files changed

+6
-24
lines changed

src/arch/z80/translator.py

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,7 @@ def visit_WHILE_DO(self, node):
700700
# Drawing Primitives PLOT, DRAW, DRAW3, CIRCLE
701701
# -----------------------------------------------------------------------------------------------------
702702
def visit_PLOT(self, node):
703+
self.norm_attr()
703704
TMP_HAS_ATTR = self.check_attr(node, 2)
704705
yield TMP_HAS_ATTR
705706
yield node.children[0]
@@ -708,9 +709,9 @@ def visit_PLOT(self, node):
708709
self.ic_fparam(node.children[1].type_, node.children[1].t)
709710
self.runtime_call(RuntimeLabel.PLOT, 0)
710711
self.HAS_ATTR = TMP_HAS_ATTR is not None
711-
self.norm_attr()
712712

713713
def visit_DRAW(self, node):
714+
self.norm_attr()
714715
TMP_HAS_ATTR = self.check_attr(node, 2)
715716
yield TMP_HAS_ATTR
716717
yield node.children[0]
@@ -719,9 +720,9 @@ def visit_DRAW(self, node):
719720
self.ic_fparam(node.children[1].type_, node.children[1].t)
720721
self.runtime_call(RuntimeLabel.DRAW, 0)
721722
self.HAS_ATTR = TMP_HAS_ATTR is not None
722-
self.norm_attr()
723723

724724
def visit_DRAW3(self, node):
725+
self.norm_attr()
725726
TMP_HAS_ATTR = self.check_attr(node, 3)
726727
yield TMP_HAS_ATTR
727728
yield node.children[0]
@@ -732,9 +733,9 @@ def visit_DRAW3(self, node):
732733
self.ic_fparam(node.children[2].type_, node.children[2].t)
733734
self.runtime_call(RuntimeLabel.DRAW3, 0)
734735
self.HAS_ATTR = TMP_HAS_ATTR is not None
735-
self.norm_attr()
736736

737737
def visit_CIRCLE(self, node):
738+
self.norm_attr()
738739
TMP_HAS_ATTR = self.check_attr(node, 3)
739740
yield TMP_HAS_ATTR
740741
yield node.children[0]
@@ -745,7 +746,6 @@ def visit_CIRCLE(self, node):
745746
self.ic_fparam(node.children[2].type_, node.children[2].t)
746747
self.runtime_call(RuntimeLabel.CIRCLE, 0)
747748
self.HAS_ATTR = TMP_HAS_ATTR is not None
748-
self.norm_attr()
749749

750750
# endregion
751751

@@ -759,6 +759,7 @@ def visit_OUT(self, node):
759759
self.ic_out(node.children[0].t, node.children[1].t)
760760

761761
def visit_PRINT(self, node):
762+
self.norm_attr()
762763
for i in node.children:
763764
yield i
764765

@@ -788,19 +789,8 @@ def visit_PRINT(self, node):
788789
}[self.TSUFFIX(i.type_)]
789790
self.runtime_call(label, 0)
790791

791-
for i in node.children:
792-
if i.token in self.ATTR_TMP or self.has_control_chars(i):
793-
self.HAS_ATTR = True
794-
break
795-
796792
if node.eol:
797-
if self.HAS_ATTR:
798-
self.runtime_call(RuntimeLabel.PRINT_EOL_ATTR, 0)
799-
self.HAS_ATTR = False
800-
else:
801-
self.runtime_call(RuntimeLabel.PRINT_EOL, 0)
802-
else:
803-
self.norm_attr()
793+
self.runtime_call(RuntimeLabel.PRINT_EOL, 0)
804794

805795
def visit_PRINT_AT(self, node):
806796
yield node.children[0]
@@ -1463,7 +1453,6 @@ def visit_FUNCTION(self, node):
14631453
for i in node.body:
14641454
yield i
14651455

1466-
self.norm_attr()
14671456
self.ic_label("%s__leave" % node.mangled)
14681457

14691458
# Now free any local string from memory.

src/arch/z80/translatorvisitor.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,17 +181,10 @@ def _visit(self, node):
181181
if node.token in self.ATTR_TMP:
182182
return self.visit_ATTR_TMP(node)
183183

184-
if node.token not in self.ATTR and isinstance(node, symbols.SENTENCE):
185-
self.norm_attr()
186-
187184
return TranslatorInstVisitor._visit(self, node)
188185

189186
def norm_attr(self):
190187
"""Normalize attr state"""
191-
if not self.HAS_ATTR:
192-
return
193-
194-
self.HAS_ATTR = False
195188
self.runtime_call(RuntimeLabel.COPY_ATTR, 0)
196189

197190
@staticmethod

0 commit comments

Comments
 (0)