diff --git a/lslopt/lsloptimizer.py b/lslopt/lsloptimizer.py index 674f16e..60c83c8 100644 --- a/lslopt/lsloptimizer.py +++ b/lslopt/lsloptimizer.py @@ -609,7 +609,7 @@ class optimizer(renamer): self.FoldTree(tree, idx) if 'shrinknames' in options: - self.AssignNewNames() + self.ShrinkNames() treesymtab = (self.tree, self.symtab) del self.tree diff --git a/lslopt/lslrenamer.py b/lslopt/lslrenamer.py index 00a8579..a2f326c 100644 --- a/lslopt/lslrenamer.py +++ b/lslopt/lslrenamer.py @@ -2,30 +2,40 @@ import random from base64 import b64encode class renamer(object): - CharSet1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_' - CharSet2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789' + CharSet1 = '_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' + CharSet2 = '0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' # TODO: Derive these from builtins.txt somehow. KwByLen = ((), (), ('do', 'if', 'PI'), ('for', 'key', 'EOF'), ('jump', 'else', 'list', 'TRUE', 'LOOP')) def GetNextShortest(self): """Generate the next shortest possible identifier""" while True: - n = self.WordCntr - self.WordCntr += 1 - ret = self.CharSet1[n % 53] - n //= 53 - while n > 1: - ret += self.CharSet2[n % 63] - n //= 63 + ret = self.CharSet1[self.WordFirstChar] + for idx in self.WordRestOfChars: + ret += self.CharSet2[idx] + self.WordFirstChar += 1 + if self.WordFirstChar >= len(self.CharSet1): + self.WordFirstChar = 0 + for idx in xrange(len(self.WordRestOfChars)): + if self.WordRestOfChars[idx] < len(self.CharSet2)-1: + self.WordRestOfChars[idx] += 1 + break + self.WordRestOfChars[idx] = 0 + else: + self.WordRestOfChars.append(0) + if ret not in self.KwByLen[len(ret)] and ret not in self.UsedNames: return ret - def AssignNewNames(self): - self.WordCntr = 53 # Initialize to length 1 + def ShrinkNames(self): + """Implements the shrinknames option.""" + self.WordFirstChar = 0 + self.WordRestOfChars = [] # Names that can be reused without penalty. The initial set is there - # since the beginning. Others (e.g. Key) are created when some kinds - # of stuff are present, but we don't take so many risks. + # since the beginning. Others (e.g. Key) are created when certain + # stuff is present (e.g. Key when there are keys), but we don't take + # too many risks. ReusableNames = set(['LslLibrary', 'LslUserScript', 'System']) # Names from ReusableNames that have already been used @@ -49,7 +59,7 @@ class renamer(object): elif kind == 'v': globalvars.append(name) else: - assert False, 'Invalid kind at this scope: ' + kind + assert False, 'Invalid kind at this scope: ' + kind # pragma: no cover # We make three passes, one for states, then functions, then globals, # in that order. @@ -111,11 +121,12 @@ class renamer(object): if name == -1: continue if sym['Kind'] != 'v': assert sym['Kind'] == 'l' + name = name # trick the optimizer continue if 'Param' in sym: # Same procedure as for global vars # Not the best strategy (using locally unique names would - # work optimally) but hey. At the time of writing there's + # do a better job) but hey. At the time of writing there's # no reference analysis. TODO: Implement. if ReusableNames: short = ReusableNames.pop() diff --git a/testparser.py b/testparser.py index c4cceda..6784727 100644 --- a/testparser.py +++ b/testparser.py @@ -288,6 +288,7 @@ class Test03_Optimizer(UnitTestCase): self.opt.optimize(p) self.opt.optimize(p, ()) print self.outscript.output(p) + p = self.parser.parse('''string s = llUnescapeURL("%09");default{timer(){float f=llSqrt(-1); integer i;-(-(0.0+i));!!(!~~(!(i)));[]+i;}}''', ['extendedtypecast','extendedassignment', @@ -295,6 +296,736 @@ class Test03_Optimizer(UnitTestCase): ) self.opt.optimize(p, ['optimize','foldtabs']) print self.outscript.output(p) + + p = self.parser.parse( + '''integer i1; integer i2; integer i3; integer i4; integer i5; + string s1; string s2; string s3; string s4; string s5; + f1(){jump x; @x;} f2(){integer i3; i4=0; s3=""; f1(); state another;} + default { timer() { state another; } } + state another { timer() { state default; } touch(integer num_det) {} } + ''', + ['optimize', 'shrinknames'] + ) + self.opt.optimize(p, ['optimize','shrinknames']) + + print self.outscript.output(p) + p = self.parser.parse( + '''integer i1; integer i2; integer i3; integer i4; integer i5; + string a1; string a2; string a3; string a4; string a5; + string b1; string b2; string b3; string b4; string b5; + string c1; string c2; string c3; string c4; string c5; + string d1; string d2; string d3; string d4; string d5; + string e1; string e2; string e3; string e4; string e5; + string f1; string f2; string f3; string f4; string f5; + string g1; string g2; string g3; string g4; string g5; + string h1; string h2; string h3; string h4; string h5; + string j1; string j2; string j3; string j4; string j5; + string k1; string k2; string k3; string k4; string k5; + string l1; string l2; string l3; string l4; string l5; + string m1; string m2; string m3; string m4; string m5; + string n1; string n2; string n3; string n4; string n5; + string o1; string o2; string o3; string o4; string o5; + string p1; string p2; string p3; string p4; string p5; + string s1; string s2; string s3; string s4; string s5; + key k0000; key k0001; key k0002; key k0003; key k0004; + key k0005; key k0006; key k0007; key k0008; key k0009; + key k0010; key k0011; key k0012; key k0013; key k0014; + key k0015; key k0016; key k0017; key k0018; key k0019; + key k0020; key k0021; key k0022; key k0023; key k0024; + key k0025; key k0026; key k0027; key k0028; key k0029; + key k0030; key k0031; key k0032; key k0033; key k0034; + key k0035; key k0036; key k0037; key k0038; key k0039; + key k0040; key k0041; key k0042; key k0043; key k0044; + key k0045; key k0046; key k0047; key k0048; key k0049; + key k0050; key k0051; key k0052; key k0053; key k0054; + key k0055; key k0056; key k0057; key k0058; key k0059; + key k0060; key k0061; key k0062; key k0063; key k0064; + key k0065; key k0066; key k0067; key k0068; key k0069; + key k0070; key k0071; key k0072; key k0073; key k0074; + key k0075; key k0076; key k0077; key k0078; key k0079; + key k0080; key k0081; key k0082; key k0083; key k0084; + key k0085; key k0086; key k0087; key k0088; key k0089; + key k0090; key k0091; key k0092; key k0093; key k0094; + key k0095; key k0096; key k0097; key k0098; key k0099; + key k0100; key k0101; key k0102; key k0103; key k0104; + key k0105; key k0106; key k0107; key k0108; key k0109; + key k0110; key k0111; key k0112; key k0113; key k0114; + key k0115; key k0116; key k0117; key k0118; key k0119; + key k0120; key k0121; key k0122; key k0123; key k0124; + key k0125; key k0126; key k0127; key k0128; key k0129; + key k0130; key k0131; key k0132; key k0133; key k0134; + key k0135; key k0136; key k0137; key k0138; key k0139; + key k0140; key k0141; key k0142; key k0143; key k0144; + key k0145; key k0146; key k0147; key k0148; key k0149; + key k0150; key k0151; key k0152; key k0153; key k0154; + key k0155; key k0156; key k0157; key k0158; key k0159; + key k0160; key k0161; key k0162; key k0163; key k0164; + key k0165; key k0166; key k0167; key k0168; key k0169; + key k0170; key k0171; key k0172; key k0173; key k0174; + key k0175; key k0176; key k0177; key k0178; key k0179; + key k0180; key k0181; key k0182; key k0183; key k0184; + key k0185; key k0186; key k0187; key k0188; key k0189; + key k0190; key k0191; key k0192; key k0193; key k0194; + key k0195; key k0196; key k0197; key k0198; key k0199; + key k0200; key k0201; key k0202; key k0203; key k0204; + key k0205; key k0206; key k0207; key k0208; key k0209; + key k0210; key k0211; key k0212; key k0213; key k0214; + key k0215; key k0216; key k0217; key k0218; key k0219; + key k0220; key k0221; key k0222; key k0223; key k0224; + key k0225; key k0226; key k0227; key k0228; key k0229; + key k0230; key k0231; key k0232; key k0233; key k0234; + key k0235; key k0236; key k0237; key k0238; key k0239; + key k0240; key k0241; key k0242; key k0243; key k0244; + key k0245; key k0246; key k0247; key k0248; key k0249; + key k0250; key k0251; key k0252; key k0253; key k0254; + key k0255; key k0256; key k0257; key k0258; key k0259; + key k0260; key k0261; key k0262; key k0263; key k0264; + key k0265; key k0266; key k0267; key k0268; key k0269; + key k0270; key k0271; key k0272; key k0273; key k0274; + key k0275; key k0276; key k0277; key k0278; key k0279; + key k0280; key k0281; key k0282; key k0283; key k0284; + key k0285; key k0286; key k0287; key k0288; key k0289; + key k0290; key k0291; key k0292; key k0293; key k0294; + key k0295; key k0296; key k0297; key k0298; key k0299; + key k0300; key k0301; key k0302; key k0303; key k0304; + key k0305; key k0306; key k0307; key k0308; key k0309; + key k0310; key k0311; key k0312; key k0313; key k0314; + key k0315; key k0316; key k0317; key k0318; key k0319; + key k0320; key k0321; key k0322; key k0323; key k0324; + key k0325; key k0326; key k0327; key k0328; key k0329; + key k0330; key k0331; key k0332; key k0333; key k0334; + key k0335; key k0336; key k0337; key k0338; key k0339; + key k0340; key k0341; key k0342; key k0343; key k0344; + key k0345; key k0346; key k0347; key k0348; key k0349; + key k0350; key k0351; key k0352; key k0353; key k0354; + key k0355; key k0356; key k0357; key k0358; key k0359; + key k0360; key k0361; key k0362; key k0363; key k0364; + key k0365; key k0366; key k0367; key k0368; key k0369; + key k0370; key k0371; key k0372; key k0373; key k0374; + key k0375; key k0376; key k0377; key k0378; key k0379; + key k0380; key k0381; key k0382; key k0383; key k0384; + key k0385; key k0386; key k0387; key k0388; key k0389; + key k0390; key k0391; key k0392; key k0393; key k0394; + key k0395; key k0396; key k0397; key k0398; key k0399; + key k0400; key k0401; key k0402; key k0403; key k0404; + key k0405; key k0406; key k0407; key k0408; key k0409; + key k0410; key k0411; key k0412; key k0413; key k0414; + key k0415; key k0416; key k0417; key k0418; key k0419; + key k0420; key k0421; key k0422; key k0423; key k0424; + key k0425; key k0426; key k0427; key k0428; key k0429; + key k0430; key k0431; key k0432; key k0433; key k0434; + key k0435; key k0436; key k0437; key k0438; key k0439; + key k0440; key k0441; key k0442; key k0443; key k0444; + key k0445; key k0446; key k0447; key k0448; key k0449; + key k0450; key k0451; key k0452; key k0453; key k0454; + key k0455; key k0456; key k0457; key k0458; key k0459; + key k0460; key k0461; key k0462; key k0463; key k0464; + key k0465; key k0466; key k0467; key k0468; key k0469; + key k0470; key k0471; key k0472; key k0473; key k0474; + key k0475; key k0476; key k0477; key k0478; key k0479; + key k0480; key k0481; key k0482; key k0483; key k0484; + key k0485; key k0486; key k0487; key k0488; key k0489; + key k0490; key k0491; key k0492; key k0493; key k0494; + key k0495; key k0496; key k0497; key k0498; key k0499; + key k0500; key k0501; key k0502; key k0503; key k0504; + key k0505; key k0506; key k0507; key k0508; key k0509; + key k0510; key k0511; key k0512; key k0513; key k0514; + key k0515; key k0516; key k0517; key k0518; key k0519; + key k0520; key k0521; key k0522; key k0523; key k0524; + key k0525; key k0526; key k0527; key k0528; key k0529; + key k0530; key k0531; key k0532; key k0533; key k0534; + key k0535; key k0536; key k0537; key k0538; key k0539; + key k0540; key k0541; key k0542; key k0543; key k0544; + key k0545; key k0546; key k0547; key k0548; key k0549; + key k0550; key k0551; key k0552; key k0553; key k0554; + key k0555; key k0556; key k0557; key k0558; key k0559; + key k0560; key k0561; key k0562; key k0563; key k0564; + key k0565; key k0566; key k0567; key k0568; key k0569; + key k0570; key k0571; key k0572; key k0573; key k0574; + key k0575; key k0576; key k0577; key k0578; key k0579; + key k0580; key k0581; key k0582; key k0583; key k0584; + key k0585; key k0586; key k0587; key k0588; key k0589; + key k0590; key k0591; key k0592; key k0593; key k0594; + key k0595; key k0596; key k0597; key k0598; key k0599; + key k0600; key k0601; key k0602; key k0603; key k0604; + key k0605; key k0606; key k0607; key k0608; key k0609; + key k0610; key k0611; key k0612; key k0613; key k0614; + key k0615; key k0616; key k0617; key k0618; key k0619; + key k0620; key k0621; key k0622; key k0623; key k0624; + key k0625; key k0626; key k0627; key k0628; key k0629; + key k0630; key k0631; key k0632; key k0633; key k0634; + key k0635; key k0636; key k0637; key k0638; key k0639; + key k0640; key k0641; key k0642; key k0643; key k0644; + key k0645; key k0646; key k0647; key k0648; key k0649; + key k0650; key k0651; key k0652; key k0653; key k0654; + key k0655; key k0656; key k0657; key k0658; key k0659; + key k0660; key k0661; key k0662; key k0663; key k0664; + key k0665; key k0666; key k0667; key k0668; key k0669; + key k0670; key k0671; key k0672; key k0673; key k0674; + key k0675; key k0676; key k0677; key k0678; key k0679; + key k0680; key k0681; key k0682; key k0683; key k0684; + key k0685; key k0686; key k0687; key k0688; key k0689; + key k0690; key k0691; key k0692; key k0693; key k0694; + key k0695; key k0696; key k0697; key k0698; key k0699; + key k0700; key k0701; key k0702; key k0703; key k0704; + key k0705; key k0706; key k0707; key k0708; key k0709; + key k0710; key k0711; key k0712; key k0713; key k0714; + key k0715; key k0716; key k0717; key k0718; key k0719; + key k0720; key k0721; key k0722; key k0723; key k0724; + key k0725; key k0726; key k0727; key k0728; key k0729; + key k0730; key k0731; key k0732; key k0733; key k0734; + key k0735; key k0736; key k0737; key k0738; key k0739; + key k0740; key k0741; key k0742; key k0743; key k0744; + key k0745; key k0746; key k0747; key k0748; key k0749; + key k0750; key k0751; key k0752; key k0753; key k0754; + key k0755; key k0756; key k0757; key k0758; key k0759; + key k0760; key k0761; key k0762; key k0763; key k0764; + key k0765; key k0766; key k0767; key k0768; key k0769; + key k0770; key k0771; key k0772; key k0773; key k0774; + key k0775; key k0776; key k0777; key k0778; key k0779; + key k0780; key k0781; key k0782; key k0783; key k0784; + key k0785; key k0786; key k0787; key k0788; key k0789; + key k0790; key k0791; key k0792; key k0793; key k0794; + key k0795; key k0796; key k0797; key k0798; key k0799; + key k0800; key k0801; key k0802; key k0803; key k0804; + key k0805; key k0806; key k0807; key k0808; key k0809; + key k0810; key k0811; key k0812; key k0813; key k0814; + key k0815; key k0816; key k0817; key k0818; key k0819; + key k0820; key k0821; key k0822; key k0823; key k0824; + key k0825; key k0826; key k0827; key k0828; key k0829; + key k0830; key k0831; key k0832; key k0833; key k0834; + key k0835; key k0836; key k0837; key k0838; key k0839; + key k0840; key k0841; key k0842; key k0843; key k0844; + key k0845; key k0846; key k0847; key k0848; key k0849; + key k0850; key k0851; key k0852; key k0853; key k0854; + key k0855; key k0856; key k0857; key k0858; key k0859; + key k0860; key k0861; key k0862; key k0863; key k0864; + key k0865; key k0866; key k0867; key k0868; key k0869; + key k0870; key k0871; key k0872; key k0873; key k0874; + key k0875; key k0876; key k0877; key k0878; key k0879; + key k0880; key k0881; key k0882; key k0883; key k0884; + key k0885; key k0886; key k0887; key k0888; key k0889; + key k0890; key k0891; key k0892; key k0893; key k0894; + key k0895; key k0896; key k0897; key k0898; key k0899; + key k0900; key k0901; key k0902; key k0903; key k0904; + key k0905; key k0906; key k0907; key k0908; key k0909; + key k0910; key k0911; key k0912; key k0913; key k0914; + key k0915; key k0916; key k0917; key k0918; key k0919; + key k0920; key k0921; key k0922; key k0923; key k0924; + key k0925; key k0926; key k0927; key k0928; key k0929; + key k0930; key k0931; key k0932; key k0933; key k0934; + key k0935; key k0936; key k0937; key k0938; key k0939; + key k0940; key k0941; key k0942; key k0943; key k0944; + key k0945; key k0946; key k0947; key k0948; key k0949; + key k0950; key k0951; key k0952; key k0953; key k0954; + key k0955; key k0956; key k0957; key k0958; key k0959; + key k0960; key k0961; key k0962; key k0963; key k0964; + key k0965; key k0966; key k0967; key k0968; key k0969; + key k0970; key k0971; key k0972; key k0973; key k0974; + key k0975; key k0976; key k0977; key k0978; key k0979; + key k0980; key k0981; key k0982; key k0983; key k0984; + key k0985; key k0986; key k0987; key k0988; key k0989; + key k0990; key k0991; key k0992; key k0993; key k0994; + key k0995; key k0996; key k0997; key k0998; key k0999; + key k1000; key k1001; key k1002; key k1003; key k1004; + key k1005; key k1006; key k1007; key k1008; key k1009; + key k1010; key k1011; key k1012; key k1013; key k1014; + key k1015; key k1016; key k1017; key k1018; key k1019; + key k1020; key k1021; key k1022; key k1023; key k1024; + key k1025; key k1026; key k1027; key k1028; key k1029; + key k1030; key k1031; key k1032; key k1033; key k1034; + key k1035; key k1036; key k1037; key k1038; key k1039; + key k1040; key k1041; key k1042; key k1043; key k1044; + key k1045; key k1046; key k1047; key k1048; key k1049; + key k1050; key k1051; key k1052; key k1053; key k1054; + key k1055; key k1056; key k1057; key k1058; key k1059; + key k1060; key k1061; key k1062; key k1063; key k1064; + key k1065; key k1066; key k1067; key k1068; key k1069; + key k1070; key k1071; key k1072; key k1073; key k1074; + key k1075; key k1076; key k1077; key k1078; key k1079; + key k1080; key k1081; key k1082; key k1083; key k1084; + key k1085; key k1086; key k1087; key k1088; key k1089; + key k1090; key k1091; key k1092; key k1093; key k1094; + key k1095; key k1096; key k1097; key k1098; key k1099; + key k1100; key k1101; key k1102; key k1103; key k1104; + key k1105; key k1106; key k1107; key k1108; key k1109; + key k1110; key k1111; key k1112; key k1113; key k1114; + key k1115; key k1116; key k1117; key k1118; key k1119; + key k1120; key k1121; key k1122; key k1123; key k1124; + key k1125; key k1126; key k1127; key k1128; key k1129; + key k1130; key k1131; key k1132; key k1133; key k1134; + key k1135; key k1136; key k1137; key k1138; key k1139; + key k1140; key k1141; key k1142; key k1143; key k1144; + key k1145; key k1146; key k1147; key k1148; key k1149; + key k1150; key k1151; key k1152; key k1153; key k1154; + key k1155; key k1156; key k1157; key k1158; key k1159; + key k1160; key k1161; key k1162; key k1163; key k1164; + key k1165; key k1166; key k1167; key k1168; key k1169; + key k1170; key k1171; key k1172; key k1173; key k1174; + key k1175; key k1176; key k1177; key k1178; key k1179; + key k1180; key k1181; key k1182; key k1183; key k1184; + key k1185; key k1186; key k1187; key k1188; key k1189; + key k1190; key k1191; key k1192; key k1193; key k1194; + key k1195; key k1196; key k1197; key k1198; key k1199; + key k1200; key k1201; key k1202; key k1203; key k1204; + key k1205; key k1206; key k1207; key k1208; key k1209; + key k1210; key k1211; key k1212; key k1213; key k1214; + key k1215; key k1216; key k1217; key k1218; key k1219; + key k1220; key k1221; key k1222; key k1223; key k1224; + key k1225; key k1226; key k1227; key k1228; key k1229; + key k1230; key k1231; key k1232; key k1233; key k1234; + key k1235; key k1236; key k1237; key k1238; key k1239; + key k1240; key k1241; key k1242; key k1243; key k1244; + key k1245; key k1246; key k1247; key k1248; key k1249; + key k1250; key k1251; key k1252; key k1253; key k1254; + key k1255; key k1256; key k1257; key k1258; key k1259; + key k1260; key k1261; key k1262; key k1263; key k1264; + key k1265; key k1266; key k1267; key k1268; key k1269; + key k1270; key k1271; key k1272; key k1273; key k1274; + key k1275; key k1276; key k1277; key k1278; key k1279; + key k1280; key k1281; key k1282; key k1283; key k1284; + key k1285; key k1286; key k1287; key k1288; key k1289; + key k1290; key k1291; key k1292; key k1293; key k1294; + key k1295; key k1296; key k1297; key k1298; key k1299; + key k1300; key k1301; key k1302; key k1303; key k1304; + key k1305; key k1306; key k1307; key k1308; key k1309; + key k1310; key k1311; key k1312; key k1313; key k1314; + key k1315; key k1316; key k1317; key k1318; key k1319; + key k1320; key k1321; key k1322; key k1323; key k1324; + key k1325; key k1326; key k1327; key k1328; key k1329; + key k1330; key k1331; key k1332; key k1333; key k1334; + key k1335; key k1336; key k1337; key k1338; key k1339; + key k1340; key k1341; key k1342; key k1343; key k1344; + key k1345; key k1346; key k1347; key k1348; key k1349; + key k1350; key k1351; key k1352; key k1353; key k1354; + key k1355; key k1356; key k1357; key k1358; key k1359; + key k1360; key k1361; key k1362; key k1363; key k1364; + key k1365; key k1366; key k1367; key k1368; key k1369; + key k1370; key k1371; key k1372; key k1373; key k1374; + key k1375; key k1376; key k1377; key k1378; key k1379; + key k1380; key k1381; key k1382; key k1383; key k1384; + key k1385; key k1386; key k1387; key k1388; key k1389; + key k1390; key k1391; key k1392; key k1393; key k1394; + key k1395; key k1396; key k1397; key k1398; key k1399; + key k1400; key k1401; key k1402; key k1403; key k1404; + key k1405; key k1406; key k1407; key k1408; key k1409; + key k1410; key k1411; key k1412; key k1413; key k1414; + key k1415; key k1416; key k1417; key k1418; key k1419; + key k1420; key k1421; key k1422; key k1423; key k1424; + key k1425; key k1426; key k1427; key k1428; key k1429; + key k1430; key k1431; key k1432; key k1433; key k1434; + key k1435; key k1436; key k1437; key k1438; key k1439; + key k1440; key k1441; key k1442; key k1443; key k1444; + key k1445; key k1446; key k1447; key k1448; key k1449; + key k1450; key k1451; key k1452; key k1453; key k1454; + key k1455; key k1456; key k1457; key k1458; key k1459; + key k1460; key k1461; key k1462; key k1463; key k1464; + key k1465; key k1466; key k1467; key k1468; key k1469; + key k1470; key k1471; key k1472; key k1473; key k1474; + key k1475; key k1476; key k1477; key k1478; key k1479; + key k1480; key k1481; key k1482; key k1483; key k1484; + key k1485; key k1486; key k1487; key k1488; key k1489; + key k1490; key k1491; key k1492; key k1493; key k1494; + key k1495; key k1496; key k1497; key k1498; key k1499; + key k1500; key k1501; key k1502; key k1503; key k1504; + key k1505; key k1506; key k1507; key k1508; key k1509; + key k1510; key k1511; key k1512; key k1513; key k1514; + key k1515; key k1516; key k1517; key k1518; key k1519; + key k1520; key k1521; key k1522; key k1523; key k1524; + key k1525; key k1526; key k1527; key k1528; key k1529; + key k1530; key k1531; key k1532; key k1533; key k1534; + key k1535; key k1536; key k1537; key k1538; key k1539; + key k1540; key k1541; key k1542; key k1543; key k1544; + key k1545; key k1546; key k1547; key k1548; key k1549; + key k1550; key k1551; key k1552; key k1553; key k1554; + key k1555; key k1556; key k1557; key k1558; key k1559; + key k1560; key k1561; key k1562; key k1563; key k1564; + key k1565; key k1566; key k1567; key k1568; key k1569; + key k1570; key k1571; key k1572; key k1573; key k1574; + key k1575; key k1576; key k1577; key k1578; key k1579; + key k1580; key k1581; key k1582; key k1583; key k1584; + key k1585; key k1586; key k1587; key k1588; key k1589; + key k1590; key k1591; key k1592; key k1593; key k1594; + key k1595; key k1596; key k1597; key k1598; key k1599; + key k1600; key k1601; key k1602; key k1603; key k1604; + key k1605; key k1606; key k1607; key k1608; key k1609; + key k1610; key k1611; key k1612; key k1613; key k1614; + key k1615; key k1616; key k1617; key k1618; key k1619; + key k1620; key k1621; key k1622; key k1623; key k1624; + key k1625; key k1626; key k1627; key k1628; key k1629; + key k1630; key k1631; key k1632; key k1633; key k1634; + key k1635; key k1636; key k1637; key k1638; key k1639; + key k1640; key k1641; key k1642; key k1643; key k1644; + key k1645; key k1646; key k1647; key k1648; key k1649; + key k1650; key k1651; key k1652; key k1653; key k1654; + key k1655; key k1656; key k1657; key k1658; key k1659; + key k1660; key k1661; key k1662; key k1663; key k1664; + key k1665; key k1666; key k1667; key k1668; key k1669; + key k1670; key k1671; key k1672; key k1673; key k1674; + key k1675; key k1676; key k1677; key k1678; key k1679; + key k1680; key k1681; key k1682; key k1683; key k1684; + key k1685; key k1686; key k1687; key k1688; key k1689; + key k1690; key k1691; key k1692; key k1693; key k1694; + key k1695; key k1696; key k1697; key k1698; key k1699; + key k1700; key k1701; key k1702; key k1703; key k1704; + key k1705; key k1706; key k1707; key k1708; key k1709; + key k1710; key k1711; key k1712; key k1713; key k1714; + key k1715; key k1716; key k1717; key k1718; key k1719; + key k1720; key k1721; key k1722; key k1723; key k1724; + key k1725; key k1726; key k1727; key k1728; key k1729; + key k1730; key k1731; key k1732; key k1733; key k1734; + key k1735; key k1736; key k1737; key k1738; key k1739; + key k1740; key k1741; key k1742; key k1743; key k1744; + key k1745; key k1746; key k1747; key k1748; key k1749; + key k1750; key k1751; key k1752; key k1753; key k1754; + key k1755; key k1756; key k1757; key k1758; key k1759; + key k1760; key k1761; key k1762; key k1763; key k1764; + key k1765; key k1766; key k1767; key k1768; key k1769; + key k1770; key k1771; key k1772; key k1773; key k1774; + key k1775; key k1776; key k1777; key k1778; key k1779; + key k1780; key k1781; key k1782; key k1783; key k1784; + key k1785; key k1786; key k1787; key k1788; key k1789; + key k1790; key k1791; key k1792; key k1793; key k1794; + key k1795; key k1796; key k1797; key k1798; key k1799; + key k1800; key k1801; key k1802; key k1803; key k1804; + key k1805; key k1806; key k1807; key k1808; key k1809; + key k1810; key k1811; key k1812; key k1813; key k1814; + key k1815; key k1816; key k1817; key k1818; key k1819; + key k1820; key k1821; key k1822; key k1823; key k1824; + key k1825; key k1826; key k1827; key k1828; key k1829; + key k1830; key k1831; key k1832; key k1833; key k1834; + key k1835; key k1836; key k1837; key k1838; key k1839; + key k1840; key k1841; key k1842; key k1843; key k1844; + key k1845; key k1846; key k1847; key k1848; key k1849; + key k1850; key k1851; key k1852; key k1853; key k1854; + key k1855; key k1856; key k1857; key k1858; key k1859; + key k1860; key k1861; key k1862; key k1863; key k1864; + key k1865; key k1866; key k1867; key k1868; key k1869; + key k1870; key k1871; key k1872; key k1873; key k1874; + key k1875; key k1876; key k1877; key k1878; key k1879; + key k1880; key k1881; key k1882; key k1883; key k1884; + key k1885; key k1886; key k1887; key k1888; key k1889; + key k1890; key k1891; key k1892; key k1893; key k1894; + key k1895; key k1896; key k1897; key k1898; key k1899; + key k1900; key k1901; key k1902; key k1903; key k1904; + key k1905; key k1906; key k1907; key k1908; key k1909; + key k1910; key k1911; key k1912; key k1913; key k1914; + key k1915; key k1916; key k1917; key k1918; key k1919; + key k1920; key k1921; key k1922; key k1923; key k1924; + key k1925; key k1926; key k1927; key k1928; key k1929; + key k1930; key k1931; key k1932; key k1933; key k1934; + key k1935; key k1936; key k1937; key k1938; key k1939; + key k1940; key k1941; key k1942; key k1943; key k1944; + key k1945; key k1946; key k1947; key k1948; key k1949; + key k1950; key k1951; key k1952; key k1953; key k1954; + key k1955; key k1956; key k1957; key k1958; key k1959; + key k1960; key k1961; key k1962; key k1963; key k1964; + key k1965; key k1966; key k1967; key k1968; key k1969; + key k1970; key k1971; key k1972; key k1973; key k1974; + key k1975; key k1976; key k1977; key k1978; key k1979; + key k1980; key k1981; key k1982; key k1983; key k1984; + key k1985; key k1986; key k1987; key k1988; key k1989; + key k1990; key k1991; key k1992; key k1993; key k1994; + key k1995; key k1996; key k1997; key k1998; key k1999; + key k2000; key k2001; key k2002; key k2003; key k2004; + key k2005; key k2006; key k2007; key k2008; key k2009; + key k2010; key k2011; key k2012; key k2013; key k2014; + key k2015; key k2016; key k2017; key k2018; key k2019; + key k2020; key k2021; key k2022; key k2023; key k2024; + key k2025; key k2026; key k2027; key k2028; key k2029; + key k2030; key k2031; key k2032; key k2033; key k2034; + key k2035; key k2036; key k2037; key k2038; key k2039; + key k2040; key k2041; key k2042; key k2043; key k2044; + key k2045; key k2046; key k2047; key k2048; key k2049; + key k2050; key k2051; key k2052; key k2053; key k2054; + key k2055; key k2056; key k2057; key k2058; key k2059; + key k2060; key k2061; key k2062; key k2063; key k2064; + key k2065; key k2066; key k2067; key k2068; key k2069; + key k2070; key k2071; key k2072; key k2073; key k2074; + key k2075; key k2076; key k2077; key k2078; key k2079; + key k2080; key k2081; key k2082; key k2083; key k2084; + key k2085; key k2086; key k2087; key k2088; key k2089; + key k2090; key k2091; key k2092; key k2093; key k2094; + key k2095; key k2096; key k2097; key k2098; key k2099; + key k2100; key k2101; key k2102; key k2103; key k2104; + key k2105; key k2106; key k2107; key k2108; key k2109; + key k2110; key k2111; key k2112; key k2113; key k2114; + key k2115; key k2116; key k2117; key k2118; key k2119; + key k2120; key k2121; key k2122; key k2123; key k2124; + key k2125; key k2126; key k2127; key k2128; key k2129; + key k2130; key k2131; key k2132; key k2133; key k2134; + key k2135; key k2136; key k2137; key k2138; key k2139; + key k2140; key k2141; key k2142; key k2143; key k2144; + key k2145; key k2146; key k2147; key k2148; key k2149; + key k2150; key k2151; key k2152; key k2153; key k2154; + key k2155; key k2156; key k2157; key k2158; key k2159; + key k2160; key k2161; key k2162; key k2163; key k2164; + key k2165; key k2166; key k2167; key k2168; key k2169; + key k2170; key k2171; key k2172; key k2173; key k2174; + key k2175; key k2176; key k2177; key k2178; key k2179; + key k2180; key k2181; key k2182; key k2183; key k2184; + key k2185; key k2186; key k2187; key k2188; key k2189; + key k2190; key k2191; key k2192; key k2193; key k2194; + key k2195; key k2196; key k2197; key k2198; key k2199; + key k2200; key k2201; key k2202; key k2203; key k2204; + key k2205; key k2206; key k2207; key k2208; key k2209; + key k2210; key k2211; key k2212; key k2213; key k2214; + key k2215; key k2216; key k2217; key k2218; key k2219; + key k2220; key k2221; key k2222; key k2223; key k2224; + key k2225; key k2226; key k2227; key k2228; key k2229; + key k2230; key k2231; key k2232; key k2233; key k2234; + key k2235; key k2236; key k2237; key k2238; key k2239; + key k2240; key k2241; key k2242; key k2243; key k2244; + key k2245; key k2246; key k2247; key k2248; key k2249; + key k2250; key k2251; key k2252; key k2253; key k2254; + key k2255; key k2256; key k2257; key k2258; key k2259; + key k2260; key k2261; key k2262; key k2263; key k2264; + key k2265; key k2266; key k2267; key k2268; key k2269; + key k2270; key k2271; key k2272; key k2273; key k2274; + key k2275; key k2276; key k2277; key k2278; key k2279; + key k2280; key k2281; key k2282; key k2283; key k2284; + key k2285; key k2286; key k2287; key k2288; key k2289; + key k2290; key k2291; key k2292; key k2293; key k2294; + key k2295; key k2296; key k2297; key k2298; key k2299; + key k2300; key k2301; key k2302; key k2303; key k2304; + key k2305; key k2306; key k2307; key k2308; key k2309; + key k2310; key k2311; key k2312; key k2313; key k2314; + key k2315; key k2316; key k2317; key k2318; key k2319; + key k2320; key k2321; key k2322; key k2323; key k2324; + key k2325; key k2326; key k2327; key k2328; key k2329; + key k2330; key k2331; key k2332; key k2333; key k2334; + key k2335; key k2336; key k2337; key k2338; key k2339; + key k2340; key k2341; key k2342; key k2343; key k2344; + key k2345; key k2346; key k2347; key k2348; key k2349; + key k2350; key k2351; key k2352; key k2353; key k2354; + key k2355; key k2356; key k2357; key k2358; key k2359; + key k2360; key k2361; key k2362; key k2363; key k2364; + key k2365; key k2366; key k2367; key k2368; key k2369; + key k2370; key k2371; key k2372; key k2373; key k2374; + key k2375; key k2376; key k2377; key k2378; key k2379; + key k2380; key k2381; key k2382; key k2383; key k2384; + key k2385; key k2386; key k2387; key k2388; key k2389; + key k2390; key k2391; key k2392; key k2393; key k2394; + key k2395; key k2396; key k2397; key k2398; key k2399; + key k2400; key k2401; key k2402; key k2403; key k2404; + key k2405; key k2406; key k2407; key k2408; key k2409; + key k2410; key k2411; key k2412; key k2413; key k2414; + key k2415; key k2416; key k2417; key k2418; key k2419; + key k2420; key k2421; key k2422; key k2423; key k2424; + key k2425; key k2426; key k2427; key k2428; key k2429; + key k2430; key k2431; key k2432; key k2433; key k2434; + key k2435; key k2436; key k2437; key k2438; key k2439; + key k2440; key k2441; key k2442; key k2443; key k2444; + key k2445; key k2446; key k2447; key k2448; key k2449; + key k2450; key k2451; key k2452; key k2453; key k2454; + key k2455; key k2456; key k2457; key k2458; key k2459; + key k2460; key k2461; key k2462; key k2463; key k2464; + key k2465; key k2466; key k2467; key k2468; key k2469; + key k2470; key k2471; key k2472; key k2473; key k2474; + key k2475; key k2476; key k2477; key k2478; key k2479; + key k2480; key k2481; key k2482; key k2483; key k2484; + key k2485; key k2486; key k2487; key k2488; key k2489; + key k2490; key k2491; key k2492; key k2493; key k2494; + key k2495; key k2496; key k2497; key k2498; key k2499; + key k2500; key k2501; key k2502; key k2503; key k2504; + key k2505; key k2506; key k2507; key k2508; key k2509; + key k2510; key k2511; key k2512; key k2513; key k2514; + key k2515; key k2516; key k2517; key k2518; key k2519; + key k2520; key k2521; key k2522; key k2523; key k2524; + key k2525; key k2526; key k2527; key k2528; key k2529; + key k2530; key k2531; key k2532; key k2533; key k2534; + key k2535; key k2536; key k2537; key k2538; key k2539; + key k2540; key k2541; key k2542; key k2543; key k2544; + key k2545; key k2546; key k2547; key k2548; key k2549; + key k2550; key k2551; key k2552; key k2553; key k2554; + key k2555; key k2556; key k2557; key k2558; key k2559; + key k2560; key k2561; key k2562; key k2563; key k2564; + key k2565; key k2566; key k2567; key k2568; key k2569; + key k2570; key k2571; key k2572; key k2573; key k2574; + key k2575; key k2576; key k2577; key k2578; key k2579; + key k2580; key k2581; key k2582; key k2583; key k2584; + key k2585; key k2586; key k2587; key k2588; key k2589; + key k2590; key k2591; key k2592; key k2593; key k2594; + key k2595; key k2596; key k2597; key k2598; key k2599; + key k2600; key k2601; key k2602; key k2603; key k2604; + key k2605; key k2606; key k2607; key k2608; key k2609; + key k2610; key k2611; key k2612; key k2613; key k2614; + key k2615; key k2616; key k2617; key k2618; key k2619; + key k2620; key k2621; key k2622; key k2623; key k2624; + key k2625; key k2626; key k2627; key k2628; key k2629; + key k2630; key k2631; key k2632; key k2633; key k2634; + key k2635; key k2636; key k2637; key k2638; key k2639; + key k2640; key k2641; key k2642; key k2643; key k2644; + key k2645; key k2646; key k2647; key k2648; key k2649; + key k2650; key k2651; key k2652; key k2653; key k2654; + key k2655; key k2656; key k2657; key k2658; key k2659; + key k2660; key k2661; key k2662; key k2663; key k2664; + key k2665; key k2666; key k2667; key k2668; key k2669; + key k2670; key k2671; key k2672; key k2673; key k2674; + key k2675; key k2676; key k2677; key k2678; key k2679; + key k2680; key k2681; key k2682; key k2683; key k2684; + key k2685; key k2686; key k2687; key k2688; key k2689; + key k2690; key k2691; key k2692; key k2693; key k2694; + key k2695; key k2696; key k2697; key k2698; key k2699; + key k2700; key k2701; key k2702; key k2703; key k2704; + key k2705; key k2706; key k2707; key k2708; key k2709; + key k2710; key k2711; key k2712; key k2713; key k2714; + key k2715; key k2716; key k2717; key k2718; key k2719; + key k2720; key k2721; key k2722; key k2723; key k2724; + key k2725; key k2726; key k2727; key k2728; key k2729; + key k2730; key k2731; key k2732; key k2733; key k2734; + key k2735; key k2736; key k2737; key k2738; key k2739; + key k2740; key k2741; key k2742; key k2743; key k2744; + key k2745; key k2746; key k2747; key k2748; key k2749; + key k2750; key k2751; key k2752; key k2753; key k2754; + key k2755; key k2756; key k2757; key k2758; key k2759; + key k2760; key k2761; key k2762; key k2763; key k2764; + key k2765; key k2766; key k2767; key k2768; key k2769; + key k2770; key k2771; key k2772; key k2773; key k2774; + key k2775; key k2776; key k2777; key k2778; key k2779; + key k2780; key k2781; key k2782; key k2783; key k2784; + key k2785; key k2786; key k2787; key k2788; key k2789; + key k2790; key k2791; key k2792; key k2793; key k2794; + key k2795; key k2796; key k2797; key k2798; key k2799; + key k2800; key k2801; key k2802; key k2803; key k2804; + key k2805; key k2806; key k2807; key k2808; key k2809; + key k2810; key k2811; key k2812; key k2813; key k2814; + key k2815; key k2816; key k2817; key k2818; key k2819; + key k2820; key k2821; key k2822; key k2823; key k2824; + key k2825; key k2826; key k2827; key k2828; key k2829; + key k2830; key k2831; key k2832; key k2833; key k2834; + key k2835; key k2836; key k2837; key k2838; key k2839; + key k2840; key k2841; key k2842; key k2843; key k2844; + key k2845; key k2846; key k2847; key k2848; key k2849; + key k2850; key k2851; key k2852; key k2853; key k2854; + key k2855; key k2856; key k2857; key k2858; key k2859; + key k2860; key k2861; key k2862; key k2863; key k2864; + key k2865; key k2866; key k2867; key k2868; key k2869; + key k2870; key k2871; key k2872; key k2873; key k2874; + key k2875; key k2876; key k2877; key k2878; key k2879; + key k2880; key k2881; key k2882; key k2883; key k2884; + key k2885; key k2886; key k2887; key k2888; key k2889; + key k2890; key k2891; key k2892; key k2893; key k2894; + key k2895; key k2896; key k2897; key k2898; key k2899; + key k2900; key k2901; key k2902; key k2903; key k2904; + key k2905; key k2906; key k2907; key k2908; key k2909; + key k2910; key k2911; key k2912; key k2913; key k2914; + key k2915; key k2916; key k2917; key k2918; key k2919; + key k2920; key k2921; key k2922; key k2923; key k2924; + key k2925; key k2926; key k2927; key k2928; key k2929; + key k2930; key k2931; key k2932; key k2933; key k2934; + key k2935; key k2936; key k2937; key k2938; key k2939; + key k2940; key k2941; key k2942; key k2943; key k2944; + key k2945; key k2946; key k2947; key k2948; key k2949; + key k2950; key k2951; key k2952; key k2953; key k2954; + key k2955; key k2956; key k2957; key k2958; key k2959; + key k2960; key k2961; key k2962; key k2963; key k2964; + key k2965; key k2966; key k2967; key k2968; key k2969; + key k2970; key k2971; key k2972; key k2973; key k2974; + key k2975; key k2976; key k2977; key k2978; key k2979; + key k2980; key k2981; key k2982; key k2983; key k2984; + key k2985; key k2986; key k2987; key k2988; key k2989; + key k2990; key k2991; key k2992; key k2993; key k2994; + key k2995; key k2996; key k2997; key k2998; key k2999; + key k3000; key k3001; key k3002; key k3003; key k3004; + key k3005; key k3006; key k3007; key k3008; key k3009; + key k3010; key k3011; key k3012; key k3013; key k3014; + key k3015; key k3016; key k3017; key k3018; key k3019; + key k3020; key k3021; key k3022; key k3023; key k3024; + key k3025; key k3026; key k3027; key k3028; key k3029; + key k3030; key k3031; key k3032; key k3033; key k3034; + key k3035; key k3036; key k3037; key k3038; key k3039; + key k3040; key k3041; key k3042; key k3043; key k3044; + key k3045; key k3046; key k3047; key k3048; key k3049; + key k3050; key k3051; key k3052; key k3053; key k3054; + key k3055; key k3056; key k3057; key k3058; key k3059; + key k3060; key k3061; key k3062; key k3063; key k3064; + key k3065; key k3066; key k3067; key k3068; key k3069; + key k3070; key k3071; key k3072; key k3073; key k3074; + key k3075; key k3076; key k3077; key k3078; key k3079; + key k3080; key k3081; key k3082; key k3083; key k3084; + key k3085; key k3086; key k3087; key k3088; key k3089; + key k3090; key k3091; key k3092; key k3093; key k3094; + key k3095; key k3096; key k3097; key k3098; key k3099; + key k3100; key k3101; key k3102; key k3103; key k3104; + key k3105; key k3106; key k3107; key k3108; key k3109; + key k3110; key k3111; key k3112; key k3113; key k3114; + key k3115; key k3116; key k3117; key k3118; key k3119; + key k3120; key k3121; key k3122; key k3123; key k3124; + key k3125; key k3126; key k3127; key k3128; key k3129; + key k3130; key k3131; key k3132; key k3133; key k3134; + key k3135; key k3136; key k3137; key k3138; key k3139; + key k3140; key k3141; key k3142; key k3143; key k3144; + key k3145; key k3146; key k3147; key k3148; key k3149; + key k3150; key k3151; key k3152; key k3153; key k3154; + key k3155; key k3156; key k3157; key k3158; key k3159; + key k3160; key k3161; key k3162; key k3163; key k3164; + key k3165; key k3166; key k3167; key k3168; key k3169; + key k3170; key k3171; key k3172; key k3173; key k3174; + key k3175; key k3176; key k3177; key k3178; key k3179; + key k3180; key k3181; key k3182; key k3183; key k3184; + key k3185; key k3186; key k3187; key k3188; key k3189; + key k3190; key k3191; key k3192; key k3193; key k3194; + key k3195; key k3196; key k3197; key k3198; key k3199; + key k3200; key k3201; key k3202; key k3203; key k3204; + key k3205; key k3206; key k3207; key k3208; key k3209; + key k3210; key k3211; key k3212; key k3213; key k3214; + key k3215; key k3216; key k3217; key k3218; key k3219; + key k3220; key k3221; key k3222; key k3223; key k3224; + key k3225; key k3226; key k3227; key k3228; key k3229; + key k3230; key k3231; key k3232; key k3233; key k3234; + key k3235; key k3236; key k3237; key k3238; key k3239; + key k3240; key k3241; key k3242; key k3243; key k3244; + key k3245; key k3246; key k3247; key k3248; key k3249; + key k3250; key k3251; key k3252; key k3253; key k3254; + key k3255; key k3256; key k3257; key k3258; key k3259; + key k3260; key k3261; key k3262; key k3263; key k3264; + key k3265; key k3266; key k3267; key k3268; key k3269; + key k3270; key k3271; key k3272; key k3273; key k3274; + key k3275; key k3276; key k3277; key k3278; key k3279; + key k3280; key k3281; key k3282; key k3283; key k3284; + key k3285; key k3286; key k3287; key k3288; key k3289; + key k3290; key k3291; key k3292; key k3293; key k3294; + key k3295; key k3296; key k3297; key k3298; key k3299; + key k3300; key k3301; key k3302; key k3303; key k3304; + key k3305; key k3306; key k3307; key k3308; key k3309; + key k3310; key k3311; key k3312; key k3313; key k3314; + key k3315; key k3316; key k3317; key k3318; key k3319; + key k3320; key k3321; key k3322; key k3323; key k3324; + key k3325; key k3326; key k3327; key k3328; key k3329; + key k3330; key k3331; key k3332; key k3333; key k3334; + key k3335; key k3336; key k3337; key k3338; key k3339; + key k3340; key k3341; key k3342; key k3343; key k3344; + key k3345; key k3346; key k3347; key k3348; key k3349; + key k3350; key k3351; key k3352; key k3353; key k3354; + key k3355; key k3356; key k3357; key k3358; key k3359; + key k3360; key k3361; key k3362; key k3363; key k3364; + key k3365; key k3366; key k3367; key k3368; key k3369; + key k3370; key k3371; key k3372; key k3373; key k3374; + key k3375; key k3376; key k3377; key k3378; key k3379; + key k3380; key k3381; key k3382; key k3383; key k3384; + key k3385; key k3386; key k3387; key k3388; key k3389; + key k3390; key k3391; key k3392; key k3393; key k3394; + key k3395; key k3396; key k3397; key k3398; key k3399; + fn1(){jump x; @x;} fn2(){integer i3; i4=0; s3=""; fn1(); state another;} + default { timer() { state another; } state_exit() {} } + state another { timer() { state default; } touch(integer num_det) {} } + ''', + ['optimize', 'shrinknames'] + ) + self.opt.optimize(p, ['optimize','shrinknames']) + print self.outscript.output(p) + + p = self.parser.parse( + '''integer i1; integer i2; + f(integer a, integer b, integer c, integer d, integer e){} + default{timer(){}} + ''', + ['optimize', 'shrinknames'] + ) + self.opt.optimize(p, ['optimize','shrinknames']) + print self.outscript.output(p) + def test_regression(self): @@ -335,6 +1066,8 @@ class Test03_Optimizer(UnitTestCase): self.assertEqual(out, 'list L;\nfloat f = 0;\n' 'default\n{\n timer()\n {\n }\n}\n') + self.assertRaises(EParseAlreadyDefined, self.parser.parse, + 'default { timer() {} timer() {} }') def tearDown(self): del self.parser