1.1 --- a/micropython/trans.py Mon Jun 15 00:40:25 2009 +0200
1.2 +++ b/micropython/trans.py Sun Jun 21 02:02:53 2009 +0200
1.3 @@ -1220,12 +1220,44 @@
1.4 self.new_op(JumpIfTrue(handled_block))
1.5 self.new_op(RaiseException())
1.6
1.7 - def _generateSequence(self, sequence_type, node):
1.8 + def _generateTuple(self, node):
1.9 +
1.10 + "Make a tuple using the given program 'node'."
1.11 +
1.12 + self.make_instance(self.get_builtin_class("tuple", node), len(node.nodes))
1.13 + temp = self.get_temp()
1.14 + self._populateSequence(temp, node)
1.15 + self.new_op(temp)
1.16 + self.discard_temp(temp)
1.17 +
1.18 + def _generateList(self, node):
1.19 +
1.20 + "Make a list using the given program 'node'."
1.21 +
1.22 + # Make a fragment containing the list elements.
1.23
1.24 - "Make a sequence of 'sequence_type' for the given program 'node'."
1.25 + self.new_op(MakeFragment(len(node.nodes) + 1))
1.26 + temp = self.get_temp()
1.27 + self._populateSequence(temp, node)
1.28 + self.new_op(temp)
1.29 + self.record_value()
1.30
1.31 - self.make_instance(self.get_builtin_class(sequence_type, node), len(node.nodes))
1.32 - temp = self.get_temp()
1.33 + self.make_instance(self.get_builtin_class("list", node), 1)
1.34 + list_temp = self.get_temp()
1.35 + self.new_op(list_temp)
1.36 + self.new_op(StoreAttr(Attr(0, None, None)))
1.37 + self.set_source()
1.38 + self.discard_value()
1.39 +
1.40 + self.new_op(list_temp)
1.41 + self.discard_temp(temp)
1.42 + self.discard_temp(list_temp)
1.43 +
1.44 + def _populateSequence(self, temp, node):
1.45 +
1.46 + """
1.47 + Populate a sequence using the given 'temp' reference and program 'node'.
1.48 + """
1.49
1.50 for i, n in enumerate(node.nodes):
1.51 self.dispatch(n)
1.52 @@ -1235,9 +1267,6 @@
1.53 self.set_source()
1.54 self.discard_value()
1.55
1.56 - self.new_op(temp)
1.57 - self.discard_temp(temp)
1.58 -
1.59 def _generateTestBoolean(self, node, temp):
1.60
1.61 """