2 #import xml.etree.ElementTree
10 translate_identifier = {
18 self.enclosing_loop = enclosing_loop
19 self.initial = initial # whether to add declared identifiers as 'self.'
20 self.translate_identifier = translate_identifier
22 class Element(element.Element):
23 # GENERATE ELEMENT() BEGIN
31 element.Element.__init__(
38 def copy(self, factory = None):
39 result = element.Element.copy(
41 Element if factory is None else factory
46 self.repr_serialize(params)
47 return 'ast.Element({0:s})'.format(', '.join(params))
49 def translate(self, context):
53 for i in range(len(self) + 1):
54 text = element.get_text(self, i).strip()
57 (len(self[i]) == 0 and len(element.get_text(self[i], 0)) == 0)
62 prev_empty = next_empty
71 elif text[0] not in ',;)}]':
74 prev_empty = text[-1] in '({['
75 elif text[0] not in '({[':
77 element.set_text(self, i, text)
79 class DeclarationOrStatement(Element):
80 # GENERATE ELEMENT() BEGIN
83 tag = 'DeclarationOrStatement',
95 def copy(self, factory = None):
96 result = Element.copy(
98 DeclarationOrStatement if factory is None else factory
103 self.repr_serialize(params)
104 return 'ast.DeclarationOrStatement({0:s})'.format(', '.join(params))
106 def translate(self, context):
107 Element.translate(self, context)
111 '{0:s}{1:s}'.format(context.indent, element.get_text(self, 0))
113 text = element.get_text(self, len(self))
116 element.set_text(self, len(self), '{0:s}\n'.format(text))
118 class AlignAsExpression(Element):
119 # GENERATE ELEMENT() BEGIN
122 tag = 'AlignAsExpression',
134 def copy(self, factory = None):
135 result = Element.copy(
137 AlignAsExpression if factory is None else factory
142 self.repr_serialize(params)
143 return 'ast.AlignAsExpression({0:s})'.format(', '.join(params))
146 class AlignAsType(Element):
147 # GENERATE ELEMENT() BEGIN
162 def copy(self, factory = None):
163 result = Element.copy(
165 AlignAsType if factory is None else factory
170 self.repr_serialize(params)
171 return 'ast.AlignAsType({0:s})'.format(', '.join(params))
174 class ArgumentExpressionList(Element):
175 # GENERATE ELEMENT() BEGIN
178 tag = 'ArgumentExpressionList',
190 def copy(self, factory = None):
191 result = Element.copy(
193 ArgumentExpressionList if factory is None else factory
198 self.repr_serialize(params)
199 return 'ast.ArgumentExpressionList({0:s})'.format(', '.join(params))
202 class BlockItemList(Element):
203 # GENERATE ELEMENT() BEGIN
206 tag = 'BlockItemList',
218 def copy(self, factory = None):
219 result = Element.copy(
221 BlockItemList if factory is None else factory
226 self.repr_serialize(params)
227 return 'ast.BlockItemList({0:s})'.format(', '.join(params))
229 def translate(self, context):
232 for i in range(len(self) + 1):
233 element.set_text(self, i, '')
235 class CommaEllipsis(Element):
236 # GENERATE ELEMENT() BEGIN
239 tag = 'CommaEllipsis',
251 def copy(self, factory = None):
252 result = Element.copy(
254 CommaEllipsis if factory is None else factory
259 self.repr_serialize(params)
260 return 'ast.CommaEllipsis({0:s})'.format(', '.join(params))
263 class CommaEllipsisEmpty(Element):
264 # GENERATE ELEMENT() BEGIN
267 tag = 'CommaEllipsisEmpty',
279 def copy(self, factory = None):
280 result = Element.copy(
282 CommaEllipsisEmpty if factory is None else factory
287 self.repr_serialize(params)
288 return 'ast.CommaEllipsisEmpty({0:s})'.format(', '.join(params))
291 class Declaration(DeclarationOrStatement):
292 # GENERATE ELEMENT() BEGIN
300 DeclarationOrStatement.__init__(
307 def copy(self, factory = None):
308 result = DeclarationOrStatement.copy(
310 Declaration if factory is None else factory
315 self.repr_serialize(params)
316 return 'ast.Declaration({0:s})'.format(', '.join(params))
319 class DeclarationList(Element):
320 # GENERATE ELEMENT() BEGIN
323 tag = 'DeclarationList',
335 def copy(self, factory = None):
336 result = Element.copy(
338 DeclarationList if factory is None else factory
343 self.repr_serialize(params)
344 return 'ast.DeclarationList({0:s})'.format(', '.join(params))
347 class DeclarationSpecifierList(Element):
348 # GENERATE ELEMENT() BEGIN
351 tag = 'DeclarationSpecifierList',
363 def copy(self, factory = None):
364 result = Element.copy(
366 DeclarationSpecifierList if factory is None else factory
371 self.repr_serialize(params)
372 return 'ast.DeclarationSpecifierList({0:s})'.format(', '.join(params))
375 class Declarator(Element):
376 # GENERATE ELEMENT() BEGIN
391 def copy(self, factory = None):
392 result = Element.copy(
394 Declarator if factory is None else factory
399 self.repr_serialize(params)
400 return 'ast.Declarator({0:s})'.format(', '.join(params))
403 class DeclaratorAbstract(Declarator):
404 # GENERATE ELEMENT() BEGIN
407 tag = 'DeclaratorAbstract',
419 def copy(self, factory = None):
420 result = Declarator.copy(
422 DeclaratorAbstract if factory is None else factory
427 self.repr_serialize(params)
428 return 'ast.DeclaratorAbstract({0:s})'.format(', '.join(params))
431 class DeclaratorArray(Declarator):
432 # GENERATE ELEMENT() BEGIN
435 tag = 'DeclaratorArray',
447 def copy(self, factory = None):
448 result = Declarator.copy(
450 DeclaratorArray if factory is None else factory
455 self.repr_serialize(params)
456 return 'ast.DeclaratorArray({0:s})'.format(', '.join(params))
458 def translate(self, context):
459 assert len(self) == 3
460 self[0].translate(context)
461 self[1].translate(context)
462 self[2].translate(context)
463 element.set_text(self, 0, '')
464 element.set_text(self, 1, '[')
468 ' ' if len(self[1]) or len(element.get_text(self[1], 0)) else ''
470 element.set_text(self, 3, ']')
472 class DeclaratorEmpty(Declarator):
473 # GENERATE ELEMENT() BEGIN
476 tag = 'DeclaratorEmpty',
488 def copy(self, factory = None):
489 result = Declarator.copy(
491 DeclaratorEmpty if factory is None else factory
496 self.repr_serialize(params)
497 return 'ast.DeclaratorEmpty({0:s})'.format(', '.join(params))
500 class DeclaratorFunction(Declarator):
501 # GENERATE ELEMENT() BEGIN
504 tag = 'DeclaratorFunction',
516 def copy(self, factory = None):
517 result = Declarator.copy(
519 DeclaratorFunction if factory is None else factory
524 self.repr_serialize(params)
525 return 'ast.DeclaratorFunction({0:s})'.format(', '.join(params))
527 def translate(self, context):
528 assert len(self) == 3
529 self[0].translate(context)
530 initial_save = context.initial
531 context.initial = False
532 self[1].translate(context)
533 self[2].translate(context)
534 context.initial = initial_save
535 element.set_text(self, 0, '')
536 element.set_text(self, 1, '(')
537 element.set_text(self, 2, '')
538 element.set_text(self, 3, ')')
540 class DeclaratorFunctionOldStyle(Declarator):
541 # GENERATE ELEMENT() BEGIN
544 tag = 'DeclaratorFunctionOldStyle',
556 def copy(self, factory = None):
557 result = Declarator.copy(
559 DeclaratorFunctionOldStyle if factory is None else factory
564 self.repr_serialize(params)
565 return 'ast.DeclaratorFunctionOldStyle({0:s})'.format(', '.join(params))
567 def translate(self, context):
568 assert len(self) == 2
569 self[0].translate(context)
570 initial_save = context.initial
571 context.initial = False
572 self[1].translate(context)
573 context.initial = initial_save
574 element.set_text(self, 0, '')
575 element.set_text(self, 1, '(')
576 element.set_text(self, 2, ')')
578 class DeclaratorIdentifier(Declarator):
579 # GENERATE ELEMENT() BEGIN
582 tag = 'DeclaratorIdentifier',
594 def copy(self, factory = None):
595 result = Declarator.copy(
597 DeclaratorIdentifier if factory is None else factory
602 self.repr_serialize(params)
603 return 'ast.DeclaratorIdentifier({0:s})'.format(', '.join(params))
605 def translate(self, context):
607 text = element.get_text(self[0], 0)
608 assert text not in context.translate_identifier
609 context.translate_identifier[text] = 'self.{0:s}'.format(text)
610 Declarator.translate(self, context)
612 class DeclaratorPointer(Declarator):
613 # GENERATE ELEMENT() BEGIN
616 tag = 'DeclaratorPointer',
628 def copy(self, factory = None):
629 result = Declarator.copy(
631 DeclaratorPointer if factory is None else factory
636 self.repr_serialize(params)
637 return 'ast.DeclaratorPointer({0:s})'.format(', '.join(params))
639 def translate(self, context):
640 assert len(self) == 2
641 self[0].translate(context)
642 self[1].translate(context)
643 element.set_text(self, 0, '*')
647 ' ' if len(self[0]) or len(element.get_text(self[0], 0)) else ''
650 class DefaultTypeName(Element):
651 # GENERATE ELEMENT() BEGIN
654 tag = 'DefaultTypeName',
666 def copy(self, factory = None):
667 result = Element.copy(
669 DefaultTypeName if factory is None else factory
674 self.repr_serialize(params)
675 return 'ast.DefaultTypeName({0:s})'.format(', '.join(params))
678 class DesignatorField(Element):
679 # GENERATE ELEMENT() BEGIN
682 tag = 'DesignatorField',
694 def copy(self, factory = None):
695 result = Element.copy(
697 DesignatorField if factory is None else factory
702 self.repr_serialize(params)
703 return 'ast.DesignatorField({0:s})'.format(', '.join(params))
706 class DesignatorIndex(Element):
707 # GENERATE ELEMENT() BEGIN
710 tag = 'DesignatorIndex',
722 def copy(self, factory = None):
723 result = Element.copy(
725 DesignatorIndex if factory is None else factory
730 self.repr_serialize(params)
731 return 'ast.DesignatorIndex({0:s})'.format(', '.join(params))
734 class DesignatorInitializer(Element):
735 # GENERATE ELEMENT() BEGIN
738 tag = 'DesignatorInitializer',
750 def copy(self, factory = None):
751 result = Element.copy(
753 DesignatorInitializer if factory is None else factory
758 self.repr_serialize(params)
759 return 'ast.DesignatorInitializer({0:s})'.format(', '.join(params))
762 class DesignatorInitializerList(Element):
763 # GENERATE ELEMENT() BEGIN
766 tag = 'DesignatorInitializerList',
778 def copy(self, factory = None):
779 result = Element.copy(
781 DesignatorInitializerList if factory is None else factory
786 self.repr_serialize(params)
787 return 'ast.DesignatorInitializerList({0:s})'.format(', '.join(params))
790 class DesignatorList(Element):
791 # GENERATE ELEMENT() BEGIN
794 tag = 'DesignatorList',
806 def copy(self, factory = None):
807 result = Element.copy(
809 DesignatorList if factory is None else factory
814 self.repr_serialize(params)
815 return 'ast.DesignatorList({0:s})'.format(', '.join(params))
818 class EnumSpecifier(Element):
819 # GENERATE ELEMENT() BEGIN
822 tag = 'EnumSpecifier',
834 def copy(self, factory = None):
835 result = Element.copy(
837 EnumSpecifier if factory is None else factory
842 self.repr_serialize(params)
843 return 'ast.EnumSpecifier({0:s})'.format(', '.join(params))
846 class Enumerator(Element):
847 # GENERATE ELEMENT() BEGIN
862 def copy(self, factory = None):
863 result = Element.copy(
865 Enumerator if factory is None else factory
870 self.repr_serialize(params)
871 return 'ast.Enumerator({0:s})'.format(', '.join(params))
874 class EnumeratorList(Element):
875 # GENERATE ELEMENT() BEGIN
878 tag = 'EnumeratorList',
890 def copy(self, factory = None):
891 result = Element.copy(
893 EnumeratorList if factory is None else factory
898 self.repr_serialize(params)
899 return 'ast.EnumeratorList({0:s})'.format(', '.join(params))
902 class EqualsInitializerEmpty(Element):
903 # GENERATE ELEMENT() BEGIN
906 tag = 'EqualsInitializerEmpty',
918 def copy(self, factory = None):
919 result = Element.copy(
921 EqualsInitializerEmpty if factory is None else factory
926 self.repr_serialize(params)
927 return 'ast.EqualsInitializerEmpty({0:s})'.format(', '.join(params))
930 class Expression(Element):
931 # GENERATE ELEMENT() BEGIN
946 def copy(self, factory = None):
947 result = Element.copy(
949 Expression if factory is None else factory
954 self.repr_serialize(params)
955 return 'ast.Expression({0:s})'.format(', '.join(params))
958 class ExpressionAdd(Expression):
959 # GENERATE ELEMENT() BEGIN
962 tag = 'ExpressionAdd',
974 def copy(self, factory = None):
975 result = Expression.copy(
977 ExpressionAdd if factory is None else factory
982 self.repr_serialize(params)
983 return 'ast.ExpressionAdd({0:s})'.format(', '.join(params))
986 class ExpressionAddAssignment(Expression):
987 # GENERATE ELEMENT() BEGIN
990 tag = 'ExpressionAddAssignment',
1002 def copy(self, factory = None):
1003 result = Expression.copy(
1005 ExpressionAddAssignment if factory is None else factory
1010 self.repr_serialize(params)
1011 return 'ast.ExpressionAddAssignment({0:s})'.format(', '.join(params))
1014 class ExpressionAddressOf(Expression):
1015 # GENERATE ELEMENT() BEGIN
1018 tag = 'ExpressionAddressOf',
1023 Expression.__init__(
1030 def copy(self, factory = None):
1031 result = Expression.copy(
1033 ExpressionAddressOf if factory is None else factory
1038 self.repr_serialize(params)
1039 return 'ast.ExpressionAddressOf({0:s})'.format(', '.join(params))
1041 def translate(self, context):
1042 assert len(self) == 1
1043 self[0].translate(context)
1044 element.set_text(self, 0, '&')
1045 element.set_text(self, 1, '')
1047 class ExpressionAlignOfType(Expression):
1048 # GENERATE ELEMENT() BEGIN
1051 tag = 'ExpressionAlignOfType',
1056 Expression.__init__(
1063 def copy(self, factory = None):
1064 result = Expression.copy(
1066 ExpressionAlignOfType if factory is None else factory
1071 self.repr_serialize(params)
1072 return 'ast.ExpressionAlignOfType({0:s})'.format(', '.join(params))
1075 class ExpressionArray(Expression):
1076 # GENERATE ELEMENT() BEGIN
1079 tag = 'ExpressionArray',
1084 Expression.__init__(
1091 def copy(self, factory = None):
1092 result = Expression.copy(
1094 ExpressionArray if factory is None else factory
1099 self.repr_serialize(params)
1100 return 'ast.ExpressionArray({0:s})'.format(', '.join(params))
1103 class ExpressionAssignment(Expression):
1104 # GENERATE ELEMENT() BEGIN
1107 tag = 'ExpressionAssignment',
1112 Expression.__init__(
1119 def copy(self, factory = None):
1120 result = Expression.copy(
1122 ExpressionAssignment if factory is None else factory
1127 self.repr_serialize(params)
1128 return 'ast.ExpressionAssignment({0:s})'.format(', '.join(params))
1131 class ExpressionAsterisk(Expression):
1132 # GENERATE ELEMENT() BEGIN
1135 tag = 'ExpressionAsterisk',
1140 Expression.__init__(
1147 def copy(self, factory = None):
1148 result = Expression.copy(
1150 ExpressionAsterisk if factory is None else factory
1155 self.repr_serialize(params)
1156 return 'ast.ExpressionAsterisk({0:s})'.format(', '.join(params))
1159 class ExpressionBitwiseAnd(Expression):
1160 # GENERATE ELEMENT() BEGIN
1163 tag = 'ExpressionBitwiseAnd',
1168 Expression.__init__(
1175 def copy(self, factory = None):
1176 result = Expression.copy(
1178 ExpressionBitwiseAnd if factory is None else factory
1183 self.repr_serialize(params)
1184 return 'ast.ExpressionBitwiseAnd({0:s})'.format(', '.join(params))
1187 class ExpressionBitwiseAndAssignment(Expression):
1188 # GENERATE ELEMENT() BEGIN
1191 tag = 'ExpressionBitwiseAndAssignment',
1196 Expression.__init__(
1203 def copy(self, factory = None):
1204 result = Expression.copy(
1206 ExpressionBitwiseAndAssignment if factory is None else factory
1211 self.repr_serialize(params)
1212 return 'ast.ExpressionBitwiseAndAssignment({0:s})'.format(', '.join(params))
1215 class ExpressionBitwiseNot(Expression):
1216 # GENERATE ELEMENT() BEGIN
1219 tag = 'ExpressionBitwiseNot',
1224 Expression.__init__(
1231 def copy(self, factory = None):
1232 result = Expression.copy(
1234 ExpressionBitwiseNot if factory is None else factory
1239 self.repr_serialize(params)
1240 return 'ast.ExpressionBitwiseNot({0:s})'.format(', '.join(params))
1242 def translate(self, context):
1243 assert len(self) == 1
1244 self[0].translate(context)
1245 element.set_text(self, 0, '~')
1246 element.set_text(self, 1, '')
1248 class ExpressionBitwiseOr(Expression):
1249 # GENERATE ELEMENT() BEGIN
1252 tag = 'ExpressionBitwiseOr',
1257 Expression.__init__(
1264 def copy(self, factory = None):
1265 result = Expression.copy(
1267 ExpressionBitwiseOr if factory is None else factory
1272 self.repr_serialize(params)
1273 return 'ast.ExpressionBitwiseOr({0:s})'.format(', '.join(params))
1276 class ExpressionBitwiseOrAssignment(Expression):
1277 # GENERATE ELEMENT() BEGIN
1280 tag = 'ExpressionBitwiseOrAssignment',
1285 Expression.__init__(
1292 def copy(self, factory = None):
1293 result = Expression.copy(
1295 ExpressionBitwiseOrAssignment if factory is None else factory
1300 self.repr_serialize(params)
1301 return 'ast.ExpressionBitwiseOrAssignment({0:s})'.format(', '.join(params))
1304 class ExpressionCall(Expression):
1305 # GENERATE ELEMENT() BEGIN
1308 tag = 'ExpressionCall',
1313 Expression.__init__(
1320 def copy(self, factory = None):
1321 result = Expression.copy(
1323 ExpressionCall if factory is None else factory
1328 self.repr_serialize(params)
1329 return 'ast.ExpressionCall({0:s})'.format(', '.join(params))
1331 def translate(self, context):
1332 assert len(self) == 2
1333 self[0].translate(context)
1334 self[1].translate(context)
1335 element.set_text(self, 0, '')
1336 element.set_text(self, 1, '(')
1337 element.set_text(self, 2, ')')
1339 class ExpressionCast(Expression):
1340 # GENERATE ELEMENT() BEGIN
1343 tag = 'ExpressionCast',
1348 Expression.__init__(
1355 def copy(self, factory = None):
1356 result = Expression.copy(
1358 ExpressionCast if factory is None else factory
1363 self.repr_serialize(params)
1364 return 'ast.ExpressionCast({0:s})'.format(', '.join(params))
1366 def translate(self, context):
1367 assert len(self) == 2
1368 self[0].translate(context)
1369 self[1].translate(context)
1370 element.set_text(self, 0, '')
1371 element.set_text(self, 1, '(')
1372 element.set_text(self, 2, ')')
1374 class ExpressionCharConstant(Expression):
1375 # GENERATE ELEMENT() BEGIN
1378 tag = 'ExpressionCharConstant',
1383 Expression.__init__(
1390 def copy(self, factory = None):
1391 result = Expression.copy(
1393 ExpressionCharConstant if factory is None else factory
1398 self.repr_serialize(params)
1399 return 'ast.ExpressionCharConstant({0:s})'.format(', '.join(params))
1401 def translate(self, context):
1402 assert len(self) == 0
1406 'ord({0:s})'.format(element.get_text(self, 0).strip())
1409 class ExpressionComma(Expression):
1410 # GENERATE ELEMENT() BEGIN
1413 tag = 'ExpressionComma',
1418 Expression.__init__(
1425 def copy(self, factory = None):
1426 result = Expression.copy(
1428 ExpressionComma if factory is None else factory
1433 self.repr_serialize(params)
1434 return 'ast.ExpressionComma({0:s})'.format(', '.join(params))
1437 class ExpressionConditional(Expression):
1438 # GENERATE ELEMENT() BEGIN
1441 tag = 'ExpressionConditional',
1446 Expression.__init__(
1453 def copy(self, factory = None):
1454 result = Expression.copy(
1456 ExpressionConditional if factory is None else factory
1461 self.repr_serialize(params)
1462 return 'ast.ExpressionConditional({0:s})'.format(', '.join(params))
1464 def translate(self, context):
1465 #xml.etree.ElementTree.dump(self)
1466 assert len(self) == 3
1467 self[0].translate(context)
1468 self[1].translate(context)
1469 self[2].translate(context)
1470 self[0], self[1] = self[1], self[0]
1471 element.set_text(self, 0, '')
1472 element.set_text(self, 1, ' if ')
1473 element.set_text(self, 2, ' else ')
1474 element.set_text(self, 3, '')
1476 class ExpressionDereference(Expression):
1477 # GENERATE ELEMENT() BEGIN
1480 tag = 'ExpressionDereference',
1485 Expression.__init__(
1492 def copy(self, factory = None):
1493 result = Expression.copy(
1495 ExpressionDereference if factory is None else factory
1500 self.repr_serialize(params)
1501 return 'ast.ExpressionDereference({0:s})'.format(', '.join(params))
1503 def translate(self, context):
1504 assert len(self) == 1
1505 self[0].translate(context)
1506 element.set_text(self, 0, '*')
1507 element.set_text(self, 1, '')
1509 class ExpressionDivide(Expression):
1510 # GENERATE ELEMENT() BEGIN
1513 tag = 'ExpressionDivide',
1518 Expression.__init__(
1525 def copy(self, factory = None):
1526 result = Expression.copy(
1528 ExpressionDivide if factory is None else factory
1533 self.repr_serialize(params)
1534 return 'ast.ExpressionDivide({0:s})'.format(', '.join(params))
1537 class ExpressionDivideAssignment(Expression):
1538 # GENERATE ELEMENT() BEGIN
1541 tag = 'ExpressionDivideAssignment',
1546 Expression.__init__(
1553 def copy(self, factory = None):
1554 result = Expression.copy(
1556 ExpressionDivideAssignment if factory is None else factory
1561 self.repr_serialize(params)
1562 return 'ast.ExpressionDivideAssignment({0:s})'.format(', '.join(params))
1565 class ExpressionEmpty(Expression):
1566 # GENERATE ELEMENT() BEGIN
1569 tag = 'ExpressionEmpty',
1574 Expression.__init__(
1581 def copy(self, factory = None):
1582 result = Expression.copy(
1584 ExpressionEmpty if factory is None else factory
1589 self.repr_serialize(params)
1590 return 'ast.ExpressionEmpty({0:s})'.format(', '.join(params))
1593 class ExpressionEqual(Expression):
1594 # GENERATE ELEMENT() BEGIN
1597 tag = 'ExpressionEqual',
1602 Expression.__init__(
1609 def copy(self, factory = None):
1610 result = Expression.copy(
1612 ExpressionEqual if factory is None else factory
1617 self.repr_serialize(params)
1618 return 'ast.ExpressionEqual({0:s})'.format(', '.join(params))
1621 class ExpressionExclusiveOr(Expression):
1622 # GENERATE ELEMENT() BEGIN
1625 tag = 'ExpressionExclusiveOr',
1630 Expression.__init__(
1637 def copy(self, factory = None):
1638 result = Expression.copy(
1640 ExpressionExclusiveOr if factory is None else factory
1645 self.repr_serialize(params)
1646 return 'ast.ExpressionExclusiveOr({0:s})'.format(', '.join(params))
1649 class ExpressionExclusiveOrAssignment(Expression):
1650 # GENERATE ELEMENT() BEGIN
1653 tag = 'ExpressionExclusiveOrAssignment',
1658 Expression.__init__(
1665 def copy(self, factory = None):
1666 result = Expression.copy(
1668 ExpressionExclusiveOrAssignment if factory is None else factory
1673 self.repr_serialize(params)
1674 return 'ast.ExpressionExclusiveOrAssignment({0:s})'.format(', '.join(params))
1677 class ExpressionField(Expression):
1678 # GENERATE ELEMENT() BEGIN
1681 tag = 'ExpressionField',
1686 Expression.__init__(
1693 def copy(self, factory = None):
1694 result = Expression.copy(
1696 ExpressionField if factory is None else factory
1701 self.repr_serialize(params)
1702 return 'ast.ExpressionField({0:s})'.format(', '.join(params))
1705 class ExpressionFieldDereference(Expression):
1706 # GENERATE ELEMENT() BEGIN
1709 tag = 'ExpressionFieldDereference',
1714 Expression.__init__(
1721 def copy(self, factory = None):
1722 result = Expression.copy(
1724 ExpressionFieldDereference if factory is None else factory
1729 self.repr_serialize(params)
1730 return 'ast.ExpressionFieldDereference({0:s})'.format(', '.join(params))
1733 class ExpressionFloatLiteral(Expression):
1734 # GENERATE ELEMENT() BEGIN
1737 tag = 'ExpressionFloatLiteral',
1742 Expression.__init__(
1749 def copy(self, factory = None):
1750 result = Expression.copy(
1752 ExpressionFloatLiteral if factory is None else factory
1757 self.repr_serialize(params)
1758 return 'ast.ExpressionFloatLiteral({0:s})'.format(', '.join(params))
1761 class ExpressionFunctionName(Expression):
1762 # GENERATE ELEMENT() BEGIN
1765 tag = 'ExpressionFunctionName',
1770 Expression.__init__(
1777 def copy(self, factory = None):
1778 result = Expression.copy(
1780 ExpressionFunctionName if factory is None else factory
1785 self.repr_serialize(params)
1786 return 'ast.ExpressionFunctionName({0:s})'.format(', '.join(params))
1789 class ExpressionGreaterThan(Expression):
1790 # GENERATE ELEMENT() BEGIN
1793 tag = 'ExpressionGreaterThan',
1798 Expression.__init__(
1805 def copy(self, factory = None):
1806 result = Expression.copy(
1808 ExpressionGreaterThan if factory is None else factory
1813 self.repr_serialize(params)
1814 return 'ast.ExpressionGreaterThan({0:s})'.format(', '.join(params))
1817 class ExpressionGreaterThanOrEqual(Expression):
1818 # GENERATE ELEMENT() BEGIN
1821 tag = 'ExpressionGreaterThanOrEqual',
1826 Expression.__init__(
1833 def copy(self, factory = None):
1834 result = Expression.copy(
1836 ExpressionGreaterThanOrEqual if factory is None else factory
1841 self.repr_serialize(params)
1842 return 'ast.ExpressionGreaterThanOrEqual({0:s})'.format(', '.join(params))
1845 class ExpressionIdentifier(Expression):
1846 # GENERATE ELEMENT() BEGIN
1849 tag = 'ExpressionIdentifier',
1854 Expression.__init__(
1861 def copy(self, factory = None):
1862 result = Expression.copy(
1864 ExpressionIdentifier if factory is None else factory
1869 self.repr_serialize(params)
1870 return 'ast.ExpressionIdentifier({0:s})'.format(', '.join(params))
1873 class ExpressionIndex(Expression):
1874 # GENERATE ELEMENT() BEGIN
1877 tag = 'ExpressionIndex',
1882 Expression.__init__(
1889 def copy(self, factory = None):
1890 result = Expression.copy(
1892 ExpressionIndex if factory is None else factory
1897 self.repr_serialize(params)
1898 return 'ast.ExpressionIndex({0:s})'.format(', '.join(params))
1900 def translate(self, context):
1901 assert len(self) == 2
1902 self[0].translate(context)
1903 self[1].translate(context)
1904 element.set_text(self, 0, '')
1905 element.set_text(self, 1, '[')
1906 element.set_text(self, 2, ']')
1908 class ExpressionIntLiteral(Expression):
1909 # GENERATE ELEMENT() BEGIN
1912 tag = 'ExpressionIntLiteral',
1917 Expression.__init__(
1924 def copy(self, factory = None):
1925 result = Expression.copy(
1927 ExpressionIntLiteral if factory is None else factory
1932 self.repr_serialize(params)
1933 return 'ast.ExpressionIntLiteral({0:s})'.format(', '.join(params))
1936 class Identifier(Element):
1937 # GENERATE ELEMENT() BEGIN
1952 def copy(self, factory = None):
1953 result = Element.copy(
1955 Identifier if factory is None else factory
1960 self.repr_serialize(params)
1961 return 'ast.Identifier({0:s})'.format(', '.join(params))
1963 def translate(self, context):
1964 assert len(self) == 0
1965 text = element.get_text(self, 0)
1969 context.translate_identifier.get(text, text)
1972 class ExpressionLeftShiftAssignment(Expression):
1973 # GENERATE ELEMENT() BEGIN
1976 tag = 'ExpressionLeftShiftAssignment',
1981 Expression.__init__(
1988 def copy(self, factory = None):
1989 result = Expression.copy(
1991 ExpressionLeftShiftAssignment if factory is None else factory
1996 self.repr_serialize(params)
1997 return 'ast.ExpressionLeftShiftAssignment({0:s})'.format(', '.join(params))
2000 class ExpressionLessThan(Expression):
2001 # GENERATE ELEMENT() BEGIN
2004 tag = 'ExpressionLessThan',
2009 Expression.__init__(
2016 def copy(self, factory = None):
2017 result = Expression.copy(
2019 ExpressionLessThan if factory is None else factory
2024 self.repr_serialize(params)
2025 return 'ast.ExpressionLessThan({0:s})'.format(', '.join(params))
2028 class ExpressionLessThanOrEqual(Expression):
2029 # GENERATE ELEMENT() BEGIN
2032 tag = 'ExpressionLessThanOrEqual',
2037 Expression.__init__(
2044 def copy(self, factory = None):
2045 result = Expression.copy(
2047 ExpressionLessThanOrEqual if factory is None else factory
2052 self.repr_serialize(params)
2053 return 'ast.ExpressionLessThanOrEqual({0:s})'.format(', '.join(params))
2056 class ExpressionLogicalAnd(Expression):
2057 # GENERATE ELEMENT() BEGIN
2060 tag = 'ExpressionLogicalAnd',
2065 Expression.__init__(
2072 def copy(self, factory = None):
2073 result = Expression.copy(
2075 ExpressionLogicalAnd if factory is None else factory
2080 self.repr_serialize(params)
2081 return 'ast.ExpressionLogicalAnd({0:s})'.format(', '.join(params))
2083 def translate(self, context):
2084 assert len(self) == 2
2085 self[0].translate(context)
2086 self[1].translate(context)
2087 element.set_text(self, 0, '')
2088 element.set_text(self, 1, ' and ')
2089 element.set_text(self, 2, '')
2091 class ExpressionLogicalNot(Expression):
2092 # GENERATE ELEMENT() BEGIN
2095 tag = 'ExpressionLogicalNot',
2100 Expression.__init__(
2107 def copy(self, factory = None):
2108 result = Expression.copy(
2110 ExpressionLogicalNot if factory is None else factory
2115 self.repr_serialize(params)
2116 return 'ast.ExpressionLogicalNot({0:s})'.format(', '.join(params))
2118 def translate(self, context):
2119 assert len(self) == 1
2120 self[0].translate(context)
2121 element.set_text(self, 0, 'not ')
2122 element.set_text(self, 1, '')
2124 class ExpressionLogicalOr(Expression):
2125 # GENERATE ELEMENT() BEGIN
2128 tag = 'ExpressionLogicalOr',
2133 Expression.__init__(
2140 def copy(self, factory = None):
2141 result = Expression.copy(
2143 ExpressionLogicalOr if factory is None else factory
2148 self.repr_serialize(params)
2149 return 'ast.ExpressionLogicalOr({0:s})'.format(', '.join(params))
2151 def translate(self, context):
2152 assert len(self) == 2
2153 self[0].translate(context)
2154 self[1].translate(context)
2155 element.set_text(self, 0, '')
2156 element.set_text(self, 1, ' or ')
2157 element.set_text(self, 2, '')
2159 class ExpressionMinus(Expression):
2160 # GENERATE ELEMENT() BEGIN
2163 tag = 'ExpressionMinus',
2168 Expression.__init__(
2175 def copy(self, factory = None):
2176 result = Expression.copy(
2178 ExpressionMinus if factory is None else factory
2183 self.repr_serialize(params)
2184 return 'ast.ExpressionMinus({0:s})'.format(', '.join(params))
2186 def translate(self, context):
2187 assert len(self) == 1
2188 self[0].translate(context)
2189 element.set_text(self, 0, '-')
2190 element.set_text(self, 1, '')
2192 class ExpressionModulo(Expression):
2193 # GENERATE ELEMENT() BEGIN
2196 tag = 'ExpressionModulo',
2201 Expression.__init__(
2208 def copy(self, factory = None):
2209 result = Expression.copy(
2211 ExpressionModulo if factory is None else factory
2216 self.repr_serialize(params)
2217 return 'ast.ExpressionModulo({0:s})'.format(', '.join(params))
2220 class ExpressionModuloAssignment(Expression):
2221 # GENERATE ELEMENT() BEGIN
2224 tag = 'ExpressionModuloAssignment',
2229 Expression.__init__(
2236 def copy(self, factory = None):
2237 result = Expression.copy(
2239 ExpressionModuloAssignment if factory is None else factory
2244 self.repr_serialize(params)
2245 return 'ast.ExpressionModuloAssignment({0:s})'.format(', '.join(params))
2248 class ExpressionMultiply(Expression):
2249 # GENERATE ELEMENT() BEGIN
2252 tag = 'ExpressionMultiply',
2257 Expression.__init__(
2264 def copy(self, factory = None):
2265 result = Expression.copy(
2267 ExpressionMultiply if factory is None else factory
2272 self.repr_serialize(params)
2273 return 'ast.ExpressionMultiply({0:s})'.format(', '.join(params))
2276 class ExpressionMultiplyAssignment(Expression):
2277 # GENERATE ELEMENT() BEGIN
2280 tag = 'ExpressionMultiplyAssignment',
2285 Expression.__init__(
2292 def copy(self, factory = None):
2293 result = Expression.copy(
2295 ExpressionMultiplyAssignment if factory is None else factory
2300 self.repr_serialize(params)
2301 return 'ast.ExpressionMultiplyAssignment({0:s})'.format(', '.join(params))
2304 class ExpressionNotEqual(Expression):
2305 # GENERATE ELEMENT() BEGIN
2308 tag = 'ExpressionNotEqual',
2313 Expression.__init__(
2320 def copy(self, factory = None):
2321 result = Expression.copy(
2323 ExpressionNotEqual if factory is None else factory
2328 self.repr_serialize(params)
2329 return 'ast.ExpressionNotEqual({0:s})'.format(', '.join(params))
2332 class ExpressionPlus(Expression):
2333 # GENERATE ELEMENT() BEGIN
2336 tag = 'ExpressionPlus',
2341 Expression.__init__(
2348 def copy(self, factory = None):
2349 result = Expression.copy(
2351 ExpressionPlus if factory is None else factory
2356 self.repr_serialize(params)
2357 return 'ast.ExpressionPlus({0:s})'.format(', '.join(params))
2359 def translate(self, context):
2360 assert len(self) == 1
2361 self[0].translate(context)
2362 element.set_text(self, 0, '+')
2363 element.set_text(self, 1, '')
2365 class ExpressionPostDecrement(Expression):
2366 # GENERATE ELEMENT() BEGIN
2369 tag = 'ExpressionPostDecrement',
2374 Expression.__init__(
2381 def copy(self, factory = None):
2382 result = Expression.copy(
2384 ExpressionPostDecrement if factory is None else factory
2389 self.repr_serialize(params)
2390 return 'ast.ExpressionPostDecrement({0:s})'.format(', '.join(params))
2392 def translate(self, context):
2393 assert len(self) == 1
2394 self[0].translate(context)
2395 element.set_text(self, 0, '')
2396 element.set_text(self, 1, ' -= 1')
2398 class ExpressionPostIncrement(Expression):
2399 # GENERATE ELEMENT() BEGIN
2402 tag = 'ExpressionPostIncrement',
2407 Expression.__init__(
2414 def copy(self, factory = None):
2415 result = Expression.copy(
2417 ExpressionPostIncrement if factory is None else factory
2422 self.repr_serialize(params)
2423 return 'ast.ExpressionPostIncrement({0:s})'.format(', '.join(params))
2425 def translate(self, context):
2426 assert len(self) == 1
2427 self[0].translate(context)
2428 element.set_text(self, 0, '')
2429 element.set_text(self, 1, ' += 1')
2431 class ExpressionPreDecrement(Expression):
2432 # GENERATE ELEMENT() BEGIN
2435 tag = 'ExpressionPreDecrement',
2440 Expression.__init__(
2447 def copy(self, factory = None):
2448 result = Expression.copy(
2450 ExpressionPreDecrement if factory is None else factory
2455 self.repr_serialize(params)
2456 return 'ast.ExpressionPreDecrement({0:s})'.format(', '.join(params))
2458 def translate(self, context):
2459 assert len(self) == 1
2460 self[0].translate(context)
2461 element.set_text(self, 0, '')
2462 element.set_text(self, 1, ' -= 1')
2464 class ExpressionPreIncrement(Expression):
2465 # GENERATE ELEMENT() BEGIN
2468 tag = 'ExpressionPreIncrement',
2473 Expression.__init__(
2480 def copy(self, factory = None):
2481 result = Expression.copy(
2483 ExpressionPreIncrement if factory is None else factory
2488 self.repr_serialize(params)
2489 return 'ast.ExpressionPreIncrement({0:s})'.format(', '.join(params))
2491 def translate(self, context):
2492 assert len(self) == 1
2493 self[0].translate(context)
2494 element.set_text(self, 0, '')
2495 element.set_text(self, 1, ' += 1')
2497 class ExpressionRightShiftAssignment(Expression):
2498 # GENERATE ELEMENT() BEGIN
2501 tag = 'ExpressionRightShiftAssignment',
2506 Expression.__init__(
2513 def copy(self, factory = None):
2514 result = Expression.copy(
2516 ExpressionRightShiftAssignment if factory is None else factory
2521 self.repr_serialize(params)
2522 return 'ast.ExpressionRightShiftAssignment({0:s})'.format(', '.join(params))
2525 class ExpressionShiftLeft(Expression):
2526 # GENERATE ELEMENT() BEGIN
2529 tag = 'ExpressionShiftLeft',
2534 Expression.__init__(
2541 def copy(self, factory = None):
2542 result = Expression.copy(
2544 ExpressionShiftLeft if factory is None else factory
2549 self.repr_serialize(params)
2550 return 'ast.ExpressionShiftLeft({0:s})'.format(', '.join(params))
2553 class ExpressionShiftRight(Expression):
2554 # GENERATE ELEMENT() BEGIN
2557 tag = 'ExpressionShiftRight',
2562 Expression.__init__(
2569 def copy(self, factory = None):
2570 result = Expression.copy(
2572 ExpressionShiftRight if factory is None else factory
2577 self.repr_serialize(params)
2578 return 'ast.ExpressionShiftRight({0:s})'.format(', '.join(params))
2581 class ExpressionSizeOfExpression(Expression):
2582 # GENERATE ELEMENT() BEGIN
2585 tag = 'ExpressionSizeOfExpression',
2590 Expression.__init__(
2597 def copy(self, factory = None):
2598 result = Expression.copy(
2600 ExpressionSizeOfExpression if factory is None else factory
2605 self.repr_serialize(params)
2606 return 'ast.ExpressionSizeOfExpression({0:s})'.format(', '.join(params))
2609 class ExpressionSizeOfType(Expression):
2610 # GENERATE ELEMENT() BEGIN
2613 tag = 'ExpressionSizeOfType',
2618 Expression.__init__(
2625 def copy(self, factory = None):
2626 result = Expression.copy(
2628 ExpressionSizeOfType if factory is None else factory
2633 self.repr_serialize(params)
2634 return 'ast.ExpressionSizeOfType({0:s})'.format(', '.join(params))
2637 class ExpressionStringLiteral(Expression):
2638 # GENERATE ELEMENT() BEGIN
2641 tag = 'ExpressionStringLiteral',
2646 Expression.__init__(
2653 def copy(self, factory = None):
2654 result = Expression.copy(
2656 ExpressionStringLiteral if factory is None else factory
2661 self.repr_serialize(params)
2662 return 'ast.ExpressionStringLiteral({0:s})'.format(', '.join(params))
2664 def translate(self, context):
2665 element.set_text(self, 0, '"')
2666 for i in range(1, len(self)):
2667 element.set_text(self, i, '')
2668 element.set_text(self, len(self), '"')
2670 class ExpressionSubtract(Expression):
2671 # GENERATE ELEMENT() BEGIN
2674 tag = 'ExpressionSubtract',
2679 Expression.__init__(
2686 def copy(self, factory = None):
2687 result = Expression.copy(
2689 ExpressionSubtract if factory is None else factory
2694 self.repr_serialize(params)
2695 return 'ast.ExpressionSubtract({0:s})'.format(', '.join(params))
2698 class ExpressionSubtractAssignment(Expression):
2699 # GENERATE ELEMENT() BEGIN
2702 tag = 'ExpressionSubtractAssignment',
2707 Expression.__init__(
2714 def copy(self, factory = None):
2715 result = Expression.copy(
2717 ExpressionSubtractAssignment if factory is None else factory
2722 self.repr_serialize(params)
2723 return 'ast.ExpressionSubtractAssignment({0:s})'.format(', '.join(params))
2726 class FunctionDefinition(Element):
2727 # GENERATE ELEMENT() BEGIN
2730 tag = 'FunctionDefinition',
2742 def copy(self, factory = None):
2743 result = Element.copy(
2745 FunctionDefinition if factory is None else factory
2750 self.repr_serialize(params)
2751 return 'ast.FunctionDefinition({0:s})'.format(', '.join(params))
2754 class FunctionSpecifier(Element):
2755 # GENERATE ELEMENT(int n) BEGIN
2758 tag = 'FunctionSpecifier',
2772 element.deserialize_int(n)
2773 if isinstance(n, str) else
2776 def serialize(self, ref_list):
2777 Element.serialize(self, ref_list)
2778 self.set('n', element.serialize_int(self.n))
2779 def deserialize(self, ref_list):
2780 Element.deserialize(self, ref_list)
2781 self.n = element.deserialize_int(self.get('n', '-1'))
2782 def copy(self, factory = None):
2783 result = Element.copy(
2785 FunctionSpecifier if factory is None else factory
2789 def repr_serialize(self, params):
2790 Element.repr_serialize(self, params)
2793 'n = {0:s}'.format(repr(self.n))
2797 self.repr_serialize(params)
2798 return 'ast.FunctionSpecifier({0:s})'.format(', '.join(params))
2801 class GenericAssociation(Element):
2802 # GENERATE ELEMENT() BEGIN
2805 tag = 'GenericAssociation',
2817 def copy(self, factory = None):
2818 result = Element.copy(
2820 GenericAssociation if factory is None else factory
2825 self.repr_serialize(params)
2826 return 'ast.GenericAssociation({0:s})'.format(', '.join(params))
2829 class GenericAssociationList(Element):
2830 # GENERATE ELEMENT() BEGIN
2833 tag = 'GenericAssociationList',
2845 def copy(self, factory = None):
2846 result = Element.copy(
2848 GenericAssociationList if factory is None else factory
2853 self.repr_serialize(params)
2854 return 'ast.GenericAssociationList({0:s})'.format(', '.join(params))
2857 class GenericSelection(Element):
2858 # GENERATE ELEMENT() BEGIN
2861 tag = 'GenericSelection',
2873 def copy(self, factory = None):
2874 result = Element.copy(
2876 GenericSelection if factory is None else factory
2881 self.repr_serialize(params)
2882 return 'ast.GenericSelection({0:s})'.format(', '.join(params))
2885 class IdentifierEmpty(Element):
2886 # GENERATE ELEMENT() BEGIN
2889 tag = 'IdentifierEmpty',
2901 def copy(self, factory = None):
2902 result = Element.copy(
2904 IdentifierEmpty if factory is None else factory
2909 self.repr_serialize(params)
2910 return 'ast.IdentifierEmpty({0:s})'.format(', '.join(params))
2913 class IdentifierList(Element):
2914 # GENERATE ELEMENT() BEGIN
2917 tag = 'IdentifierList',
2929 def copy(self, factory = None):
2930 result = Element.copy(
2932 IdentifierList if factory is None else factory
2937 self.repr_serialize(params)
2938 return 'ast.IdentifierList({0:s})'.format(', '.join(params))
2941 class InitDeclarator(Element):
2942 # GENERATE ELEMENT() BEGIN
2945 tag = 'InitDeclarator',
2957 def copy(self, factory = None):
2958 result = Element.copy(
2960 InitDeclarator if factory is None else factory
2965 self.repr_serialize(params)
2966 return 'ast.InitDeclarator({0:s})'.format(', '.join(params))
2969 class InitDeclaratorList(Element):
2970 # GENERATE ELEMENT() BEGIN
2973 tag = 'InitDeclaratorList',
2985 def copy(self, factory = None):
2986 result = Element.copy(
2988 InitDeclaratorList if factory is None else factory
2993 self.repr_serialize(params)
2994 return 'ast.InitDeclaratorList({0:s})'.format(', '.join(params))
2997 class ParameterDeclaration(Element):
2998 # GENERATE ELEMENT() BEGIN
3001 tag = 'ParameterDeclaration',
3013 def copy(self, factory = None):
3014 result = Element.copy(
3016 ParameterDeclaration if factory is None else factory
3021 self.repr_serialize(params)
3022 return 'ast.ParameterDeclaration({0:s})'.format(', '.join(params))
3025 class ParameterDeclarationList(Element):
3026 # GENERATE ELEMENT() BEGIN
3029 tag = 'ParameterDeclarationList',
3041 def copy(self, factory = None):
3042 result = Element.copy(
3044 ParameterDeclarationList if factory is None else factory
3049 self.repr_serialize(params)
3050 return 'ast.ParameterDeclarationList({0:s})'.format(', '.join(params))
3053 class SpecifierQualifierList(Element):
3054 # GENERATE ELEMENT() BEGIN
3057 tag = 'SpecifierQualifierList',
3069 def copy(self, factory = None):
3070 result = Element.copy(
3072 SpecifierQualifierList if factory is None else factory
3077 self.repr_serialize(params)
3078 return 'ast.SpecifierQualifierList({0:s})'.format(', '.join(params))
3081 class Statement(DeclarationOrStatement):
3082 # GENERATE ELEMENT() BEGIN
3090 DeclarationOrStatement.__init__(
3097 def copy(self, factory = None):
3098 result = DeclarationOrStatement.copy(
3100 Statement if factory is None else factory
3105 self.repr_serialize(params)
3106 return 'ast.Statement({0:s})'.format(', '.join(params))
3109 class StatementBlock(Statement):
3110 # GENERATE ELEMENT() BEGIN
3113 tag = 'StatementBlock',
3125 def copy(self, factory = None):
3126 result = Statement.copy(
3128 StatementBlock if factory is None else factory
3133 self.repr_serialize(params)
3134 return 'ast.StatementBlock({0:s})'.format(', '.join(params))
3136 def translate(self, context):
3137 assert len(self) == 1
3138 self[0].translate(context)
3139 element.set_text(self, 0, '')
3140 element.set_text(self, 1, '')
3142 class StatementBreak(Statement):
3143 # GENERATE ELEMENT() BEGIN
3146 tag = 'StatementBreak',
3158 def copy(self, factory = None):
3159 result = Statement.copy(
3161 StatementBreak if factory is None else factory
3166 self.repr_serialize(params)
3167 return 'ast.StatementBreak({0:s})'.format(', '.join(params))
3170 class StatementCase(Statement):
3171 # GENERATE ELEMENT() BEGIN
3174 tag = 'StatementCase',
3186 def copy(self, factory = None):
3187 result = Statement.copy(
3189 StatementCase if factory is None else factory
3194 self.repr_serialize(params)
3195 return 'ast.StatementCase({0:s})'.format(', '.join(params))
3198 class StatementContinue(Statement):
3199 # GENERATE ELEMENT() BEGIN
3202 tag = 'StatementContinue',
3214 def copy(self, factory = None):
3215 result = Statement.copy(
3217 StatementContinue if factory is None else factory
3222 self.repr_serialize(params)
3223 return 'ast.StatementContinue({0:s})'.format(', '.join(params))
3225 def translate(self, context):
3226 assert len(self) == 0
3227 if isinstance(enclosing_loop, StatementDoWhile):
3228 self.append(enclosing_loop[1].copy())
3229 indent_save = context.indent
3230 context.indent += ' '
3231 self[0].translate(context)
3232 context.indent = indent_save
3233 element.set_text(self, 0, '{0:s}if '.format(context.indent))
3237 ':\n{0:s} continue\n{1:s}break\n'.format(
3242 elif isinstance(enclosing_loop, StatementFor):
3243 self.append(enclosing_loop[2].copy())
3244 indent_save = context.indent
3245 context.indent += ' '
3246 self[0].translate(context)
3247 context.indent = indent_save
3248 element.set_text(self, 0, '')
3249 element.set_text(self, 1, '{0:s}continue\n'.format(context.indent))
3251 element.set_text(self, 0, '{0:s}continue\n'.format(context.indent))
3253 class StatementDefault(Statement):
3254 # GENERATE ELEMENT() BEGIN
3257 tag = 'StatementDefault',
3269 def copy(self, factory = None):
3270 result = Statement.copy(
3272 StatementDefault if factory is None else factory
3277 self.repr_serialize(params)
3278 return 'ast.StatementDefault({0:s})'.format(', '.join(params))
3281 class StatementDoWhile(Statement):
3282 # GENERATE ELEMENT() BEGIN
3285 tag = 'StatementDoWhile',
3297 def copy(self, factory = None):
3298 result = Statement.copy(
3300 StatementDoWhile if factory is None else factory
3305 self.repr_serialize(params)
3306 return 'ast.StatementDoWhile({0:s})'.format(', '.join(params))
3308 def translate(self, context):
3309 assert len(self) == 2
3310 indent_save = context.indent
3311 context.indent += ' '
3312 enclosing_loop_save = context.enclosing_loop
3313 context.enclosing_loop = self
3314 self[0].translate(context)
3315 context.enclosing_loop = enclosing_loop_save
3316 self[1].translate(context)
3317 context.indent = indent_save
3318 element.set_text(self, 0, '{0:s}while True:\n'.format(context.indent))
3319 element.set_text(self, 1, '{0:s} if not ('.format(context.indent))
3320 element.set_text(self, 2, '):\n{0:s} break\n'.format(context.indent))
3322 class StatementExpression(Statement):
3323 # GENERATE ELEMENT() BEGIN
3326 tag = 'StatementExpression',
3338 def copy(self, factory = None):
3339 result = Statement.copy(
3341 StatementExpression if factory is None else factory
3346 self.repr_serialize(params)
3347 return 'ast.StatementExpression({0:s})'.format(', '.join(params))
3350 class StatementFor(Statement):
3351 # GENERATE ELEMENT() BEGIN
3354 tag = 'StatementFor',
3366 def copy(self, factory = None):
3367 result = Statement.copy(
3369 StatementFor if factory is None else factory
3374 self.repr_serialize(params)
3375 return 'ast.StatementFor({0:s})'.format(', '.join(params))
3378 class StatementGoto(Statement):
3379 # GENERATE ELEMENT() BEGIN
3382 tag = 'StatementGoto',
3394 def copy(self, factory = None):
3395 result = Statement.copy(
3397 StatementGoto if factory is None else factory
3402 self.repr_serialize(params)
3403 return 'ast.StatementGoto({0:s})'.format(', '.join(params))
3406 class StatementIf(Statement):
3407 # GENERATE ELEMENT() BEGIN
3410 tag = 'StatementIf',
3422 def copy(self, factory = None):
3423 result = Statement.copy(
3425 StatementIf if factory is None else factory
3430 self.repr_serialize(params)
3431 return 'ast.StatementIf({0:s})'.format(', '.join(params))
3433 def translate(self, context):
3434 assert len(self) == 2
3435 indent_save = context.indent
3436 context.indent += ' '
3437 self[0].translate(context)
3438 self[1].translate(context)
3439 context.indent = indent_save
3440 element.set_text(self, 0, '{0:s}if '.format(context.indent))
3441 element.set_text(self, 1, ':\n')
3442 element.set_text(self, 2, '')
3444 class StatementIfElse(Statement):
3445 # GENERATE ELEMENT() BEGIN
3448 tag = 'StatementIfElse',
3460 def copy(self, factory = None):
3461 result = Statement.copy(
3463 StatementIfElse if factory is None else factory
3468 self.repr_serialize(params)
3469 return 'ast.StatementIfElse({0:s})'.format(', '.join(params))
3471 def translate(self, context):
3472 assert len(self) == 3
3473 indent_save = context.indent
3474 context.indent += ' '
3475 self[0].translate(context)
3476 self[1].translate(context)
3477 self[2].translate(context)
3478 context.indent = indent_save
3479 element.set_text(self, 0, '{0:s}if '.format(context.indent))
3480 element.set_text(self, 1, ':\n')
3481 element.set_text(self, 2, '{0:s}else:\n'.format(context.indent))
3482 element.set_text(self, 3, '')
3484 class StatementLabel(Statement):
3485 # GENERATE ELEMENT() BEGIN
3488 tag = 'StatementLabel',
3500 def copy(self, factory = None):
3501 result = Statement.copy(
3503 StatementLabel if factory is None else factory
3508 self.repr_serialize(params)
3509 return 'ast.StatementLabel({0:s})'.format(', '.join(params))
3512 class StatementReturn(Statement):
3513 # GENERATE ELEMENT() BEGIN
3516 tag = 'StatementReturn',
3528 def copy(self, factory = None):
3529 result = Statement.copy(
3531 StatementReturn if factory is None else factory
3536 self.repr_serialize(params)
3537 return 'ast.StatementReturn({0:s})'.format(', '.join(params))
3540 class StatementSwitch(Statement):
3541 # GENERATE ELEMENT() BEGIN
3544 tag = 'StatementSwitch',
3556 def copy(self, factory = None):
3557 result = Statement.copy(
3559 StatementSwitch if factory is None else factory
3564 self.repr_serialize(params)
3565 return 'ast.StatementSwitch({0:s})'.format(', '.join(params))
3568 class StatementWhile(Statement):
3569 # GENERATE ELEMENT() BEGIN
3572 tag = 'StatementWhile',
3584 def copy(self, factory = None):
3585 result = Statement.copy(
3587 StatementWhile if factory is None else factory
3592 self.repr_serialize(params)
3593 return 'ast.StatementWhile({0:s})'.format(', '.join(params))
3595 def translate(self, context):
3596 assert len(self) == 2
3597 indent_save = context.indent
3598 context.indent += ' '
3599 self[0].translate(context)
3600 enclosing_loop_save = context.enclosing_loop
3601 context.enclosing_loop = self
3602 self[1].translate(context)
3603 context.enclosing_loop = enclosing_loop_save
3604 context.indent = indent_save
3605 element.set_text(self, 0, '{0:s}while '.format(context.indent))
3606 element.set_text(self, 1, ':\n')
3607 element.set_text(self, 2, '')
3609 class StaticAssertDeclaration(Element):
3610 # GENERATE ELEMENT() BEGIN
3613 tag = 'StaticAssertDeclaration',
3625 def copy(self, factory = None):
3626 result = Element.copy(
3628 StaticAssertDeclaration if factory is None else factory
3633 self.repr_serialize(params)
3634 return 'ast.StaticAssertDeclaration({0:s})'.format(', '.join(params))
3637 class StorageClassSpecifier(Element):
3638 # GENERATE ELEMENT(int n) BEGIN
3641 tag = 'StorageClassSpecifier',
3655 element.deserialize_int(n)
3656 if isinstance(n, str) else
3659 def serialize(self, ref_list):
3660 Element.serialize(self, ref_list)
3661 self.set('n', element.serialize_int(self.n))
3662 def deserialize(self, ref_list):
3663 Element.deserialize(self, ref_list)
3664 self.n = element.deserialize_int(self.get('n', '-1'))
3665 def copy(self, factory = None):
3666 result = Element.copy(
3668 StorageClassSpecifier if factory is None else factory
3672 def repr_serialize(self, params):
3673 Element.repr_serialize(self, params)
3676 'n = {0:s}'.format(repr(self.n))
3680 self.repr_serialize(params)
3681 return 'ast.StorageClassSpecifier({0:s})'.format(', '.join(params))
3684 class StructDeclaration(Element):
3685 # GENERATE ELEMENT() BEGIN
3688 tag = 'StructDeclaration',
3700 def copy(self, factory = None):
3701 result = Element.copy(
3703 StructDeclaration if factory is None else factory
3708 self.repr_serialize(params)
3709 return 'ast.StructDeclaration({0:s})'.format(', '.join(params))
3712 class StructDeclarationList(Element):
3713 # GENERATE ELEMENT() BEGIN
3716 tag = 'StructDeclarationList',
3728 def copy(self, factory = None):
3729 result = Element.copy(
3731 StructDeclarationList if factory is None else factory
3736 self.repr_serialize(params)
3737 return 'ast.StructDeclarationList({0:s})'.format(', '.join(params))
3740 class StructDeclarator(Element):
3741 # GENERATE ELEMENT() BEGIN
3744 tag = 'StructDeclarator',
3756 def copy(self, factory = None):
3757 result = Element.copy(
3759 StructDeclarator if factory is None else factory
3764 self.repr_serialize(params)
3765 return 'ast.StructDeclarator({0:s})'.format(', '.join(params))
3768 class StructDeclaratorList(Element):
3769 # GENERATE ELEMENT() BEGIN
3772 tag = 'StructDeclaratorList',
3784 def copy(self, factory = None):
3785 result = Element.copy(
3787 StructDeclaratorList if factory is None else factory
3792 self.repr_serialize(params)
3793 return 'ast.StructDeclaratorList({0:s})'.format(', '.join(params))
3796 class StructSpecifier(Element):
3797 # GENERATE ELEMENT() BEGIN
3800 tag = 'StructSpecifier',
3812 def copy(self, factory = None):
3813 result = Element.copy(
3815 StructSpecifier if factory is None else factory
3820 self.repr_serialize(params)
3821 return 'ast.StructSpecifier({0:s})'.format(', '.join(params))
3824 class TypeName(Element):
3825 # GENERATE ELEMENT() BEGIN
3840 def copy(self, factory = None):
3841 result = Element.copy(
3843 TypeName if factory is None else factory
3848 self.repr_serialize(params)
3849 return 'ast.TypeName({0:s})'.format(', '.join(params))
3852 class TypeQualifier(Element):
3853 # GENERATE ELEMENT(int n) BEGIN
3856 tag = 'TypeQualifier',
3870 element.deserialize_int(n)
3871 if isinstance(n, str) else
3874 def serialize(self, ref_list):
3875 Element.serialize(self, ref_list)
3876 self.set('n', element.serialize_int(self.n))
3877 def deserialize(self, ref_list):
3878 Element.deserialize(self, ref_list)
3879 self.n = element.deserialize_int(self.get('n', '-1'))
3880 def copy(self, factory = None):
3881 result = Element.copy(
3883 TypeQualifier if factory is None else factory
3887 def repr_serialize(self, params):
3888 Element.repr_serialize(self, params)
3891 'n = {0:s}'.format(repr(self.n))
3895 self.repr_serialize(params)
3896 return 'ast.TypeQualifier({0:s})'.format(', '.join(params))
3899 class TypeQualifierList(Element):
3900 # GENERATE ELEMENT() BEGIN
3903 tag = 'TypeQualifierList',
3915 def copy(self, factory = None):
3916 result = Element.copy(
3918 TypeQualifierList if factory is None else factory
3923 self.repr_serialize(params)
3924 return 'ast.TypeQualifierList({0:s})'.format(', '.join(params))
3927 class TypeQualifierOrStaticList(Element):
3928 # GENERATE ELEMENT() BEGIN
3931 tag = 'TypeQualifierOrStaticList',
3943 def copy(self, factory = None):
3944 result = Element.copy(
3946 TypeQualifierOrStaticList if factory is None else factory
3951 self.repr_serialize(params)
3952 return 'ast.TypeQualifierOrStaticList({0:s})'.format(', '.join(params))
3955 class TypeSpecifier(Element):
3956 # GENERATE ELEMENT(int n) BEGIN
3959 tag = 'TypeSpecifier',
3973 element.deserialize_int(n)
3974 if isinstance(n, str) else
3977 def serialize(self, ref_list):
3978 Element.serialize(self, ref_list)
3979 self.set('n', element.serialize_int(self.n))
3980 def deserialize(self, ref_list):
3981 Element.deserialize(self, ref_list)
3982 self.n = element.deserialize_int(self.get('n', '-1'))
3983 def copy(self, factory = None):
3984 result = Element.copy(
3986 TypeSpecifier if factory is None else factory
3990 def repr_serialize(self, params):
3991 Element.repr_serialize(self, params)
3994 'n = {0:s}'.format(repr(self.n))
3998 self.repr_serialize(params)
3999 return 'ast.TypeSpecifier({0:s})'.format(', '.join(params))
4002 class UnionSpecifier(Element):
4003 # GENERATE ELEMENT() BEGIN
4006 tag = 'UnionSpecifier',
4018 def copy(self, factory = None):
4019 result = Element.copy(
4021 UnionSpecifier if factory is None else factory
4026 self.repr_serialize(params)
4027 return 'ast.UnionSpecifier({0:s})'.format(', '.join(params))
4030 # GENERATE FACTORY(element.Element) BEGIN
4033 'DeclarationOrStatement': DeclarationOrStatement,
4034 'AlignAsExpression': AlignAsExpression,
4035 'AlignAsType': AlignAsType,
4036 'ArgumentExpressionList': ArgumentExpressionList,
4037 'BlockItemList': BlockItemList,
4038 'CommaEllipsis': CommaEllipsis,
4039 'CommaEllipsisEmpty': CommaEllipsisEmpty,
4040 'Declaration': Declaration,
4041 'DeclarationList': DeclarationList,
4042 'DeclarationSpecifierList': DeclarationSpecifierList,
4043 'Declarator': Declarator,
4044 'DeclaratorAbstract': DeclaratorAbstract,
4045 'DeclaratorArray': DeclaratorArray,
4046 'DeclaratorEmpty': DeclaratorEmpty,
4047 'DeclaratorFunction': DeclaratorFunction,
4048 'DeclaratorFunctionOldStyle': DeclaratorFunctionOldStyle,
4049 'DeclaratorIdentifier': DeclaratorIdentifier,
4050 'DeclaratorPointer': DeclaratorPointer,
4051 'DefaultTypeName': DefaultTypeName,
4052 'DesignatorField': DesignatorField,
4053 'DesignatorIndex': DesignatorIndex,
4054 'DesignatorInitializer': DesignatorInitializer,
4055 'DesignatorInitializerList': DesignatorInitializerList,
4056 'DesignatorList': DesignatorList,
4057 'EnumSpecifier': EnumSpecifier,
4058 'Enumerator': Enumerator,
4059 'EnumeratorList': EnumeratorList,
4060 'EqualsInitializerEmpty': EqualsInitializerEmpty,
4061 'Expression': Expression,
4062 'ExpressionAdd': ExpressionAdd,
4063 'ExpressionAddAssignment': ExpressionAddAssignment,
4064 'ExpressionAddressOf': ExpressionAddressOf,
4065 'ExpressionAlignOfType': ExpressionAlignOfType,
4066 'ExpressionArray': ExpressionArray,
4067 'ExpressionAssignment': ExpressionAssignment,
4068 'ExpressionAsterisk': ExpressionAsterisk,
4069 'ExpressionBitwiseAnd': ExpressionBitwiseAnd,
4070 'ExpressionBitwiseAndAssignment': ExpressionBitwiseAndAssignment,
4071 'ExpressionBitwiseNot': ExpressionBitwiseNot,
4072 'ExpressionBitwiseOr': ExpressionBitwiseOr,
4073 'ExpressionBitwiseOrAssignment': ExpressionBitwiseOrAssignment,
4074 'ExpressionCall': ExpressionCall,
4075 'ExpressionCast': ExpressionCast,
4076 'ExpressionCharConstant': ExpressionCharConstant,
4077 'ExpressionComma': ExpressionComma,
4078 'ExpressionConditional': ExpressionConditional,
4079 'ExpressionDereference': ExpressionDereference,
4080 'ExpressionDivide': ExpressionDivide,
4081 'ExpressionDivideAssignment': ExpressionDivideAssignment,
4082 'ExpressionEmpty': ExpressionEmpty,
4083 'ExpressionEqual': ExpressionEqual,
4084 'ExpressionExclusiveOr': ExpressionExclusiveOr,
4085 'ExpressionExclusiveOrAssignment': ExpressionExclusiveOrAssignment,
4086 'ExpressionField': ExpressionField,
4087 'ExpressionFieldDereference': ExpressionFieldDereference,
4088 'ExpressionFloatLiteral': ExpressionFloatLiteral,
4089 'ExpressionFunctionName': ExpressionFunctionName,
4090 'ExpressionGreaterThan': ExpressionGreaterThan,
4091 'ExpressionGreaterThanOrEqual': ExpressionGreaterThanOrEqual,
4092 'ExpressionIdentifier': ExpressionIdentifier,
4093 'ExpressionIndex': ExpressionIndex,
4094 'ExpressionIntLiteral': ExpressionIntLiteral,
4095 'Identifier': Identifier,
4096 'ExpressionLeftShiftAssignment': ExpressionLeftShiftAssignment,
4097 'ExpressionLessThan': ExpressionLessThan,
4098 'ExpressionLessThanOrEqual': ExpressionLessThanOrEqual,
4099 'ExpressionLogicalAnd': ExpressionLogicalAnd,
4100 'ExpressionLogicalNot': ExpressionLogicalNot,
4101 'ExpressionLogicalOr': ExpressionLogicalOr,
4102 'ExpressionMinus': ExpressionMinus,
4103 'ExpressionModulo': ExpressionModulo,
4104 'ExpressionModuloAssignment': ExpressionModuloAssignment,
4105 'ExpressionMultiply': ExpressionMultiply,
4106 'ExpressionMultiplyAssignment': ExpressionMultiplyAssignment,
4107 'ExpressionNotEqual': ExpressionNotEqual,
4108 'ExpressionPlus': ExpressionPlus,
4109 'ExpressionPostDecrement': ExpressionPostDecrement,
4110 'ExpressionPostIncrement': ExpressionPostIncrement,
4111 'ExpressionPreDecrement': ExpressionPreDecrement,
4112 'ExpressionPreIncrement': ExpressionPreIncrement,
4113 'ExpressionRightShiftAssignment': ExpressionRightShiftAssignment,
4114 'ExpressionShiftLeft': ExpressionShiftLeft,
4115 'ExpressionShiftRight': ExpressionShiftRight,
4116 'ExpressionSizeOfExpression': ExpressionSizeOfExpression,
4117 'ExpressionSizeOfType': ExpressionSizeOfType,
4118 'ExpressionStringLiteral': ExpressionStringLiteral,
4119 'ExpressionSubtract': ExpressionSubtract,
4120 'ExpressionSubtractAssignment': ExpressionSubtractAssignment,
4121 'FunctionDefinition': FunctionDefinition,
4122 'FunctionSpecifier': FunctionSpecifier,
4123 'GenericAssociation': GenericAssociation,
4124 'GenericAssociationList': GenericAssociationList,
4125 'GenericSelection': GenericSelection,
4126 'IdentifierEmpty': IdentifierEmpty,
4127 'IdentifierList': IdentifierList,
4128 'InitDeclarator': InitDeclarator,
4129 'InitDeclaratorList': InitDeclaratorList,
4130 'ParameterDeclaration': ParameterDeclaration,
4131 'ParameterDeclarationList': ParameterDeclarationList,
4132 'SpecifierQualifierList': SpecifierQualifierList,
4133 'Statement': Statement,
4134 'StatementBlock': StatementBlock,
4135 'StatementBreak': StatementBreak,
4136 'StatementCase': StatementCase,
4137 'StatementContinue': StatementContinue,
4138 'StatementDefault': StatementDefault,
4139 'StatementDoWhile': StatementDoWhile,
4140 'StatementExpression': StatementExpression,
4141 'StatementFor': StatementFor,
4142 'StatementGoto': StatementGoto,
4143 'StatementIf': StatementIf,
4144 'StatementIfElse': StatementIfElse,
4145 'StatementLabel': StatementLabel,
4146 'StatementReturn': StatementReturn,
4147 'StatementSwitch': StatementSwitch,
4148 'StatementWhile': StatementWhile,
4149 'StaticAssertDeclaration': StaticAssertDeclaration,
4150 'StorageClassSpecifier': StorageClassSpecifier,
4151 'StructDeclaration': StructDeclaration,
4152 'StructDeclarationList': StructDeclarationList,
4153 'StructDeclarator': StructDeclarator,
4154 'StructDeclaratorList': StructDeclaratorList,
4155 'StructSpecifier': StructSpecifier,
4156 'TypeName': TypeName,
4157 'TypeQualifier': TypeQualifier,
4158 'TypeQualifierList': TypeQualifierList,
4159 'TypeQualifierOrStaticList': TypeQualifierOrStaticList,
4160 'TypeSpecifier': TypeSpecifier,
4161 'UnionSpecifier': UnionSpecifier
4163 def factory(tag, attrib = {}, *args, **kwargs):
4164 return tag_to_class.get(tag, element.Element)(tag, attrib, *args, **kwargs)