diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 30dc7ca7de621a3d4ba5e096f3c8dce1926b702e..987abc5ba756f85073d0f520e891e1d0dfa84bbd 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -1376,54 +1376,54 @@ static const yytype_uint16 yyrline[] =
      464,   587,   594,   605,   604,   622,   629,   640,   639,   656,
      673,   696,   695,   709,   710,   711,   712,   713,   717,   718,
      724,   724,   725,   725,   731,   732,   733,   734,   739,   745,
-     807,   823,   853,   863,   868,   876,   881,   889,   898,   903,
-     915,   932,   939,   948,   967,   986,   996,  1008,  1014,  1022,
-    1043,  1066,  1077,  1085,  1107,  1130,  1168,  1189,  1201,  1215,
-    1215,  1217,  1219,  1228,  1238,  1237,  1258,  1257,  1275,  1285,
-    1284,  1298,  1300,  1308,  1314,  1319,  1345,  1346,  1350,  1361,
-    1376,  1386,  1387,  1392,  1400,  1409,  1417,  1435,  1439,  1446,
-    1454,  1458,  1465,  1473,  1477,  1484,  1492,  1496,  1503,  1512,
-    1515,  1522,  1525,  1532,  1553,  1567,  1581,  1616,  1654,  1668,
-    1682,  1702,  1711,  1725,  1740,  1754,  1773,  1783,  1789,  1795,
-    1802,  1831,  1846,  1866,  1887,  1908,  1929,  1951,  1973,  1994,
-    2017,  2026,  2047,  2062,  2076,  2092,  2108,  2117,  2127,  2137,
-    2147,  2162,  2174,  2188,  2201,  2214,  2227,  2264,  2284,  2306,
-    2307,  2312,  2315,  2319,  2330,  2341,  2352,  2368,  2387,  2408,
-    2423,  2439,  2457,  2508,  2529,  2551,  2574,  2679,  2695,  2730,
-    2741,  2747,  2762,  2790,  2807,  2814,  2826,  2845,  2851,  2857,
-    2864,  2871,  2878,  2890,  2963,  2981,  2998,  3013,  3046,  3058,
-    3082,  3086,  3091,  3098,  3103,  3113,  3118,  3124,  3132,  3136,
-    3140,  3149,  3213,  3229,  3246,  3263,  3285,  3307,  3342,  3350,
-    3358,  3364,  3371,  3378,  3398,  3424,  3436,  3448,  3464,  3480,
-    3497,  3496,  3519,  3518,  3543,  3542,  3565,  3564,  3585,  3599,
-    3614,  3629,  3650,  3653,  3659,  3671,  3691,  3695,  3699,  3703,
-    3707,  3711,  3715,  3719,  3728,  3741,  3742,  3743,  3744,  3745,
-    3749,  3750,  3751,  3754,  3772,  3789,  3806,  3809,  3825,  3828,
-    3845,  3848,  3854,  3857,  3864,  3867,  3874,  3891,  3932,  3976,
-    4015,  4040,  4049,  4079,  4105,  4131,  4163,  4190,  4216,  4242,
-    4268,  4294,  4316,  4322,  4328,  4334,  4340,  4346,  4372,  4398,
-    4415,  4432,  4449,  4461,  4467,  4473,  4485,  4489,  4499,  4510,
-    4511,  4512,  4516,  4522,  4534,  4552,  4580,  4581,  4582,  4583,
-    4584,  4585,  4586,  4587,  4588,  4595,  4596,  4597,  4598,  4599,
-    4600,  4601,  4602,  4603,  4604,  4605,  4606,  4607,  4608,  4609,
-    4610,  4611,  4612,  4613,  4614,  4615,  4616,  4617,  4618,  4619,
-    4620,  4621,  4622,  4623,  4624,  4625,  4626,  4627,  4628,  4637,
-    4638,  4639,  4640,  4641,  4642,  4643,  4644,  4645,  4646,  4647,
-    4652,  4651,  4659,  4661,  4666,  4672,  4696,  4714,  4732,  4737,
-    4743,  4759,  4765,  4771,  4790,  4811,  4844,  4868,  4871,  4877,
-    4888,  4898,  4903,  4914,  4923,  4928,  4933,  4962,  4961,  4991,
-    4993,  4998,  5007,  5009,  5015,  5016,  5022,  5026,  5030,  5034,
-    5038,  5045,  5049,  5053,  5057,  5064,  5069,  5076,  5081,  5085,
-    5090,  5094,  5102,  5113,  5117,  5129,  5137,  5145,  5152,  5162,
-    5185,  5191,  5197,  5203,  5209,  5220,  5231,  5242,  5253,  5259,
-    5265,  5271,  5277,  5287,  5297,  5307,  5320,  5332,  5336,  5340,
-    5344,  5362,  5370,  5378,  5407,  5417,  5433,  5451,  5462,  5467,
-    5471,  5475,  5487,  5491,  5503,  5520,  5530,  5534,  5549,  5554,
-    5561,  5565,  5578,  5592,  5609,  5635,  5639,  5647,  5653,  5659,
-    5665,  5674,  5678,  5682,  5690,  5696,  5702,  5710,  5718,  5725,
-    5733,  5748,  5762,  5776,  5788,  5804,  5813,  5822,  5832,  5843,
-    5851,  5859,  5863,  5882,  5889,  5895,  5902,  5910,  5909,  5919,
-    5943,  5945,  5951,  5956,  5964,  5973,  5986,  5989,  5993
+     807,   822,   851,   861,   866,   874,   879,   887,   896,   901,
+     913,   930,   936,   945,   963,   981,   990,  1002,  1007,  1015,
+    1035,  1058,  1069,  1077,  1099,  1122,  1160,  1181,  1193,  1207,
+    1207,  1209,  1211,  1220,  1230,  1229,  1250,  1249,  1267,  1277,
+    1276,  1290,  1292,  1300,  1306,  1311,  1337,  1338,  1342,  1353,
+    1368,  1378,  1379,  1384,  1392,  1401,  1409,  1427,  1431,  1438,
+    1446,  1450,  1457,  1465,  1469,  1476,  1484,  1488,  1495,  1504,
+    1507,  1514,  1517,  1524,  1545,  1559,  1573,  1608,  1646,  1660,
+    1674,  1694,  1703,  1717,  1732,  1746,  1765,  1775,  1781,  1787,
+    1794,  1823,  1838,  1858,  1879,  1900,  1921,  1943,  1965,  1986,
+    2009,  2018,  2039,  2054,  2068,  2084,  2100,  2109,  2119,  2129,
+    2139,  2154,  2166,  2180,  2193,  2206,  2219,  2256,  2276,  2298,
+    2299,  2304,  2307,  2311,  2322,  2333,  2344,  2360,  2379,  2400,
+    2415,  2431,  2449,  2500,  2521,  2543,  2566,  2671,  2687,  2722,
+    2733,  2739,  2754,  2782,  2799,  2806,  2818,  2837,  2843,  2849,
+    2856,  2863,  2870,  2882,  2955,  2973,  2990,  3005,  3038,  3050,
+    3074,  3078,  3083,  3090,  3095,  3105,  3110,  3116,  3124,  3128,
+    3132,  3141,  3205,  3221,  3238,  3255,  3277,  3299,  3334,  3342,
+    3350,  3356,  3363,  3370,  3390,  3416,  3428,  3440,  3456,  3472,
+    3489,  3488,  3511,  3510,  3535,  3534,  3557,  3556,  3577,  3591,
+    3606,  3621,  3642,  3645,  3651,  3663,  3683,  3687,  3691,  3695,
+    3699,  3703,  3707,  3711,  3720,  3733,  3734,  3735,  3736,  3737,
+    3741,  3742,  3743,  3746,  3764,  3781,  3798,  3801,  3817,  3820,
+    3837,  3840,  3846,  3849,  3856,  3859,  3866,  3883,  3924,  3968,
+    4007,  4032,  4041,  4071,  4097,  4123,  4155,  4182,  4208,  4234,
+    4260,  4286,  4308,  4314,  4320,  4326,  4332,  4338,  4364,  4390,
+    4407,  4424,  4441,  4453,  4459,  4465,  4477,  4481,  4491,  4502,
+    4503,  4504,  4508,  4514,  4526,  4544,  4572,  4573,  4574,  4575,
+    4576,  4577,  4578,  4579,  4580,  4587,  4588,  4589,  4590,  4591,
+    4592,  4593,  4594,  4595,  4596,  4597,  4598,  4599,  4600,  4601,
+    4602,  4603,  4604,  4605,  4606,  4607,  4608,  4609,  4610,  4611,
+    4612,  4613,  4614,  4615,  4616,  4617,  4618,  4619,  4620,  4629,
+    4630,  4631,  4632,  4633,  4634,  4635,  4636,  4637,  4638,  4639,
+    4644,  4643,  4651,  4653,  4658,  4664,  4688,  4706,  4724,  4729,
+    4735,  4751,  4757,  4763,  4782,  4803,  4836,  4860,  4864,  4869,
+    4879,  4889,  4894,  4905,  4914,  4919,  4924,  4953,  4952,  4982,
+    4984,  4989,  4998,  5000,  5006,  5007,  5013,  5017,  5021,  5025,
+    5029,  5036,  5040,  5044,  5048,  5055,  5060,  5067,  5072,  5076,
+    5081,  5085,  5093,  5104,  5108,  5120,  5128,  5136,  5143,  5153,
+    5176,  5182,  5188,  5194,  5200,  5211,  5222,  5233,  5244,  5250,
+    5256,  5262,  5268,  5278,  5288,  5298,  5311,  5323,  5327,  5331,
+    5335,  5353,  5361,  5369,  5398,  5408,  5424,  5442,  5453,  5458,
+    5462,  5466,  5478,  5482,  5494,  5511,  5521,  5525,  5540,  5545,
+    5552,  5556,  5569,  5583,  5600,  5626,  5630,  5638,  5644,  5650,
+    5656,  5665,  5669,  5673,  5681,  5687,  5693,  5701,  5709,  5716,
+    5724,  5739,  5753,  5767,  5779,  5795,  5804,  5813,  5823,  5834,
+    5842,  5850,  5854,  5873,  5880,  5886,  5893,  5901,  5900,  5910,
+    5934,  5936,  5942,  5947,  5955,  5964,  5977,  5980,  5984
 };
 #endif
 
@@ -6635,7 +6635,7 @@ yyreduce:
     break;
 
   case 81:
-#line 824 "Gmsh.y"
+#line 823 "Gmsh.y"
     {
       gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (6)].c)]);
       s.list = true;
@@ -6667,7 +6667,7 @@ yyreduce:
     break;
 
   case 82:
-#line 854 "Gmsh.y"
+#line 852 "Gmsh.y"
     {
       assignVariables((yyvsp[(1) - (9)].c), (yyvsp[(4) - (9)].l), (yyvsp[(7) - (9)].i), (yyvsp[(8) - (9)].l));
       Free((yyvsp[(1) - (9)].c));
@@ -6677,7 +6677,7 @@ yyreduce:
     break;
 
   case 83:
-#line 864 "Gmsh.y"
+#line 862 "Gmsh.y"
     {
       assignVariable((yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(5) - (7)].i), (yyvsp[(6) - (7)].d));
       Free((yyvsp[(1) - (7)].c));
@@ -6685,7 +6685,7 @@ yyreduce:
     break;
 
   case 84:
-#line 869 "Gmsh.y"
+#line 867 "Gmsh.y"
     {
       incrementVariable((yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].i));
       Free((yyvsp[(1) - (6)].c));
@@ -6693,7 +6693,7 @@ yyreduce:
     break;
 
   case 85:
-#line 877 "Gmsh.y"
+#line 875 "Gmsh.y"
     {
       assignVariable((yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(5) - (7)].i), (yyvsp[(6) - (7)].d));
       Free((yyvsp[(1) - (7)].c));
@@ -6701,7 +6701,7 @@ yyreduce:
     break;
 
   case 86:
-#line 882 "Gmsh.y"
+#line 880 "Gmsh.y"
     {
       incrementVariable((yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].i));
       Free((yyvsp[(1) - (6)].c));
@@ -6709,7 +6709,7 @@ yyreduce:
     break;
 
   case 87:
-#line 890 "Gmsh.y"
+#line 888 "Gmsh.y"
     {
       gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)] = std::vector<std::string>(1, (yyvsp[(3) - (4)].c));
       Free((yyvsp[(1) - (4)].c));
@@ -6718,7 +6718,7 @@ yyreduce:
     break;
 
   case 88:
-#line 899 "Gmsh.y"
+#line 897 "Gmsh.y"
     {
       gmsh_yystringsymbols[(yyvsp[(1) - (8)].c)] = std::vector<std::string>();
       Free((yyvsp[(1) - (8)].c));
@@ -6726,7 +6726,7 @@ yyreduce:
     break;
 
   case 89:
-#line 904 "Gmsh.y"
+#line 902 "Gmsh.y"
     {
       std::vector<std::string> s;
       for(int i = 0; i < List_Nbr((yyvsp[(7) - (9)].l)); i++){
@@ -6741,7 +6741,7 @@ yyreduce:
     break;
 
   case 90:
-#line 916 "Gmsh.y"
+#line 914 "Gmsh.y"
     {
       if(gmsh_yystringsymbols.count((yyvsp[(1) - (9)].c))){
         for(int i = 0; i < List_Nbr((yyvsp[(7) - (9)].l)); i++){
@@ -6758,7 +6758,7 @@ yyreduce:
     break;
 
   case 91:
-#line 933 "Gmsh.y"
+#line 931 "Gmsh.y"
     {
       std::string tmp((yyvsp[(5) - (6)].c));
       StringOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), tmp);
@@ -6767,7 +6767,7 @@ yyreduce:
     break;
 
   case 92:
-#line 940 "Gmsh.y"
+#line 937 "Gmsh.y"
     {
       std::string tmp((yyvsp[(8) - (9)].c));
       StringOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), tmp);
@@ -6776,7 +6776,7 @@ yyreduce:
     break;
 
   case 93:
-#line 949 "Gmsh.y"
+#line 946 "Gmsh.y"
     {
       double d = 0.;
       if(NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), d)){
@@ -6797,7 +6797,7 @@ yyreduce:
     break;
 
   case 94:
-#line 968 "Gmsh.y"
+#line 964 "Gmsh.y"
     {
       double d = 0.;
       if(NumberOption(GMSH_GET, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), d)){
@@ -6818,7 +6818,7 @@ yyreduce:
     break;
 
   case 95:
-#line 987 "Gmsh.y"
+#line 982 "Gmsh.y"
     {
       double d = 0.;
       if(NumberOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(3) - (5)].c), d)){
@@ -6830,7 +6830,7 @@ yyreduce:
     break;
 
   case 96:
-#line 997 "Gmsh.y"
+#line 991 "Gmsh.y"
     {
       double d = 0.;
       if(NumberOption(GMSH_GET, (yyvsp[(1) - (8)].c), (int)(yyvsp[(3) - (8)].d), (yyvsp[(6) - (8)].c), d)){
@@ -6842,7 +6842,7 @@ yyreduce:
     break;
 
   case 97:
-#line 1009 "Gmsh.y"
+#line 1003 "Gmsh.y"
     {
       ColorOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (8)].c), 0, (yyvsp[(5) - (8)].c), (yyvsp[(7) - (8)].u));
       Free((yyvsp[(1) - (8)].c)); Free((yyvsp[(5) - (8)].c));
@@ -6850,7 +6850,7 @@ yyreduce:
     break;
 
   case 98:
-#line 1015 "Gmsh.y"
+#line 1008 "Gmsh.y"
     {
       ColorOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (11)].c), (int)(yyvsp[(3) - (11)].d), (yyvsp[(8) - (11)].c), (yyvsp[(10) - (11)].u));
       Free((yyvsp[(1) - (11)].c)); Free((yyvsp[(8) - (11)].c));
@@ -6858,7 +6858,7 @@ yyreduce:
     break;
 
   case 99:
-#line 1023 "Gmsh.y"
+#line 1016 "Gmsh.y"
     {
       GmshColorTable *ct = GetColorTable(0);
       if(!ct)
@@ -6881,7 +6881,7 @@ yyreduce:
     break;
 
   case 100:
-#line 1044 "Gmsh.y"
+#line 1036 "Gmsh.y"
     {
       GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (9)].d));
       if(!ct)
@@ -6904,7 +6904,7 @@ yyreduce:
     break;
 
   case 101:
-#line 1067 "Gmsh.y"
+#line 1059 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
       if(!strcmp((yyvsp[(1) - (5)].c),"Background"))
@@ -6918,7 +6918,7 @@ yyreduce:
     break;
 
   case 102:
-#line 1078 "Gmsh.y"
+#line 1070 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
       if(!GModel::current()->getFields()->newField((int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c)))
@@ -6929,7 +6929,7 @@ yyreduce:
     break;
 
   case 103:
-#line 1086 "Gmsh.y"
+#line 1078 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
       Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (9)].d));
@@ -6954,7 +6954,7 @@ yyreduce:
     break;
 
   case 104:
-#line 1108 "Gmsh.y"
+#line 1100 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
       Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (9)].d));
@@ -6980,7 +6980,7 @@ yyreduce:
     break;
 
   case 105:
-#line 1131 "Gmsh.y"
+#line 1123 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
       Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (11)].d));
@@ -7021,7 +7021,7 @@ yyreduce:
     break;
 
   case 106:
-#line 1169 "Gmsh.y"
+#line 1161 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
       Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (7)].d));
@@ -7042,7 +7042,7 @@ yyreduce:
     break;
 
   case 107:
-#line 1190 "Gmsh.y"
+#line 1182 "Gmsh.y"
     {
 #if defined(HAVE_PLUGINS)
       try {
@@ -7057,7 +7057,7 @@ yyreduce:
     break;
 
   case 108:
-#line 1202 "Gmsh.y"
+#line 1194 "Gmsh.y"
     {
 #if defined(HAVE_PLUGINS)
       try {
@@ -7072,7 +7072,7 @@ yyreduce:
     break;
 
   case 112:
-#line 1220 "Gmsh.y"
+#line 1212 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (3)].c));
       std::vector<double> val(1, 0.);
@@ -7084,7 +7084,7 @@ yyreduce:
     break;
 
   case 113:
-#line 1229 "Gmsh.y"
+#line 1221 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (5)].c));
       std::vector<double> val(1, (yyvsp[(5) - (5)].d));
@@ -7096,12 +7096,12 @@ yyreduce:
     break;
 
   case 114:
-#line 1238 "Gmsh.y"
+#line 1230 "Gmsh.y"
     { floatOptions.clear(); charOptions.clear(); ;}
     break;
 
   case 115:
-#line 1240 "Gmsh.y"
+#line 1232 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(6) - (9)].l)) != 1)
 	yymsg(1, "List notation should be used to define list '%s[]'", (yyvsp[(3) - (9)].c));
@@ -7122,12 +7122,12 @@ yyreduce:
     break;
 
   case 116:
-#line 1258 "Gmsh.y"
+#line 1250 "Gmsh.y"
     { floatOptions.clear(); charOptions.clear(); ;}
     break;
 
   case 117:
-#line 1260 "Gmsh.y"
+#line 1252 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (11)].c));
       std::vector<double> val;
@@ -7146,7 +7146,7 @@ yyreduce:
     break;
 
   case 118:
-#line 1276 "Gmsh.y"
+#line 1268 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (5)].c)), val((yyvsp[(5) - (5)].c));
       if(!gmsh_yystringsymbols.count(key)){
@@ -7158,12 +7158,12 @@ yyreduce:
     break;
 
   case 119:
-#line 1285 "Gmsh.y"
+#line 1277 "Gmsh.y"
     { floatOptions.clear(); charOptions.clear(); ;}
     break;
 
   case 120:
-#line 1287 "Gmsh.y"
+#line 1279 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (9)].c)), val((yyvsp[(6) - (9)].c));
       if(!gmsh_yysymbols.count(key)){
@@ -7176,7 +7176,7 @@ yyreduce:
     break;
 
   case 122:
-#line 1301 "Gmsh.y"
+#line 1293 "Gmsh.y"
     {
       std::string name((yyvsp[(3) - (3)].c));
       Msg::UndefineOnelabParameter(name);
@@ -7185,7 +7185,7 @@ yyreduce:
     break;
 
   case 123:
-#line 1309 "Gmsh.y"
+#line 1301 "Gmsh.y"
     {
       (yyval.l) = List_Create(20,20,sizeof(doubleXstring));
       doubleXstring v = {(yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].c)};
@@ -7194,7 +7194,7 @@ yyreduce:
     break;
 
   case 124:
-#line 1315 "Gmsh.y"
+#line 1307 "Gmsh.y"
     {
       doubleXstring v = {(yyvsp[(3) - (5)].d), (yyvsp[(5) - (5)].c)};
       List_Add((yyval.l), &v);
@@ -7202,7 +7202,7 @@ yyreduce:
     break;
 
   case 125:
-#line 1320 "Gmsh.y"
+#line 1312 "Gmsh.y"
     {
       (yyval.l) = List_Create(20,20,sizeof(doubleXstring));
       int n = List_Nbr((yyvsp[(1) - (5)].l));
@@ -7229,7 +7229,7 @@ yyreduce:
     break;
 
   case 128:
-#line 1351 "Gmsh.y"
+#line 1343 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (3)].c));
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){
@@ -7243,7 +7243,7 @@ yyreduce:
     break;
 
   case 129:
-#line 1362 "Gmsh.y"
+#line 1354 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (5)].c));
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){
@@ -7260,7 +7260,7 @@ yyreduce:
     break;
 
   case 130:
-#line 1377 "Gmsh.y"
+#line 1369 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (3)].c));
       std::string val((yyvsp[(3) - (3)].c));
@@ -7271,7 +7271,7 @@ yyreduce:
     break;
 
   case 133:
-#line 1393 "Gmsh.y"
+#line 1385 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (3)].c));
       double val = (yyvsp[(3) - (3)].d);
@@ -7281,7 +7281,7 @@ yyreduce:
     break;
 
   case 134:
-#line 1401 "Gmsh.y"
+#line 1393 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (3)].c));
       std::string val((yyvsp[(3) - (3)].c));
@@ -7292,7 +7292,7 @@ yyreduce:
     break;
 
   case 135:
-#line 1410 "Gmsh.y"
+#line 1402 "Gmsh.y"
     {
       std::string key("Macro");
       std::string val((yyvsp[(3) - (3)].c));
@@ -7302,7 +7302,7 @@ yyreduce:
     break;
 
   case 136:
-#line 1418 "Gmsh.y"
+#line 1410 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (5)].c));
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){
@@ -7318,14 +7318,14 @@ yyreduce:
     break;
 
   case 137:
-#line 1436 "Gmsh.y"
+#line 1428 "Gmsh.y"
     {
       (yyval.i) = (int)(yyvsp[(1) - (1)].d);
     ;}
     break;
 
   case 138:
-#line 1440 "Gmsh.y"
+#line 1432 "Gmsh.y"
     {
       int t = GModel::current()->getGEOInternals()->getMaxPhysicalTag();
       GModel::current()->getGEOInternals()->setMaxPhysicalTag(t + 1);
@@ -7335,7 +7335,7 @@ yyreduce:
     break;
 
   case 139:
-#line 1447 "Gmsh.y"
+#line 1439 "Gmsh.y"
     {
       (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), 0, (yyvsp[(3) - (3)].d));
       Free((yyvsp[(1) - (3)].c));
@@ -7343,14 +7343,14 @@ yyreduce:
     break;
 
   case 140:
-#line 1455 "Gmsh.y"
+#line 1447 "Gmsh.y"
     {
       (yyval.i) = (int)(yyvsp[(1) - (1)].d);
     ;}
     break;
 
   case 141:
-#line 1459 "Gmsh.y"
+#line 1451 "Gmsh.y"
     {
       int t = GModel::current()->getGEOInternals()->getMaxPhysicalTag();
       GModel::current()->getGEOInternals()->setMaxPhysicalTag(t + 1);
@@ -7360,7 +7360,7 @@ yyreduce:
     break;
 
   case 142:
-#line 1466 "Gmsh.y"
+#line 1458 "Gmsh.y"
     {
       (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), 1, (yyvsp[(3) - (3)].d));
       Free((yyvsp[(1) - (3)].c));
@@ -7368,14 +7368,14 @@ yyreduce:
     break;
 
   case 143:
-#line 1474 "Gmsh.y"
+#line 1466 "Gmsh.y"
     {
       (yyval.i) = (int)(yyvsp[(1) - (1)].d);
     ;}
     break;
 
   case 144:
-#line 1478 "Gmsh.y"
+#line 1470 "Gmsh.y"
     {
       int t = GModel::current()->getGEOInternals()->getMaxPhysicalTag();
       GModel::current()->getGEOInternals()->setMaxPhysicalTag(t + 1);
@@ -7385,7 +7385,7 @@ yyreduce:
     break;
 
   case 145:
-#line 1485 "Gmsh.y"
+#line 1477 "Gmsh.y"
     {
       (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), 2, (yyvsp[(3) - (3)].d));
       Free((yyvsp[(1) - (3)].c));
@@ -7393,14 +7393,14 @@ yyreduce:
     break;
 
   case 146:
-#line 1493 "Gmsh.y"
+#line 1485 "Gmsh.y"
     {
       (yyval.i) = (int)(yyvsp[(1) - (1)].d);
     ;}
     break;
 
   case 147:
-#line 1497 "Gmsh.y"
+#line 1489 "Gmsh.y"
     {
       int t = GModel::current()->getGEOInternals()->getMaxPhysicalTag();
       GModel::current()->getGEOInternals()->setMaxPhysicalTag(t + 1);
@@ -7410,7 +7410,7 @@ yyreduce:
     break;
 
   case 148:
-#line 1504 "Gmsh.y"
+#line 1496 "Gmsh.y"
     {
       (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), 3, (yyvsp[(3) - (3)].d));
       Free((yyvsp[(1) - (3)].c));
@@ -7418,35 +7418,35 @@ yyreduce:
     break;
 
   case 149:
-#line 1512 "Gmsh.y"
+#line 1504 "Gmsh.y"
     {
       (yyval.i) = -1;
     ;}
     break;
 
   case 150:
-#line 1516 "Gmsh.y"
+#line 1508 "Gmsh.y"
     {
       (yyval.i) = (int)(yyvsp[(4) - (5)].d);
     ;}
     break;
 
   case 151:
-#line 1522 "Gmsh.y"
+#line 1514 "Gmsh.y"
     {
       for(int i = 0; i < 4; i++) (yyval.v)[i] = 0.;
     ;}
     break;
 
   case 152:
-#line 1526 "Gmsh.y"
+#line 1518 "Gmsh.y"
     {
       for(int i = 0; i < 4; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i];
     ;}
     break;
 
   case 153:
-#line 1533 "Gmsh.y"
+#line 1525 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       double x = CTX::instance()->geom.scalingFactor * (yyvsp[(6) - (7)].v)[0];
@@ -7470,7 +7470,7 @@ yyreduce:
     break;
 
   case 154:
-#line 1554 "Gmsh.y"
+#line 1546 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
@@ -7487,7 +7487,7 @@ yyreduce:
     break;
 
   case 155:
-#line 1568 "Gmsh.y"
+#line 1560 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
@@ -7504,7 +7504,7 @@ yyreduce:
     break;
 
   case 156:
-#line 1582 "Gmsh.y"
+#line 1574 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (8)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (8)].l), tags);
@@ -7542,7 +7542,7 @@ yyreduce:
     break;
 
   case 157:
-#line 1617 "Gmsh.y"
+#line 1609 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (8)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (8)].l), tags);
@@ -7583,7 +7583,7 @@ yyreduce:
     break;
 
   case 158:
-#line 1655 "Gmsh.y"
+#line 1647 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
@@ -7600,7 +7600,7 @@ yyreduce:
     break;
 
   case 159:
-#line 1669 "Gmsh.y"
+#line 1661 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
@@ -7617,7 +7617,7 @@ yyreduce:
     break;
 
   case 160:
-#line 1684 "Gmsh.y"
+#line 1676 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (11)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (11)].l), tags);
@@ -7639,7 +7639,7 @@ yyreduce:
     break;
 
   case 161:
-#line 1703 "Gmsh.y"
+#line 1695 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags);
@@ -7651,7 +7651,7 @@ yyreduce:
     break;
 
   case 162:
-#line 1712 "Gmsh.y"
+#line 1704 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
@@ -7668,7 +7668,7 @@ yyreduce:
     break;
 
   case 163:
-#line 1726 "Gmsh.y"
+#line 1718 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags);
@@ -7686,7 +7686,7 @@ yyreduce:
     break;
 
   case 164:
-#line 1741 "Gmsh.y"
+#line 1733 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags);
@@ -7703,7 +7703,7 @@ yyreduce:
     break;
 
   case 165:
-#line 1755 "Gmsh.y"
+#line 1747 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (8)].d);
       std::vector<int> wires; ListOfDouble2Vector((yyvsp[(6) - (8)].l), wires);
@@ -7725,7 +7725,7 @@ yyreduce:
     break;
 
   case 166:
-#line 1774 "Gmsh.y"
+#line 1766 "Gmsh.y"
     {
       yymsg(2, "'Ruled Surface' command is deprecated: use 'Surface' instead");
       int num = (int)(yyvsp[(4) - (9)].d);
@@ -7738,7 +7738,7 @@ yyreduce:
     break;
 
   case 167:
-#line 1784 "Gmsh.y"
+#line 1776 "Gmsh.y"
     {
       myGmshSurface = 0;
       (yyval.s).Type = 0;
@@ -7747,7 +7747,7 @@ yyreduce:
     break;
 
   case 168:
-#line 1790 "Gmsh.y"
+#line 1782 "Gmsh.y"
     {
       myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d));
       (yyval.s).Type = 0;
@@ -7756,7 +7756,7 @@ yyreduce:
     break;
 
   case 169:
-#line 1796 "Gmsh.y"
+#line 1788 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (10)].d);
       myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c), (yyvsp[(9) - (10)].c));
@@ -7766,7 +7766,7 @@ yyreduce:
     break;
 
   case 170:
-#line 1803 "Gmsh.y"
+#line 1795 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
@@ -7798,7 +7798,7 @@ yyreduce:
     break;
 
   case 171:
-#line 1832 "Gmsh.y"
+#line 1824 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
@@ -7816,7 +7816,7 @@ yyreduce:
     break;
 
   case 172:
-#line 1847 "Gmsh.y"
+#line 1839 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
@@ -7839,7 +7839,7 @@ yyreduce:
     break;
 
   case 173:
-#line 1867 "Gmsh.y"
+#line 1859 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
@@ -7863,7 +7863,7 @@ yyreduce:
     break;
 
   case 174:
-#line 1888 "Gmsh.y"
+#line 1880 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
@@ -7887,7 +7887,7 @@ yyreduce:
     break;
 
   case 175:
-#line 1909 "Gmsh.y"
+#line 1901 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
@@ -7911,7 +7911,7 @@ yyreduce:
     break;
 
   case 176:
-#line 1930 "Gmsh.y"
+#line 1922 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
@@ -7936,7 +7936,7 @@ yyreduce:
     break;
 
   case 177:
-#line 1952 "Gmsh.y"
+#line 1944 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
@@ -7961,7 +7961,7 @@ yyreduce:
     break;
 
   case 178:
-#line 1974 "Gmsh.y"
+#line 1966 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
@@ -7985,7 +7985,7 @@ yyreduce:
     break;
 
   case 179:
-#line 1995 "Gmsh.y"
+#line 1987 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
@@ -8011,7 +8011,7 @@ yyreduce:
     break;
 
   case 180:
-#line 2018 "Gmsh.y"
+#line 2010 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags);
@@ -8023,7 +8023,7 @@ yyreduce:
     break;
 
   case 181:
-#line 2028 "Gmsh.y"
+#line 2020 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (12)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (12)].l), tags);
@@ -8046,7 +8046,7 @@ yyreduce:
     break;
 
   case 182:
-#line 2048 "Gmsh.y"
+#line 2040 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags);
@@ -8064,7 +8064,7 @@ yyreduce:
     break;
 
   case 183:
-#line 2063 "Gmsh.y"
+#line 2055 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
@@ -8081,7 +8081,7 @@ yyreduce:
     break;
 
   case 184:
-#line 2077 "Gmsh.y"
+#line 2069 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       std::vector<int> wires; ListOfDouble2Vector((yyvsp[(6) - (7)].l), wires);
@@ -8100,7 +8100,7 @@ yyreduce:
     break;
 
   case 185:
-#line 2093 "Gmsh.y"
+#line 2085 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       std::vector<int> wires; ListOfDouble2Vector((yyvsp[(7) - (8)].l), wires);
@@ -8119,7 +8119,7 @@ yyreduce:
     break;
 
   case 186:
-#line 2109 "Gmsh.y"
+#line 2101 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags);
@@ -8131,7 +8131,7 @@ yyreduce:
     break;
 
   case 187:
-#line 2118 "Gmsh.y"
+#line 2110 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].i);
       int op = (yyvsp[(6) - (8)].i);
@@ -8144,7 +8144,7 @@ yyreduce:
     break;
 
   case 188:
-#line 2128 "Gmsh.y"
+#line 2120 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].i);
       int op = (yyvsp[(6) - (8)].i);
@@ -8157,7 +8157,7 @@ yyreduce:
     break;
 
   case 189:
-#line 2138 "Gmsh.y"
+#line 2130 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].i);
       int op = (yyvsp[(6) - (8)].i);
@@ -8170,7 +8170,7 @@ yyreduce:
     break;
 
   case 190:
-#line 2148 "Gmsh.y"
+#line 2140 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].i);
       int op = (yyvsp[(6) - (8)].i);
@@ -8183,7 +8183,7 @@ yyreduce:
     break;
 
   case 191:
-#line 2163 "Gmsh.y"
+#line 2155 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
@@ -8198,7 +8198,7 @@ yyreduce:
     break;
 
   case 192:
-#line 2175 "Gmsh.y"
+#line 2167 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(10) - (11)].l), dimTags);
@@ -8215,7 +8215,7 @@ yyreduce:
     break;
 
   case 193:
-#line 2189 "Gmsh.y"
+#line 2181 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
@@ -8231,7 +8231,7 @@ yyreduce:
     break;
 
   case 194:
-#line 2202 "Gmsh.y"
+#line 2194 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(8) - (9)].l), dimTags);
@@ -8247,7 +8247,7 @@ yyreduce:
     break;
 
   case 195:
-#line 2215 "Gmsh.y"
+#line 2207 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(8) - (9)].l), dimTags);
@@ -8263,7 +8263,7 @@ yyreduce:
     break;
 
   case 196:
-#line 2228 "Gmsh.y"
+#line 2220 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), inDimTags);
@@ -8303,7 +8303,7 @@ yyreduce:
     break;
 
   case 197:
-#line 2265 "Gmsh.y"
+#line 2257 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       if(factory == "OpenCASCADE"){
@@ -8325,7 +8325,7 @@ yyreduce:
     break;
 
   case 198:
-#line 2285 "Gmsh.y"
+#line 2277 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       if(factory == "OpenCASCADE"){
@@ -8347,31 +8347,31 @@ yyreduce:
     break;
 
   case 199:
-#line 2306 "Gmsh.y"
+#line 2298 "Gmsh.y"
     { (yyval.l) = (yyvsp[(1) - (1)].l); ;}
     break;
 
   case 200:
-#line 2307 "Gmsh.y"
+#line 2299 "Gmsh.y"
     { (yyval.l) = (yyvsp[(1) - (1)].l); ;}
     break;
 
   case 201:
-#line 2312 "Gmsh.y"
+#line 2304 "Gmsh.y"
     {
       (yyval.l) = List_Create(3, 3, sizeof(Shape));
     ;}
     break;
 
   case 202:
-#line 2316 "Gmsh.y"
+#line 2308 "Gmsh.y"
     {
       List_Add((yyval.l), &(yyvsp[(2) - (2)].s));
     ;}
     break;
 
   case 203:
-#line 2320 "Gmsh.y"
+#line 2312 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
 	double d;
@@ -8385,7 +8385,7 @@ yyreduce:
     break;
 
   case 204:
-#line 2331 "Gmsh.y"
+#line 2323 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
 	double d;
@@ -8399,7 +8399,7 @@ yyreduce:
     break;
 
   case 205:
-#line 2342 "Gmsh.y"
+#line 2334 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
 	double d;
@@ -8413,7 +8413,7 @@ yyreduce:
     break;
 
   case 206:
-#line 2353 "Gmsh.y"
+#line 2345 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
 	double d;
@@ -8427,7 +8427,7 @@ yyreduce:
     break;
 
   case 207:
-#line 2369 "Gmsh.y"
+#line 2361 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(7) - (8)].l)) == 4){
         int t = (int)(yyvsp[(4) - (8)].d);
@@ -8449,7 +8449,7 @@ yyreduce:
     break;
 
   case 208:
-#line 2388 "Gmsh.y"
+#line 2380 "Gmsh.y"
     {
       int t = (int)(yyvsp[(4) - (10)].d);
       if(gLevelset::find(t)){
@@ -8473,7 +8473,7 @@ yyreduce:
     break;
 
   case 209:
-#line 2410 "Gmsh.y"
+#line 2402 "Gmsh.y"
     {
       int t = (int)(yyvsp[(4) - (14)].d);
       if(gLevelset::find(t)){
@@ -8490,7 +8490,7 @@ yyreduce:
     break;
 
   case 210:
-#line 2425 "Gmsh.y"
+#line 2417 "Gmsh.y"
     {
       int t = (int)(yyvsp[(4) - (16)].d);
       if(gLevelset::find(t)){
@@ -8508,7 +8508,7 @@ yyreduce:
     break;
 
   case 211:
-#line 2440 "Gmsh.y"
+#line 2432 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(10) - (12)].l)) == 1){
         int t = (int)(yyvsp[(4) - (12)].d);
@@ -8529,7 +8529,7 @@ yyreduce:
     break;
 
   case 212:
-#line 2459 "Gmsh.y"
+#line 2451 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(12) - (14)].l)) == 1){
         int t = (int)(yyvsp[(4) - (14)].d);
@@ -8582,7 +8582,7 @@ yyreduce:
     break;
 
   case 213:
-#line 2510 "Gmsh.y"
+#line 2502 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(12) - (14)].l)) == 1){
         int t = (int)(yyvsp[(4) - (14)].d);
@@ -8605,7 +8605,7 @@ yyreduce:
     break;
 
   case 214:
-#line 2531 "Gmsh.y"
+#line 2523 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(12) - (14)].l)) == 3){
         int t = (int)(yyvsp[(4) - (14)].d);
@@ -8629,7 +8629,7 @@ yyreduce:
     break;
 
   case 215:
-#line 2553 "Gmsh.y"
+#line 2545 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(12) - (14)].l)) == 5){
         int t = (int)(yyvsp[(4) - (14)].d);
@@ -8654,7 +8654,7 @@ yyreduce:
     break;
 
   case 216:
-#line 2575 "Gmsh.y"
+#line 2567 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (8)].c), "Union")){
         int t = (int)(yyvsp[(4) - (8)].d);
@@ -8762,7 +8762,7 @@ yyreduce:
     break;
 
   case 217:
-#line 2680 "Gmsh.y"
+#line 2672 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (8)].c), "MathEval")){
         int t = (int)(yyvsp[(4) - (8)].d);
@@ -8781,7 +8781,7 @@ yyreduce:
     break;
 
   case 218:
-#line 2696 "Gmsh.y"
+#line 2688 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (6)].c), "CutMesh")){
         int t = (int)(yyvsp[(4) - (6)].d);
@@ -8814,7 +8814,7 @@ yyreduce:
     break;
 
   case 219:
-#line 2731 "Gmsh.y"
+#line 2723 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags);
@@ -8828,7 +8828,7 @@ yyreduce:
     break;
 
   case 220:
-#line 2742 "Gmsh.y"
+#line 2734 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
       GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d));
@@ -8837,7 +8837,7 @@ yyreduce:
     break;
 
   case 221:
-#line 2748 "Gmsh.y"
+#line 2740 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       if(!strcmp((yyvsp[(2) - (6)].c), "View")){
@@ -8855,7 +8855,7 @@ yyreduce:
     break;
 
   case 222:
-#line 2763 "Gmsh.y"
+#line 2755 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){
         ClearProject();
@@ -8886,7 +8886,7 @@ yyreduce:
     break;
 
   case 223:
-#line 2791 "Gmsh.y"
+#line 2783 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){
@@ -8901,7 +8901,7 @@ yyreduce:
     break;
 
   case 224:
-#line 2808 "Gmsh.y"
+#line 2800 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
@@ -8911,7 +8911,7 @@ yyreduce:
     break;
 
   case 225:
-#line 2815 "Gmsh.y"
+#line 2807 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(5) - (6)].l), dimTags);
@@ -8921,7 +8921,7 @@ yyreduce:
     break;
 
   case 226:
-#line 2827 "Gmsh.y"
+#line 2819 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
@@ -8938,7 +8938,7 @@ yyreduce:
     break;
 
   case 227:
-#line 2846 "Gmsh.y"
+#line 2838 "Gmsh.y"
     {
       std::string what = (yyvsp[(2) - (3)].c);
       setVisibility(-1, 1, false);
@@ -8947,7 +8947,7 @@ yyreduce:
     break;
 
   case 228:
-#line 2852 "Gmsh.y"
+#line 2844 "Gmsh.y"
     {
       std::string what = (yyvsp[(2) - (3)].c);
       setVisibility(-1, 0, false);
@@ -8956,7 +8956,7 @@ yyreduce:
     break;
 
   case 229:
-#line 2858 "Gmsh.y"
+#line 2850 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags);
@@ -8966,7 +8966,7 @@ yyreduce:
     break;
 
   case 230:
-#line 2865 "Gmsh.y"
+#line 2857 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
@@ -8976,7 +8976,7 @@ yyreduce:
     break;
 
   case 231:
-#line 2872 "Gmsh.y"
+#line 2864 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags);
@@ -8986,7 +8986,7 @@ yyreduce:
     break;
 
   case 232:
-#line 2879 "Gmsh.y"
+#line 2871 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
@@ -8996,7 +8996,7 @@ yyreduce:
     break;
 
   case 233:
-#line 2891 "Gmsh.y"
+#line 2883 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (3)].c), "Include")){
         std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
@@ -9072,7 +9072,7 @@ yyreduce:
     break;
 
   case 234:
-#line 2964 "Gmsh.y"
+#line 2956 "Gmsh.y"
     {
       int n = List_Nbr((yyvsp[(3) - (5)].l));
       if(n == 1){
@@ -9093,7 +9093,7 @@ yyreduce:
     break;
 
   case 235:
-#line 2982 "Gmsh.y"
+#line 2974 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){
@@ -9113,7 +9113,7 @@ yyreduce:
     break;
 
   case 236:
-#line 2999 "Gmsh.y"
+#line 2991 "Gmsh.y"
     {
 #if defined(HAVE_POST) && defined(HAVE_MESH)
       if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh")  && !strcmp((yyvsp[(3) - (7)].c), "View")){
@@ -9131,7 +9131,7 @@ yyreduce:
     break;
 
   case 237:
-#line 3014 "Gmsh.y"
+#line 3006 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){
 	SleepInSeconds((yyvsp[(2) - (3)].d));
@@ -9167,7 +9167,7 @@ yyreduce:
     break;
 
   case 238:
-#line 3047 "Gmsh.y"
+#line 3039 "Gmsh.y"
     {
 #if defined(HAVE_PLUGINS)
        try {
@@ -9182,7 +9182,7 @@ yyreduce:
     break;
 
   case 239:
-#line 3059 "Gmsh.y"
+#line 3051 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews"))
@@ -9209,14 +9209,14 @@ yyreduce:
     break;
 
   case 240:
-#line 3083 "Gmsh.y"
+#line 3075 "Gmsh.y"
     {
       Msg::Exit(0);
     ;}
     break;
 
   case 241:
-#line 3087 "Gmsh.y"
+#line 3079 "Gmsh.y"
     {
       gmsh_yyerrorstate = 999; // this will be checked when yyparse returns
       YYABORT;
@@ -9224,7 +9224,7 @@ yyreduce:
     break;
 
   case 242:
-#line 3092 "Gmsh.y"
+#line 3084 "Gmsh.y"
     {
       // force sync
       if(GModel::current()->getOCCInternals())
@@ -9234,7 +9234,7 @@ yyreduce:
     break;
 
   case 243:
-#line 3099 "Gmsh.y"
+#line 3091 "Gmsh.y"
     {
       new GModel();
       GModel::current(GModel::list.size() - 1);
@@ -9242,7 +9242,7 @@ yyreduce:
     break;
 
   case 244:
-#line 3104 "Gmsh.y"
+#line 3096 "Gmsh.y"
     {
       CTX::instance()->forcedBBox = 0;
       if(GModel::current()->getOCCInternals() &&
@@ -9255,7 +9255,7 @@ yyreduce:
     break;
 
   case 245:
-#line 3114 "Gmsh.y"
+#line 3106 "Gmsh.y"
     {
       CTX::instance()->forcedBBox = 1;
       SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d));
@@ -9263,7 +9263,7 @@ yyreduce:
     break;
 
   case 246:
-#line 3119 "Gmsh.y"
+#line 3111 "Gmsh.y"
     {
 #if defined(HAVE_OPENGL)
       drawContext::global()->draw();
@@ -9272,7 +9272,7 @@ yyreduce:
     break;
 
   case 247:
-#line 3125 "Gmsh.y"
+#line 3117 "Gmsh.y"
     {
 #if defined(HAVE_OPENGL)
      CTX::instance()->mesh.changed = ENT_ALL;
@@ -9283,21 +9283,21 @@ yyreduce:
     break;
 
   case 248:
-#line 3133 "Gmsh.y"
+#line 3125 "Gmsh.y"
     {
       GModel::current()->createTopologyFromMesh();
     ;}
     break;
 
   case 249:
-#line 3137 "Gmsh.y"
+#line 3129 "Gmsh.y"
     {
       GModel::current()->createTopologyFromMesh(1);
     ;}
     break;
 
   case 250:
-#line 3141 "Gmsh.y"
+#line 3133 "Gmsh.y"
     {
       if(GModel::current()->getOCCInternals() &&
          GModel::current()->getOCCInternals()->getChanged())
@@ -9309,7 +9309,7 @@ yyreduce:
     break;
 
   case 251:
-#line 3151 "Gmsh.y"
+#line 3143 "Gmsh.y"
     {
       int lock = CTX::instance()->lock;
       CTX::instance()->lock = 0;
@@ -9370,7 +9370,7 @@ yyreduce:
     break;
 
   case 252:
-#line 3214 "Gmsh.y"
+#line 3206 "Gmsh.y"
     {
 #if defined(HAVE_POPPLER)
        std::vector<int> is;
@@ -9385,7 +9385,7 @@ yyreduce:
     break;
 
   case 253:
-#line 3230 "Gmsh.y"
+#line 3222 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d);
       LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d);
@@ -9405,7 +9405,7 @@ yyreduce:
     break;
 
   case 254:
-#line 3247 "Gmsh.y"
+#line 3239 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d);
       LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d);
@@ -9425,7 +9425,7 @@ yyreduce:
     break;
 
   case 255:
-#line 3264 "Gmsh.y"
+#line 3256 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d);
       LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d);
@@ -9450,7 +9450,7 @@ yyreduce:
     break;
 
   case 256:
-#line 3286 "Gmsh.y"
+#line 3278 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d);
       LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d);
@@ -9475,7 +9475,7 @@ yyreduce:
     break;
 
   case 257:
-#line 3308 "Gmsh.y"
+#line 3300 "Gmsh.y"
     {
       if(ImbricatedLoop <= 0){
 	yymsg(0, "Invalid For/EndFor loop");
@@ -9513,7 +9513,7 @@ yyreduce:
     break;
 
   case 258:
-#line 3343 "Gmsh.y"
+#line 3335 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->createFunction
          (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno))
@@ -9524,7 +9524,7 @@ yyreduce:
     break;
 
   case 259:
-#line 3351 "Gmsh.y"
+#line 3343 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->createFunction
          (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno))
@@ -9535,7 +9535,7 @@ yyreduce:
     break;
 
   case 260:
-#line 3359 "Gmsh.y"
+#line 3351 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->leaveFunction
          (&gmsh_yyin, gmsh_yyname, gmsh_yylineno))
@@ -9544,7 +9544,7 @@ yyreduce:
     break;
 
   case 261:
-#line 3365 "Gmsh.y"
+#line 3357 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->enterFunction
          (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno))
@@ -9554,7 +9554,7 @@ yyreduce:
     break;
 
   case 262:
-#line 3372 "Gmsh.y"
+#line 3364 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->enterFunction
          (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno))
@@ -9564,7 +9564,7 @@ yyreduce:
     break;
 
   case 263:
-#line 3379 "Gmsh.y"
+#line 3371 "Gmsh.y"
     {
       ImbricatedTest++;
       if(ImbricatedTest > MAX_RECUR_TESTS-1){
@@ -9587,7 +9587,7 @@ yyreduce:
     break;
 
   case 264:
-#line 3399 "Gmsh.y"
+#line 3391 "Gmsh.y"
     {
       if(ImbricatedTest > 0){
         if (statusImbricatedTests[ImbricatedTest]){
@@ -9616,7 +9616,7 @@ yyreduce:
     break;
 
   case 265:
-#line 3425 "Gmsh.y"
+#line 3417 "Gmsh.y"
     {
       if(ImbricatedTest > 0){
         if(statusImbricatedTests[ImbricatedTest]){
@@ -9631,7 +9631,7 @@ yyreduce:
     break;
 
   case 266:
-#line 3437 "Gmsh.y"
+#line 3429 "Gmsh.y"
     {
       ImbricatedTest--;
       if(ImbricatedTest < 0)
@@ -9640,7 +9640,7 @@ yyreduce:
     break;
 
   case 267:
-#line 3449 "Gmsh.y"
+#line 3441 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), inDimTags);
@@ -9659,7 +9659,7 @@ yyreduce:
     break;
 
   case 268:
-#line 3465 "Gmsh.y"
+#line 3457 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(10) - (11)].l), inDimTags);
@@ -9678,7 +9678,7 @@ yyreduce:
     break;
 
   case 269:
-#line 3481 "Gmsh.y"
+#line 3473 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(12) - (13)].l), inDimTags);
@@ -9697,7 +9697,7 @@ yyreduce:
     break;
 
   case 270:
-#line 3497 "Gmsh.y"
+#line 3489 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
@@ -9706,7 +9706,7 @@ yyreduce:
     break;
 
   case 271:
-#line 3503 "Gmsh.y"
+#line 3495 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(4) - (7)].l), inDimTags);
@@ -9725,7 +9725,7 @@ yyreduce:
     break;
 
   case 272:
-#line 3519 "Gmsh.y"
+#line 3511 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
@@ -9734,7 +9734,7 @@ yyreduce:
     break;
 
   case 273:
-#line 3525 "Gmsh.y"
+#line 3517 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(10) - (13)].l), inDimTags);
@@ -9755,7 +9755,7 @@ yyreduce:
     break;
 
   case 274:
-#line 3543 "Gmsh.y"
+#line 3535 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
@@ -9764,7 +9764,7 @@ yyreduce:
     break;
 
   case 275:
-#line 3549 "Gmsh.y"
+#line 3541 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(12) - (15)].l), inDimTags);
@@ -9783,7 +9783,7 @@ yyreduce:
     break;
 
   case 276:
-#line 3565 "Gmsh.y"
+#line 3557 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
@@ -9792,7 +9792,7 @@ yyreduce:
     break;
 
   case 277:
-#line 3571 "Gmsh.y"
+#line 3563 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(3) - (6)].l), inDimTags);
@@ -9810,7 +9810,7 @@ yyreduce:
     break;
 
   case 278:
-#line 3586 "Gmsh.y"
+#line 3578 "Gmsh.y"
     {
       std::vector<std::pair<int, int> > inDimTags, outDimTags;
       ListOfShapes2VectorOfPairs((yyvsp[(3) - (9)].l), inDimTags);
@@ -9827,7 +9827,7 @@ yyreduce:
     break;
 
   case 279:
-#line 3600 "Gmsh.y"
+#line 3592 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){
@@ -9845,7 +9845,7 @@ yyreduce:
     break;
 
   case 280:
-#line 3615 "Gmsh.y"
+#line 3607 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){
@@ -9863,7 +9863,7 @@ yyreduce:
     break;
 
   case 281:
-#line 3630 "Gmsh.y"
+#line 3622 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){
@@ -9884,19 +9884,19 @@ yyreduce:
     break;
 
   case 282:
-#line 3651 "Gmsh.y"
+#line 3643 "Gmsh.y"
     {
     ;}
     break;
 
   case 283:
-#line 3654 "Gmsh.y"
+#line 3646 "Gmsh.y"
     {
     ;}
     break;
 
   case 284:
-#line 3660 "Gmsh.y"
+#line 3652 "Gmsh.y"
     {
       int n = (int)fabs((yyvsp[(3) - (5)].d));
       if(n){ // we accept n==0 to easily disable layers
@@ -9911,7 +9911,7 @@ yyreduce:
     break;
 
   case 285:
-#line 3672 "Gmsh.y"
+#line 3664 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = true;
       extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l));
@@ -9934,56 +9934,56 @@ yyreduce:
     break;
 
   case 286:
-#line 3692 "Gmsh.y"
+#line 3684 "Gmsh.y"
     {
       extr.mesh.ScaleLast = true;
     ;}
     break;
 
   case 287:
-#line 3696 "Gmsh.y"
+#line 3688 "Gmsh.y"
     {
       extr.mesh.Recombine = true;
     ;}
     break;
 
   case 288:
-#line 3700 "Gmsh.y"
+#line 3692 "Gmsh.y"
     {
       extr.mesh.Recombine = (yyvsp[(2) - (3)].d) ? true : false;
     ;}
     break;
 
   case 289:
-#line 3704 "Gmsh.y"
+#line 3696 "Gmsh.y"
     {
       extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1;
     ;}
     break;
 
   case 290:
-#line 3708 "Gmsh.y"
+#line 3700 "Gmsh.y"
     {
       extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1_RECOMB;
     ;}
     break;
 
   case 291:
-#line 3712 "Gmsh.y"
+#line 3704 "Gmsh.y"
     {
       extr.mesh.QuadToTri = QUADTRI_NOVERTS_1;
     ;}
     break;
 
   case 292:
-#line 3716 "Gmsh.y"
+#line 3708 "Gmsh.y"
     {
       extr.mesh.QuadToTri = QUADTRI_NOVERTS_1_RECOMB;
     ;}
     break;
 
   case 293:
-#line 3720 "Gmsh.y"
+#line 3712 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (9)].l), tags);
       int num = (int)(yyvsp[(3) - (9)].d);
@@ -9995,7 +9995,7 @@ yyreduce:
     break;
 
   case 294:
-#line 3729 "Gmsh.y"
+#line 3721 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (6)].c), "Index"))
         extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d);
@@ -10006,47 +10006,47 @@ yyreduce:
     break;
 
   case 295:
-#line 3741 "Gmsh.y"
+#line 3733 "Gmsh.y"
     { (yyval.i) = OCC_Internals::Union; ;}
     break;
 
   case 296:
-#line 3742 "Gmsh.y"
+#line 3734 "Gmsh.y"
     { (yyval.i) = OCC_Internals::Intersection; ;}
     break;
 
   case 297:
-#line 3743 "Gmsh.y"
+#line 3735 "Gmsh.y"
     { (yyval.i) = OCC_Internals::Difference; ;}
     break;
 
   case 298:
-#line 3744 "Gmsh.y"
+#line 3736 "Gmsh.y"
     { (yyval.i) = OCC_Internals::Section; ;}
     break;
 
   case 299:
-#line 3745 "Gmsh.y"
+#line 3737 "Gmsh.y"
     { (yyval.i) = OCC_Internals::Fragments; ;}
     break;
 
   case 300:
-#line 3749 "Gmsh.y"
+#line 3741 "Gmsh.y"
     { (yyval.i) = 0; ;}
     break;
 
   case 301:
-#line 3750 "Gmsh.y"
+#line 3742 "Gmsh.y"
     { (yyval.i) = 1; ;}
     break;
 
   case 302:
-#line 3751 "Gmsh.y"
+#line 3743 "Gmsh.y"
     { (yyval.i) = (yyvsp[(2) - (3)].d); ;}
     break;
 
   case 303:
-#line 3756 "Gmsh.y"
+#line 3748 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){
@@ -10066,7 +10066,7 @@ yyreduce:
     break;
 
   case 304:
-#line 3773 "Gmsh.y"
+#line 3765 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){
@@ -10083,7 +10083,7 @@ yyreduce:
     break;
 
   case 305:
-#line 3791 "Gmsh.y"
+#line 3783 "Gmsh.y"
     {
       if(factory == "OpenCASCADE" && GModel::current()->getOCCInternals()){
         std::vector<std::pair<int, int> > object, tool, out;
@@ -10098,14 +10098,14 @@ yyreduce:
     break;
 
   case 306:
-#line 3806 "Gmsh.y"
+#line 3798 "Gmsh.y"
     {
       (yyval.v)[0] = (yyval.v)[1] = 1.;
     ;}
     break;
 
   case 307:
-#line 3810 "Gmsh.y"
+#line 3802 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power"))
         (yyval.v)[0] = 1.;
@@ -10121,14 +10121,14 @@ yyreduce:
     break;
 
   case 308:
-#line 3825 "Gmsh.y"
+#line 3817 "Gmsh.y"
     {
       (yyval.i) = -1; // left
     ;}
     break;
 
   case 309:
-#line 3829 "Gmsh.y"
+#line 3821 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (1)].c), "Right"))
         (yyval.i) = 1;
@@ -10145,49 +10145,49 @@ yyreduce:
     break;
 
   case 310:
-#line 3845 "Gmsh.y"
+#line 3837 "Gmsh.y"
     {
      (yyval.l) = List_Create(1, 1, sizeof(double));
    ;}
     break;
 
   case 311:
-#line 3849 "Gmsh.y"
+#line 3841 "Gmsh.y"
     {
      (yyval.l) = (yyvsp[(2) - (2)].l);
    ;}
     break;
 
   case 312:
-#line 3854 "Gmsh.y"
+#line 3846 "Gmsh.y"
     {
       (yyval.i) = 45;
     ;}
     break;
 
   case 313:
-#line 3858 "Gmsh.y"
+#line 3850 "Gmsh.y"
     {
       (yyval.i) = (int)(yyvsp[(2) - (2)].d);
     ;}
     break;
 
   case 314:
-#line 3864 "Gmsh.y"
+#line 3856 "Gmsh.y"
     {
       (yyval.l) = List_Create(1, 1, sizeof(double));
     ;}
     break;
 
   case 315:
-#line 3868 "Gmsh.y"
+#line 3860 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (2)].l);
     ;}
     break;
 
   case 316:
-#line 3875 "Gmsh.y"
+#line 3867 "Gmsh.y"
     {
       // mesh sizes at vertices are stored in internal CAD data, as they can be
       // specified during vertex creation and copied around during CAD
@@ -10207,7 +10207,7 @@ yyreduce:
     break;
 
   case 317:
-#line 3892 "Gmsh.y"
+#line 3884 "Gmsh.y"
     {
       // transfinite constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10251,7 +10251,7 @@ yyreduce:
     break;
 
   case 318:
-#line 3933 "Gmsh.y"
+#line 3925 "Gmsh.y"
     {
       // transfinite constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10298,7 +10298,7 @@ yyreduce:
     break;
 
   case 319:
-#line 3977 "Gmsh.y"
+#line 3969 "Gmsh.y"
     {
       // transfinite constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10340,7 +10340,7 @@ yyreduce:
     break;
 
   case 320:
-#line 4016 "Gmsh.y"
+#line 4008 "Gmsh.y"
     {
       // transfinite constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10368,7 +10368,7 @@ yyreduce:
     break;
 
   case 321:
-#line 4041 "Gmsh.y"
+#line 4033 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (8)].l)); i++){
 	double d;
@@ -10380,7 +10380,7 @@ yyreduce:
     break;
 
   case 322:
-#line 4050 "Gmsh.y"
+#line 4042 "Gmsh.y"
     {
       // recombine constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10413,7 +10413,7 @@ yyreduce:
     break;
 
   case 323:
-#line 4080 "Gmsh.y"
+#line 4072 "Gmsh.y"
     {
       // recombine constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10442,7 +10442,7 @@ yyreduce:
     break;
 
   case 324:
-#line 4106 "Gmsh.y"
+#line 4098 "Gmsh.y"
     {
       // smoothing constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10471,7 +10471,7 @@ yyreduce:
     break;
 
   case 325:
-#line 4133 "Gmsh.y"
+#line 4125 "Gmsh.y"
     {
       if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){
         yymsg(0, "Number of master lines (%d) different from number of "
@@ -10505,7 +10505,7 @@ yyreduce:
     break;
 
   case 326:
-#line 4165 "Gmsh.y"
+#line 4157 "Gmsh.y"
     {
       if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){
         yymsg(0, "Number of master faces (%d) different from number of "
@@ -10534,7 +10534,7 @@ yyreduce:
     break;
 
   case 327:
-#line 4192 "Gmsh.y"
+#line 4184 "Gmsh.y"
     {
       if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){
         yymsg(0, "Number of master edges (%d) different from number of "
@@ -10562,7 +10562,7 @@ yyreduce:
     break;
 
   case 328:
-#line 4218 "Gmsh.y"
+#line 4210 "Gmsh.y"
     {
       if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){
         yymsg(0, "Number of master faces (%d) different from number of "
@@ -10590,7 +10590,7 @@ yyreduce:
     break;
 
   case 329:
-#line 4244 "Gmsh.y"
+#line 4236 "Gmsh.y"
     {
       if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){
         yymsg(0, "Number of master edges (%d) different from number of "
@@ -10618,7 +10618,7 @@ yyreduce:
     break;
 
   case 330:
-#line 4270 "Gmsh.y"
+#line 4262 "Gmsh.y"
     {
       if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){
         yymsg(0, "Number of master faces (%d) different from number of "
@@ -10646,7 +10646,7 @@ yyreduce:
     break;
 
   case 331:
-#line 4296 "Gmsh.y"
+#line 4288 "Gmsh.y"
     {
       if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l))){
         yymsg(0, "Number of master surface edges (%d) different from number of "
@@ -10670,7 +10670,7 @@ yyreduce:
     break;
 
   case 332:
-#line 4317 "Gmsh.y"
+#line 4309 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags);
       addEmbedded(0, tags, 2, (int)(yyvsp[(8) - (10)].d));
@@ -10679,7 +10679,7 @@ yyreduce:
     break;
 
   case 333:
-#line 4323 "Gmsh.y"
+#line 4315 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags);
       addEmbedded(1, tags, 2, (int)(yyvsp[(8) - (10)].d));
@@ -10688,7 +10688,7 @@ yyreduce:
     break;
 
   case 334:
-#line 4329 "Gmsh.y"
+#line 4321 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags);
       addEmbedded(0, tags, 3, (int)(yyvsp[(8) - (10)].d));
@@ -10697,7 +10697,7 @@ yyreduce:
     break;
 
   case 335:
-#line 4335 "Gmsh.y"
+#line 4327 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags);
       addEmbedded(1, tags, 3, (int)(yyvsp[(8) - (10)].d));
@@ -10706,7 +10706,7 @@ yyreduce:
     break;
 
   case 336:
-#line 4341 "Gmsh.y"
+#line 4333 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags);
       addEmbedded(2, tags, 3, (int)(yyvsp[(8) - (10)].d));
@@ -10715,7 +10715,7 @@ yyreduce:
     break;
 
   case 337:
-#line 4347 "Gmsh.y"
+#line 4339 "Gmsh.y"
     {
       // reverse mesh constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10744,7 +10744,7 @@ yyreduce:
     break;
 
   case 338:
-#line 4373 "Gmsh.y"
+#line 4365 "Gmsh.y"
     {
       // reverse mesh constraints are stored in GEO internals in addition to
       // GModel, as they can be copied around during GEO operations
@@ -10773,7 +10773,7 @@ yyreduce:
     break;
 
   case 339:
-#line 4399 "Gmsh.y"
+#line 4391 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (4)].l)){
         for(GModel::viter it = GModel::current()->firstVertex();
@@ -10793,7 +10793,7 @@ yyreduce:
     break;
 
   case 340:
-#line 4416 "Gmsh.y"
+#line 4408 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (4)].l)){
         for(GModel::eiter it = GModel::current()->firstEdge();
@@ -10813,7 +10813,7 @@ yyreduce:
     break;
 
   case 341:
-#line 4433 "Gmsh.y"
+#line 4425 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (4)].l)){
         for(GModel::fiter it = GModel::current()->firstFace();
@@ -10833,7 +10833,7 @@ yyreduce:
     break;
 
   case 342:
-#line 4450 "Gmsh.y"
+#line 4442 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
 	double dnum;
@@ -10848,7 +10848,7 @@ yyreduce:
     break;
 
   case 343:
-#line 4462 "Gmsh.y"
+#line 4454 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags);
       GModel::current()->getGEOInternals()->setCompoundMesh(1, tags);
@@ -10857,7 +10857,7 @@ yyreduce:
     break;
 
   case 344:
-#line 4468 "Gmsh.y"
+#line 4460 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags);
       GModel::current()->getGEOInternals()->setCompoundMesh(2, tags);
@@ -10866,7 +10866,7 @@ yyreduce:
     break;
 
   case 345:
-#line 4474 "Gmsh.y"
+#line 4466 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags);
       GModel::current()->getGEOInternals()->setCompoundMesh(3, tags);
@@ -10875,14 +10875,14 @@ yyreduce:
     break;
 
   case 346:
-#line 4486 "Gmsh.y"
+#line 4478 "Gmsh.y"
     {
       GModel::current()->getGEOInternals()->removeAllDuplicates();
     ;}
     break;
 
   case 347:
-#line 4490 "Gmsh.y"
+#line 4482 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (3)].c), "Geometry"))
         GModel::current()->getGEOInternals()->removeAllDuplicates();
@@ -10895,7 +10895,7 @@ yyreduce:
     break;
 
   case 348:
-#line 4500 "Gmsh.y"
+#line 4492 "Gmsh.y"
     {
       std::vector<int> tags; ListOfDouble2Vector((yyvsp[(4) - (6)].l), tags);
       GModel::current()->getGEOInternals()->mergeVertices(tags);
@@ -10904,22 +10904,22 @@ yyreduce:
     break;
 
   case 349:
-#line 4510 "Gmsh.y"
+#line 4502 "Gmsh.y"
     { (yyval.c) = (char*)"Homology"; ;}
     break;
 
   case 350:
-#line 4511 "Gmsh.y"
+#line 4503 "Gmsh.y"
     { (yyval.c) = (char*)"Cohomology"; ;}
     break;
 
   case 351:
-#line 4512 "Gmsh.y"
+#line 4504 "Gmsh.y"
     { (yyval.c) = (char*)"Betti"; ;}
     break;
 
   case 352:
-#line 4517 "Gmsh.y"
+#line 4509 "Gmsh.y"
     {
       std::vector<int> domain, subdomain, dim;
       for(int i = 0; i < 4; i++) dim.push_back(i);
@@ -10928,7 +10928,7 @@ yyreduce:
     break;
 
   case 353:
-#line 4523 "Gmsh.y"
+#line 4515 "Gmsh.y"
     {
       std::vector<int> domain, subdomain, dim;
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){
@@ -10943,7 +10943,7 @@ yyreduce:
     break;
 
   case 354:
-#line 4535 "Gmsh.y"
+#line 4527 "Gmsh.y"
     {
       std::vector<int> domain, subdomain, dim;
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){
@@ -10964,7 +10964,7 @@ yyreduce:
     break;
 
   case 355:
-#line 4553 "Gmsh.y"
+#line 4545 "Gmsh.y"
     {
       std::vector<int> domain, subdomain, dim;
       for(int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++){
@@ -10990,47 +10990,47 @@ yyreduce:
     break;
 
   case 356:
-#line 4580 "Gmsh.y"
+#line 4572 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (1)].d);           ;}
     break;
 
   case 357:
-#line 4581 "Gmsh.y"
+#line 4573 "Gmsh.y"
     { (yyval.d) = (yyvsp[(2) - (3)].d);           ;}
     break;
 
   case 358:
-#line 4582 "Gmsh.y"
+#line 4574 "Gmsh.y"
     { (yyval.d) = -(yyvsp[(2) - (2)].d);          ;}
     break;
 
   case 359:
-#line 4583 "Gmsh.y"
+#line 4575 "Gmsh.y"
     { (yyval.d) = (yyvsp[(2) - (2)].d);           ;}
     break;
 
   case 360:
-#line 4584 "Gmsh.y"
+#line 4576 "Gmsh.y"
     { (yyval.d) = !(yyvsp[(2) - (2)].d);          ;}
     break;
 
   case 361:
-#line 4585 "Gmsh.y"
+#line 4577 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 362:
-#line 4586 "Gmsh.y"
+#line 4578 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 363:
-#line 4587 "Gmsh.y"
+#line 4579 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 364:
-#line 4589 "Gmsh.y"
+#line 4581 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (3)].d))
 	yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));
@@ -11040,237 +11040,237 @@ yyreduce:
     break;
 
   case 365:
-#line 4595 "Gmsh.y"
+#line 4587 "Gmsh.y"
     { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d);  ;}
     break;
 
   case 366:
-#line 4596 "Gmsh.y"
+#line 4588 "Gmsh.y"
     { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));  ;}
     break;
 
   case 367:
-#line 4597 "Gmsh.y"
+#line 4589 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 368:
-#line 4598 "Gmsh.y"
+#line 4590 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 369:
-#line 4599 "Gmsh.y"
+#line 4591 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 370:
-#line 4600 "Gmsh.y"
+#line 4592 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 371:
-#line 4601 "Gmsh.y"
+#line 4593 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 372:
-#line 4602 "Gmsh.y"
+#line 4594 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 373:
-#line 4603 "Gmsh.y"
+#line 4595 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 374:
-#line 4604 "Gmsh.y"
+#line 4596 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 375:
-#line 4605 "Gmsh.y"
+#line 4597 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;}
     break;
 
   case 376:
-#line 4606 "Gmsh.y"
+#line 4598 "Gmsh.y"
     { (yyval.d) = exp((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 377:
-#line 4607 "Gmsh.y"
+#line 4599 "Gmsh.y"
     { (yyval.d) = log((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 378:
-#line 4608 "Gmsh.y"
+#line 4600 "Gmsh.y"
     { (yyval.d) = log10((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 379:
-#line 4609 "Gmsh.y"
+#line 4601 "Gmsh.y"
     { (yyval.d) = sqrt((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 380:
-#line 4610 "Gmsh.y"
+#line 4602 "Gmsh.y"
     { (yyval.d) = sin((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 381:
-#line 4611 "Gmsh.y"
+#line 4603 "Gmsh.y"
     { (yyval.d) = asin((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 382:
-#line 4612 "Gmsh.y"
+#line 4604 "Gmsh.y"
     { (yyval.d) = cos((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 383:
-#line 4613 "Gmsh.y"
+#line 4605 "Gmsh.y"
     { (yyval.d) = acos((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 384:
-#line 4614 "Gmsh.y"
+#line 4606 "Gmsh.y"
     { (yyval.d) = tan((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 385:
-#line 4615 "Gmsh.y"
+#line 4607 "Gmsh.y"
     { (yyval.d) = atan((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 386:
-#line 4616 "Gmsh.y"
+#line 4608 "Gmsh.y"
     { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}
     break;
 
   case 387:
-#line 4617 "Gmsh.y"
+#line 4609 "Gmsh.y"
     { (yyval.d) = sinh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 388:
-#line 4618 "Gmsh.y"
+#line 4610 "Gmsh.y"
     { (yyval.d) = cosh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 389:
-#line 4619 "Gmsh.y"
+#line 4611 "Gmsh.y"
     { (yyval.d) = tanh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 390:
-#line 4620 "Gmsh.y"
+#line 4612 "Gmsh.y"
     { (yyval.d) = fabs((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 391:
-#line 4621 "Gmsh.y"
+#line 4613 "Gmsh.y"
     { (yyval.d) = std::abs((yyvsp[(3) - (4)].d)); ;}
     break;
 
   case 392:
-#line 4622 "Gmsh.y"
+#line 4614 "Gmsh.y"
     { (yyval.d) = floor((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 393:
-#line 4623 "Gmsh.y"
+#line 4615 "Gmsh.y"
     { (yyval.d) = ceil((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 394:
-#line 4624 "Gmsh.y"
+#line 4616 "Gmsh.y"
     { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;}
     break;
 
   case 395:
-#line 4625 "Gmsh.y"
+#line 4617 "Gmsh.y"
     { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 396:
-#line 4626 "Gmsh.y"
+#line 4618 "Gmsh.y"
     { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 397:
-#line 4627 "Gmsh.y"
+#line 4619 "Gmsh.y"
     { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 398:
-#line 4628 "Gmsh.y"
+#line 4620 "Gmsh.y"
     { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;}
     break;
 
   case 399:
-#line 4637 "Gmsh.y"
+#line 4629 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (1)].d); ;}
     break;
 
   case 400:
-#line 4638 "Gmsh.y"
+#line 4630 "Gmsh.y"
     { (yyval.d) = 3.141592653589793; ;}
     break;
 
   case 401:
-#line 4639 "Gmsh.y"
+#line 4631 "Gmsh.y"
     { (yyval.d) = (double)ImbricatedTest; ;}
     break;
 
   case 402:
-#line 4640 "Gmsh.y"
+#line 4632 "Gmsh.y"
     { (yyval.d) = Msg::GetCommRank(); ;}
     break;
 
   case 403:
-#line 4641 "Gmsh.y"
+#line 4633 "Gmsh.y"
     { (yyval.d) = Msg::GetCommSize(); ;}
     break;
 
   case 404:
-#line 4642 "Gmsh.y"
+#line 4634 "Gmsh.y"
     { (yyval.d) = GetGmshMajorVersion(); ;}
     break;
 
   case 405:
-#line 4643 "Gmsh.y"
+#line 4635 "Gmsh.y"
     { (yyval.d) = GetGmshMinorVersion(); ;}
     break;
 
   case 406:
-#line 4644 "Gmsh.y"
+#line 4636 "Gmsh.y"
     { (yyval.d) = GetGmshPatchVersion(); ;}
     break;
 
   case 407:
-#line 4645 "Gmsh.y"
+#line 4637 "Gmsh.y"
     { (yyval.d) = Cpu(); ;}
     break;
 
   case 408:
-#line 4646 "Gmsh.y"
+#line 4638 "Gmsh.y"
     { (yyval.d) = GetMemoryUsage()/1024./1024.; ;}
     break;
 
   case 409:
-#line 4647 "Gmsh.y"
+#line 4639 "Gmsh.y"
     { (yyval.d) = TotalRam(); ;}
     break;
 
   case 410:
-#line 4652 "Gmsh.y"
+#line 4644 "Gmsh.y"
     { floatOptions.clear(); charOptions.clear(); ;}
     break;
 
   case 411:
-#line 4654 "Gmsh.y"
+#line 4646 "Gmsh.y"
     {
       std::vector<double> val(1, (yyvsp[(3) - (6)].d));
       Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions);
@@ -11279,12 +11279,12 @@ yyreduce:
     break;
 
   case 412:
-#line 4660 "Gmsh.y"
+#line 4652 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (1)].d); ;}
     break;
 
   case 413:
-#line 4662 "Gmsh.y"
+#line 4654 "Gmsh.y"
     {
       (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (4)].c));
       Free((yyvsp[(3) - (4)].c));
@@ -11292,7 +11292,7 @@ yyreduce:
     break;
 
   case 414:
-#line 4667 "Gmsh.y"
+#line 4659 "Gmsh.y"
     {
       (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d));
       Free((yyvsp[(3) - (6)].c));
@@ -11300,7 +11300,7 @@ yyreduce:
     break;
 
   case 415:
-#line 4673 "Gmsh.y"
+#line 4665 "Gmsh.y"
     {
       if(gmsh_yysymbols.count((yyvsp[(1) - (1)].c2).char2)){
         gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (1)].c2).char2]);
@@ -11327,7 +11327,7 @@ yyreduce:
     break;
 
   case 416:
-#line 4697 "Gmsh.y"
+#line 4689 "Gmsh.y"
     {
       int index = (int)(yyvsp[(3) - (4)].d);
       if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){
@@ -11348,7 +11348,7 @@ yyreduce:
     break;
 
   case 417:
-#line 4715 "Gmsh.y"
+#line 4707 "Gmsh.y"
     {
       int index = (int)(yyvsp[(3) - (4)].d);
       if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){
@@ -11369,7 +11369,7 @@ yyreduce:
     break;
 
   case 418:
-#line 4733 "Gmsh.y"
+#line 4725 "Gmsh.y"
     {
       (yyval.d) = gmsh_yysymbols.count((yyvsp[(3) - (4)].c));
       Free((yyvsp[(3) - (4)].c));
@@ -11377,7 +11377,7 @@ yyreduce:
     break;
 
   case 419:
-#line 4738 "Gmsh.y"
+#line 4730 "Gmsh.y"
     {
       std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c));
       (yyval.d) = !StatFile(tmp);
@@ -11386,7 +11386,7 @@ yyreduce:
     break;
 
   case 420:
-#line 4744 "Gmsh.y"
+#line 4736 "Gmsh.y"
     {
       if(gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){
         gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (4)].c)]);
@@ -11404,7 +11404,7 @@ yyreduce:
     break;
 
   case 421:
-#line 4760 "Gmsh.y"
+#line 4752 "Gmsh.y"
     {
       std::string struct_namespace((yyvsp[(2) - (3)].c));
       (yyval.d) = (double)nameSpaces[struct_namespace].size();
@@ -11413,7 +11413,7 @@ yyreduce:
     break;
 
   case 422:
-#line 4766 "Gmsh.y"
+#line 4758 "Gmsh.y"
     {
       std::string struct_namespace(std::string(""));
       (yyval.d) = (double)nameSpaces[struct_namespace].size();
@@ -11421,7 +11421,7 @@ yyreduce:
     break;
 
   case 423:
-#line 4772 "Gmsh.y"
+#line 4764 "Gmsh.y"
     {
       if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){
 	yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c));
@@ -11443,7 +11443,7 @@ yyreduce:
     break;
 
   case 424:
-#line 4791 "Gmsh.y"
+#line 4783 "Gmsh.y"
     {
       int index = (int)(yyvsp[(3) - (5)].d);
       if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){
@@ -11466,7 +11466,7 @@ yyreduce:
     break;
 
   case 425:
-#line 4812 "Gmsh.y"
+#line 4804 "Gmsh.y"
     {
       int index = (int)(yyvsp[(3) - (5)].d);
       if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){
@@ -11489,7 +11489,7 @@ yyreduce:
     break;
 
   case 426:
-#line 4845 "Gmsh.y"
+#line 4837 "Gmsh.y"
     {
       (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(NULL, (yyvsp[(1) - (3)].c), (yyvsp[(3) - (3)].c));
       /*
@@ -11516,12 +11516,14 @@ yyreduce:
     break;
 
   case 427:
-#line 4869 "Gmsh.y"
-    { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c)); ;}
+#line 4861 "Gmsh.y"
+    {
+      (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c));
+    ;}
     break;
 
   case 428:
-#line 4872 "Gmsh.y"
+#line 4865 "Gmsh.y"
     {
       NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d));
       Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c));
@@ -11529,7 +11531,7 @@ yyreduce:
     break;
 
   case 429:
-#line 4878 "Gmsh.y"
+#line 4870 "Gmsh.y"
     {
       double d = 0.;
       if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){
@@ -11542,7 +11544,7 @@ yyreduce:
     break;
 
   case 430:
-#line 4889 "Gmsh.y"
+#line 4880 "Gmsh.y"
     {
       double d = 0.;
       if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){
@@ -11555,7 +11557,7 @@ yyreduce:
     break;
 
   case 431:
-#line 4899 "Gmsh.y"
+#line 4890 "Gmsh.y"
     {
       (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d));
       Free((yyvsp[(3) - (6)].c));
@@ -11563,7 +11565,7 @@ yyreduce:
     break;
 
   case 432:
-#line 4904 "Gmsh.y"
+#line 4895 "Gmsh.y"
     {
       int matches = 0;
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
@@ -11577,7 +11579,7 @@ yyreduce:
     break;
 
   case 433:
-#line 4915 "Gmsh.y"
+#line 4906 "Gmsh.y"
     {
       std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c));
       if(s.find(substr) != std::string::npos)
@@ -11589,7 +11591,7 @@ yyreduce:
     break;
 
   case 434:
-#line 4924 "Gmsh.y"
+#line 4915 "Gmsh.y"
     {
       (yyval.d) = strlen((yyvsp[(3) - (4)].c));
       Free((yyvsp[(3) - (4)].c));
@@ -11597,7 +11599,7 @@ yyreduce:
     break;
 
   case 435:
-#line 4929 "Gmsh.y"
+#line 4920 "Gmsh.y"
     {
       (yyval.d) = strcmp((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c));
       Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c));
@@ -11605,7 +11607,7 @@ yyreduce:
     break;
 
   case 436:
-#line 4934 "Gmsh.y"
+#line 4925 "Gmsh.y"
     {
       int align = 0, font = 0, fontsize = CTX::instance()->glFontSize;
       if(List_Nbr((yyvsp[(3) - (4)].l)) % 2){
@@ -11632,12 +11634,12 @@ yyreduce:
     break;
 
   case 437:
-#line 4962 "Gmsh.y"
+#line 4953 "Gmsh.y"
     { floatOptions.clear(); charOptions.clear(); ;}
     break;
 
   case 438:
-#line 4964 "Gmsh.y"
+#line 4955 "Gmsh.y"
     {
       std::string struct_namespace((yyvsp[(2) - (8)].c2).char1? (yyvsp[(2) - (8)].c2).char1 : std::string("")),
         struct_name((yyvsp[(2) - (8)].c2).char2);
@@ -11665,105 +11667,105 @@ yyreduce:
     break;
 
   case 439:
-#line 4992 "Gmsh.y"
+#line 4983 "Gmsh.y"
     { (yyval.c2).char1 = NULL; (yyval.c2).char2 = (yyvsp[(1) - (1)].c); ;}
     break;
 
   case 440:
-#line 4994 "Gmsh.y"
+#line 4985 "Gmsh.y"
     { (yyval.c2).char1 = (yyvsp[(1) - (3)].c); (yyval.c2).char2 = (yyvsp[(3) - (3)].c); ;}
     break;
 
   case 441:
-#line 4999 "Gmsh.y"
+#line 4990 "Gmsh.y"
     { (yyval.c) = (yyvsp[(1) - (1)].c); flag_tSTRING_alloc = 1; ;}
     break;
 
   case 442:
-#line 5008 "Gmsh.y"
+#line 4999 "Gmsh.y"
     { (yyval.i) = 99; ;}
     break;
 
   case 443:
-#line 5010 "Gmsh.y"
+#line 5001 "Gmsh.y"
     { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;}
     break;
 
   case 444:
-#line 5015 "Gmsh.y"
+#line 5006 "Gmsh.y"
     { (yyval.i) = 0; ;}
     break;
 
   case 445:
-#line 5017 "Gmsh.y"
+#line 5008 "Gmsh.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); ;}
     break;
 
   case 446:
-#line 5023 "Gmsh.y"
+#line 5014 "Gmsh.y"
     {
       memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double));
     ;}
     break;
 
   case 447:
-#line 5027 "Gmsh.y"
+#line 5018 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i];
     ;}
     break;
 
   case 448:
-#line 5031 "Gmsh.y"
+#line 5022 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i];
     ;}
     break;
 
   case 449:
-#line 5035 "Gmsh.y"
+#line 5026 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i];
     ;}
     break;
 
   case 450:
-#line 5039 "Gmsh.y"
+#line 5030 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i];
     ;}
     break;
 
   case 451:
-#line 5046 "Gmsh.y"
+#line 5037 "Gmsh.y"
     {
       (yyval.v)[0] = (yyvsp[(2) - (11)].d);  (yyval.v)[1] = (yyvsp[(4) - (11)].d);  (yyval.v)[2] = (yyvsp[(6) - (11)].d);  (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d);
     ;}
     break;
 
   case 452:
-#line 5050 "Gmsh.y"
+#line 5041 "Gmsh.y"
     {
       (yyval.v)[0] = (yyvsp[(2) - (9)].d);  (yyval.v)[1] = (yyvsp[(4) - (9)].d);  (yyval.v)[2] = (yyvsp[(6) - (9)].d);  (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0;
     ;}
     break;
 
   case 453:
-#line 5054 "Gmsh.y"
+#line 5045 "Gmsh.y"
     {
       (yyval.v)[0] = (yyvsp[(2) - (7)].d);  (yyval.v)[1] = (yyvsp[(4) - (7)].d);  (yyval.v)[2] = (yyvsp[(6) - (7)].d);  (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0;
     ;}
     break;
 
   case 454:
-#line 5058 "Gmsh.y"
+#line 5049 "Gmsh.y"
     {
       (yyval.v)[0] = (yyvsp[(2) - (7)].d);  (yyval.v)[1] = (yyvsp[(4) - (7)].d);  (yyval.v)[2] = (yyvsp[(6) - (7)].d);  (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0;
     ;}
     break;
 
   case 455:
-#line 5065 "Gmsh.y"
+#line 5056 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(List_T*));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].l)));
@@ -11771,14 +11773,14 @@ yyreduce:
     break;
 
   case 456:
-#line 5070 "Gmsh.y"
+#line 5061 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].l)));
     ;}
     break;
 
   case 457:
-#line 5077 "Gmsh.y"
+#line 5068 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].d)));
@@ -11786,14 +11788,14 @@ yyreduce:
     break;
 
   case 458:
-#line 5082 "Gmsh.y"
+#line 5073 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(1) - (1)].l);
     ;}
     break;
 
   case 459:
-#line 5086 "Gmsh.y"
+#line 5077 "Gmsh.y"
     {
       // creates an empty list
       (yyval.l) = List_Create(2, 1, sizeof(double));
@@ -11801,14 +11803,14 @@ yyreduce:
     break;
 
   case 460:
-#line 5091 "Gmsh.y"
+#line 5082 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (3)].l);
     ;}
     break;
 
   case 461:
-#line 5095 "Gmsh.y"
+#line 5086 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(3) - (4)].l);
       for(int i = 0; i < List_Nbr((yyval.l)); i++){
@@ -11819,7 +11821,7 @@ yyreduce:
     break;
 
   case 462:
-#line 5103 "Gmsh.y"
+#line 5094 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(4) - (5)].l);
       for(int i = 0; i < List_Nbr((yyval.l)); i++){
@@ -11830,14 +11832,14 @@ yyreduce:
     break;
 
   case 463:
-#line 5114 "Gmsh.y"
+#line 5105 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(1) - (1)].l);
     ;}
     break;
 
   case 464:
-#line 5118 "Gmsh.y"
+#line 5109 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all"))
         (yyval.l) = 0;
@@ -11849,7 +11851,7 @@ yyreduce:
     break;
 
   case 465:
-#line 5130 "Gmsh.y"
+#line 5121 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (2)].l);
       for(int i = 0; i < List_Nbr((yyval.l)); i++){
@@ -11860,7 +11862,7 @@ yyreduce:
     break;
 
   case 466:
-#line 5138 "Gmsh.y"
+#line 5129 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(3) - (3)].l);
       for(int i = 0; i < List_Nbr((yyval.l)); i++){
@@ -11871,7 +11873,7 @@ yyreduce:
     break;
 
   case 467:
-#line 5146 "Gmsh.y"
+#line 5137 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d));
@@ -11881,7 +11883,7 @@ yyreduce:
     break;
 
   case 468:
-#line 5153 "Gmsh.y"
+#line 5144 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       if(!(yyvsp[(5) - (5)].d)){  //|| ($1 < $3 && $5 < 0) || ($1 > $3 && $5 > 0)
@@ -11894,7 +11896,7 @@ yyreduce:
     break;
 
   case 469:
-#line 5163 "Gmsh.y"
+#line 5154 "Gmsh.y"
     {
       (yyval.l) = List_Create(3, 1, sizeof(double));
       int tag = (int)(yyvsp[(3) - (4)].d);
@@ -11920,7 +11922,7 @@ yyreduce:
     break;
 
   case 470:
-#line 5186 "Gmsh.y"
+#line 5177 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       getAllElementaryTags(0, (yyval.l));
@@ -11929,7 +11931,7 @@ yyreduce:
     break;
 
   case 471:
-#line 5192 "Gmsh.y"
+#line 5183 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       getAllElementaryTags(1, (yyval.l));
@@ -11938,7 +11940,7 @@ yyreduce:
     break;
 
   case 472:
-#line 5198 "Gmsh.y"
+#line 5189 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       getAllElementaryTags(2, (yyval.l));
@@ -11947,7 +11949,7 @@ yyreduce:
     break;
 
   case 473:
-#line 5204 "Gmsh.y"
+#line 5195 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       getAllElementaryTags(3, (yyval.l));
@@ -11956,7 +11958,7 @@ yyreduce:
     break;
 
   case 474:
-#line 5210 "Gmsh.y"
+#line 5201 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       if(!(yyvsp[(3) - (3)].l)){
@@ -11970,7 +11972,7 @@ yyreduce:
     break;
 
   case 475:
-#line 5221 "Gmsh.y"
+#line 5212 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       if(!(yyvsp[(3) - (3)].l)){
@@ -11984,7 +11986,7 @@ yyreduce:
     break;
 
   case 476:
-#line 5232 "Gmsh.y"
+#line 5223 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       if(!(yyvsp[(3) - (3)].l)){
@@ -11998,7 +12000,7 @@ yyreduce:
     break;
 
   case 477:
-#line 5243 "Gmsh.y"
+#line 5234 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       if(!(yyvsp[(3) - (3)].l)){
@@ -12012,7 +12014,7 @@ yyreduce:
     break;
 
   case 478:
-#line 5255 "Gmsh.y"
+#line 5246 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       getElementaryTagsInBoundingBox(0, (yyvsp[(5) - (16)].d), (yyvsp[(7) - (16)].d), (yyvsp[(9) - (16)].d), (yyvsp[(11) - (16)].d), (yyvsp[(13) - (16)].d), (yyvsp[(15) - (16)].d), (yyval.l));
@@ -12020,7 +12022,7 @@ yyreduce:
     break;
 
   case 479:
-#line 5261 "Gmsh.y"
+#line 5252 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       getElementaryTagsInBoundingBox(1, (yyvsp[(5) - (16)].d), (yyvsp[(7) - (16)].d), (yyvsp[(9) - (16)].d), (yyvsp[(11) - (16)].d), (yyvsp[(13) - (16)].d), (yyvsp[(15) - (16)].d), (yyval.l));
@@ -12028,7 +12030,7 @@ yyreduce:
     break;
 
   case 480:
-#line 5267 "Gmsh.y"
+#line 5258 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       getElementaryTagsInBoundingBox(2, (yyvsp[(5) - (16)].d), (yyvsp[(7) - (16)].d), (yyvsp[(9) - (16)].d), (yyvsp[(11) - (16)].d), (yyvsp[(13) - (16)].d), (yyvsp[(15) - (16)].d), (yyval.l));
@@ -12036,7 +12038,7 @@ yyreduce:
     break;
 
   case 481:
-#line 5273 "Gmsh.y"
+#line 5264 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 10, sizeof(double));
       getElementaryTagsInBoundingBox(3, (yyvsp[(5) - (16)].d), (yyvsp[(7) - (16)].d), (yyvsp[(9) - (16)].d), (yyvsp[(11) - (16)].d), (yyvsp[(13) - (16)].d), (yyvsp[(15) - (16)].d), (yyval.l));
@@ -12044,7 +12046,7 @@ yyreduce:
     break;
 
   case 482:
-#line 5278 "Gmsh.y"
+#line 5269 "Gmsh.y"
     {
       (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
       for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){
@@ -12057,7 +12059,7 @@ yyreduce:
     break;
 
   case 483:
-#line 5288 "Gmsh.y"
+#line 5279 "Gmsh.y"
     {
       (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
       for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){
@@ -12070,7 +12072,7 @@ yyreduce:
     break;
 
   case 484:
-#line 5298 "Gmsh.y"
+#line 5289 "Gmsh.y"
     {
       (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
       for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){
@@ -12083,7 +12085,7 @@ yyreduce:
     break;
 
   case 485:
-#line 5308 "Gmsh.y"
+#line 5299 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c)))
@@ -12098,7 +12100,7 @@ yyreduce:
     break;
 
   case 486:
-#line 5321 "Gmsh.y"
+#line 5312 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c)))
@@ -12113,28 +12115,28 @@ yyreduce:
     break;
 
   case 487:
-#line 5333 "Gmsh.y"
+#line 5324 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(3) - (4)].l);
     ;}
     break;
 
   case 488:
-#line 5337 "Gmsh.y"
+#line 5328 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(3) - (4)].l);
     ;}
     break;
 
   case 489:
-#line 5341 "Gmsh.y"
+#line 5332 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(4) - (6)].l);
     ;}
     break;
 
   case 490:
-#line 5345 "Gmsh.y"
+#line 5336 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c)))
@@ -12155,7 +12157,7 @@ yyreduce:
     break;
 
   case 491:
-#line 5363 "Gmsh.y"
+#line 5354 "Gmsh.y"
     {
       (yyval.l) = List_Create(20,20,sizeof(double));
       for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) {
@@ -12166,7 +12168,7 @@ yyreduce:
     break;
 
   case 492:
-#line 5371 "Gmsh.y"
+#line 5362 "Gmsh.y"
     {
       (yyval.l) = List_Create(20,20,sizeof(double));
       for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) {
@@ -12177,7 +12179,7 @@ yyreduce:
     break;
 
   case 493:
-#line 5379 "Gmsh.y"
+#line 5370 "Gmsh.y"
     {
       Msg::Barrier();
       FILE *File;
@@ -12209,7 +12211,7 @@ yyreduce:
     break;
 
   case 494:
-#line 5408 "Gmsh.y"
+#line 5399 "Gmsh.y"
     {
       double x0 = (yyvsp[(3) - (14)].d), x1 = (yyvsp[(5) - (14)].d), y0 = (yyvsp[(7) - (14)].d), y1 = (yyvsp[(9) - (14)].d), ys = (yyvsp[(11) - (14)].d);
       int N = (int)(yyvsp[(13) - (14)].d);
@@ -12222,7 +12224,7 @@ yyreduce:
     break;
 
   case 495:
-#line 5418 "Gmsh.y"
+#line 5409 "Gmsh.y"
     {
       std::vector<double> tmp;
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
@@ -12241,7 +12243,7 @@ yyreduce:
     break;
 
   case 496:
-#line 5434 "Gmsh.y"
+#line 5425 "Gmsh.y"
     {
       std::set<double> c;
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
@@ -12262,7 +12264,7 @@ yyreduce:
     break;
 
   case 497:
-#line 5452 "Gmsh.y"
+#line 5443 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
         double *d = (double*)List_Pointer((yyvsp[(3) - (4)].l), i);
@@ -12273,7 +12275,7 @@ yyreduce:
     break;
 
   case 498:
-#line 5463 "Gmsh.y"
+#line 5454 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].d)));
@@ -12281,21 +12283,21 @@ yyreduce:
     break;
 
   case 499:
-#line 5468 "Gmsh.y"
+#line 5459 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(1) - (1)].l);
     ;}
     break;
 
   case 500:
-#line 5472 "Gmsh.y"
+#line 5463 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].d)));
     ;}
     break;
 
   case 501:
-#line 5476 "Gmsh.y"
+#line 5467 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){
 	double d;
@@ -12307,21 +12309,21 @@ yyreduce:
     break;
 
   case 502:
-#line 5488 "Gmsh.y"
+#line 5479 "Gmsh.y"
     {
       (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d));
     ;}
     break;
 
   case 503:
-#line 5492 "Gmsh.y"
+#line 5483 "Gmsh.y"
     {
       (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255);
     ;}
     break;
 
   case 504:
-#line 5504 "Gmsh.y"
+#line 5495 "Gmsh.y"
     {
       int flag = 0;
       if(gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){
@@ -12341,7 +12343,7 @@ yyreduce:
     break;
 
   case 505:
-#line 5521 "Gmsh.y"
+#line 5512 "Gmsh.y"
     {
       unsigned int val = 0;
       ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val);
@@ -12351,14 +12353,14 @@ yyreduce:
     break;
 
   case 506:
-#line 5531 "Gmsh.y"
+#line 5522 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (3)].l);
     ;}
     break;
 
   case 507:
-#line 5535 "Gmsh.y"
+#line 5526 "Gmsh.y"
     {
       (yyval.l) = List_Create(256, 10, sizeof(unsigned int));
       GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d));
@@ -12373,7 +12375,7 @@ yyreduce:
     break;
 
   case 508:
-#line 5550 "Gmsh.y"
+#line 5541 "Gmsh.y"
     {
       (yyval.l) = List_Create(256, 10, sizeof(unsigned int));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].u)));
@@ -12381,21 +12383,21 @@ yyreduce:
     break;
 
   case 509:
-#line 5555 "Gmsh.y"
+#line 5546 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].u)));
     ;}
     break;
 
   case 510:
-#line 5562 "Gmsh.y"
+#line 5553 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(1) - (1)].c);
     ;}
     break;
 
   case 511:
-#line 5566 "Gmsh.y"
+#line 5557 "Gmsh.y"
     {
       std::string val;
       if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c)))
@@ -12411,7 +12413,7 @@ yyreduce:
     break;
 
   case 512:
-#line 5579 "Gmsh.y"
+#line 5570 "Gmsh.y"
     {
       std::string val;
       int j = (int)(yyvsp[(3) - (4)].d);
@@ -12428,7 +12430,7 @@ yyreduce:
     break;
 
   case 513:
-#line 5593 "Gmsh.y"
+#line 5584 "Gmsh.y"
     {
       std::string val;
       int j = (int)(yyvsp[(3) - (4)].d);
@@ -12445,7 +12447,7 @@ yyreduce:
     break;
 
   case 514:
-#line 5610 "Gmsh.y"
+#line 5601 "Gmsh.y"
     {
       (yyval.c) = treat_Struct_FullName_dot_tSTRING_String(NULL, (yyvsp[(1) - (3)].c), (yyvsp[(3) - (3)].c));
       /*
@@ -12474,12 +12476,12 @@ yyreduce:
     break;
 
   case 515:
-#line 5636 "Gmsh.y"
+#line 5627 "Gmsh.y"
     { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c)); ;}
     break;
 
   case 516:
-#line 5640 "Gmsh.y"
+#line 5631 "Gmsh.y"
     {
       std::string out;
       StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out);
@@ -12490,7 +12492,7 @@ yyreduce:
     break;
 
   case 517:
-#line 5648 "Gmsh.y"
+#line 5639 "Gmsh.y"
     {
       std::string name = GModel::current()->getPhysicalName(0, (int)(yyvsp[(4) - (5)].d));
       (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char));
@@ -12499,7 +12501,7 @@ yyreduce:
     break;
 
   case 518:
-#line 5654 "Gmsh.y"
+#line 5645 "Gmsh.y"
     {
       std::string name = GModel::current()->getPhysicalName(1, (int)(yyvsp[(4) - (5)].d));
       (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char));
@@ -12508,7 +12510,7 @@ yyreduce:
     break;
 
   case 519:
-#line 5660 "Gmsh.y"
+#line 5651 "Gmsh.y"
     {
       std::string name = GModel::current()->getPhysicalName(2, (int)(yyvsp[(4) - (5)].d));
       (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char));
@@ -12517,7 +12519,7 @@ yyreduce:
     break;
 
   case 520:
-#line 5666 "Gmsh.y"
+#line 5657 "Gmsh.y"
     {
       std::string name = GModel::current()->getPhysicalName(3, (int)(yyvsp[(4) - (5)].d));
       (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char));
@@ -12526,21 +12528,21 @@ yyreduce:
     break;
 
   case 521:
-#line 5675 "Gmsh.y"
+#line 5666 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(1) - (1)].c);
     ;}
     break;
 
   case 522:
-#line 5679 "Gmsh.y"
+#line 5670 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(3) - (4)].c);
     ;}
     break;
 
   case 523:
-#line 5683 "Gmsh.y"
+#line 5674 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc(32 * sizeof(char));
       time_t now;
@@ -12551,7 +12553,7 @@ yyreduce:
     break;
 
   case 524:
-#line 5691 "Gmsh.y"
+#line 5682 "Gmsh.y"
     {
       std::string exe = Msg::GetExecutableName();
       (yyval.c) = (char *)Malloc(exe.size() + 1);
@@ -12560,7 +12562,7 @@ yyreduce:
     break;
 
   case 525:
-#line 5697 "Gmsh.y"
+#line 5688 "Gmsh.y"
     {
       std::string action = Msg::GetOnelabAction();
       (yyval.c) = (char *)Malloc(action.size() + 1);
@@ -12569,7 +12571,7 @@ yyreduce:
     break;
 
   case 526:
-#line 5703 "Gmsh.y"
+#line 5694 "Gmsh.y"
     {
       const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c));
       if(!env) env = "";
@@ -12580,7 +12582,7 @@ yyreduce:
     break;
 
   case 527:
-#line 5711 "Gmsh.y"
+#line 5702 "Gmsh.y"
     {
       std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c));
       (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char));
@@ -12591,7 +12593,7 @@ yyreduce:
     break;
 
   case 528:
-#line 5719 "Gmsh.y"
+#line 5710 "Gmsh.y"
     {
       std::string s = Msg::GetOnelabString((yyvsp[(3) - (4)].c));
       (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char));
@@ -12601,7 +12603,7 @@ yyreduce:
     break;
 
   case 529:
-#line 5726 "Gmsh.y"
+#line 5717 "Gmsh.y"
     {
       std::string s = Msg::GetOnelabString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c));
       (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char));
@@ -12612,7 +12614,7 @@ yyreduce:
     break;
 
   case 530:
-#line 5734 "Gmsh.y"
+#line 5725 "Gmsh.y"
     {
       int size = 1;
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
@@ -12630,7 +12632,7 @@ yyreduce:
     break;
 
   case 531:
-#line 5749 "Gmsh.y"
+#line 5740 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char));
       int i;
@@ -12647,7 +12649,7 @@ yyreduce:
     break;
 
   case 532:
-#line 5763 "Gmsh.y"
+#line 5754 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char));
       int i;
@@ -12664,7 +12666,7 @@ yyreduce:
     break;
 
   case 533:
-#line 5777 "Gmsh.y"
+#line 5768 "Gmsh.y"
     {
       std::string input = (yyvsp[(3) - (8)].c);
       std::string substr_old = (yyvsp[(5) - (8)].c);
@@ -12679,7 +12681,7 @@ yyreduce:
     break;
 
   case 534:
-#line 5789 "Gmsh.y"
+#line 5780 "Gmsh.y"
     {
       int size = 1;
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
@@ -12698,7 +12700,7 @@ yyreduce:
     break;
 
   case 535:
-#line 5805 "Gmsh.y"
+#line 5796 "Gmsh.y"
     {
       int i = 0;
       while ((yyvsp[(3) - (4)].c)[i]) {
@@ -12710,7 +12712,7 @@ yyreduce:
     break;
 
   case 536:
-#line 5814 "Gmsh.y"
+#line 5805 "Gmsh.y"
     {
       int i = 0;
       while ((yyvsp[(3) - (4)].c)[i]) {
@@ -12722,7 +12724,7 @@ yyreduce:
     break;
 
   case 537:
-#line 5823 "Gmsh.y"
+#line 5814 "Gmsh.y"
     {
       int i = 0;
       while ((yyvsp[(3) - (4)].c)[i]) {
@@ -12735,7 +12737,7 @@ yyreduce:
     break;
 
   case 538:
-#line 5833 "Gmsh.y"
+#line 5824 "Gmsh.y"
     {
       if((yyvsp[(3) - (8)].d)){
         (yyval.c) = (yyvsp[(5) - (8)].c);
@@ -12749,7 +12751,7 @@ yyreduce:
     break;
 
   case 539:
-#line 5844 "Gmsh.y"
+#line 5835 "Gmsh.y"
     {
       std::string in = (yyvsp[(3) - (8)].c);
       std::string out = in.substr((int)(yyvsp[(5) - (8)].d), (int)(yyvsp[(7) - (8)].d));
@@ -12760,7 +12762,7 @@ yyreduce:
     break;
 
   case 540:
-#line 5852 "Gmsh.y"
+#line 5843 "Gmsh.y"
     {
       std::string in = (yyvsp[(3) - (6)].c);
       std::string out = in.substr((int)(yyvsp[(5) - (6)].d), std::string::npos);
@@ -12771,14 +12773,14 @@ yyreduce:
     break;
 
   case 541:
-#line 5860 "Gmsh.y"
+#line 5851 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(3) - (4)].c);
     ;}
     break;
 
   case 542:
-#line 5864 "Gmsh.y"
+#line 5855 "Gmsh.y"
     {
       char tmpstring[5000];
       int i = printListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring);
@@ -12800,7 +12802,7 @@ yyreduce:
     break;
 
   case 543:
-#line 5883 "Gmsh.y"
+#line 5874 "Gmsh.y"
     {
       std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c));
       (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char));
@@ -12810,7 +12812,7 @@ yyreduce:
     break;
 
   case 544:
-#line 5890 "Gmsh.y"
+#line 5881 "Gmsh.y"
     {
       std::string tmp = SplitFileName(GetAbsolutePath(gmsh_yyname))[0];
       (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char));
@@ -12819,7 +12821,7 @@ yyreduce:
     break;
 
   case 545:
-#line 5896 "Gmsh.y"
+#line 5887 "Gmsh.y"
     {
       std::string tmp = SplitFileName((yyvsp[(3) - (4)].c))[0];
       (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char));
@@ -12829,7 +12831,7 @@ yyreduce:
     break;
 
   case 546:
-#line 5903 "Gmsh.y"
+#line 5894 "Gmsh.y"
     {
       std::string tmp = GetAbsolutePath((yyvsp[(3) - (4)].c));
       (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char));
@@ -12839,12 +12841,12 @@ yyreduce:
     break;
 
   case 547:
-#line 5910 "Gmsh.y"
+#line 5901 "Gmsh.y"
     { floatOptions.clear(); charOptions.clear(); ;}
     break;
 
   case 548:
-#line 5912 "Gmsh.y"
+#line 5903 "Gmsh.y"
     {
       std::string val((yyvsp[(3) - (6)].c));
       Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions);
@@ -12855,7 +12857,7 @@ yyreduce:
     break;
 
   case 549:
-#line 5920 "Gmsh.y"
+#line 5911 "Gmsh.y"
     {
       std::string out;
       const std::string * key_struct = NULL;
@@ -12879,17 +12881,17 @@ yyreduce:
     break;
 
   case 550:
-#line 5944 "Gmsh.y"
+#line 5935 "Gmsh.y"
     { struct_namespace = std::string(""); (yyval.d) = (yyvsp[(2) - (2)].d); ;}
     break;
 
   case 551:
-#line 5946 "Gmsh.y"
+#line 5937 "Gmsh.y"
     { struct_namespace = (yyvsp[(1) - (4)].c); Free((yyvsp[(1) - (4)].c)); (yyval.d) = (yyvsp[(4) - (4)].d); ;}
     break;
 
   case 552:
-#line 5952 "Gmsh.y"
+#line 5943 "Gmsh.y"
     {
       (yyval.l) = List_Create(20,20,sizeof(char*));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].c)));
@@ -12897,14 +12899,14 @@ yyreduce:
     break;
 
   case 553:
-#line 5957 "Gmsh.y"
+#line 5948 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].c)));
     ;}
     break;
 
   case 554:
-#line 5965 "Gmsh.y"
+#line 5956 "Gmsh.y"
     {
       char tmpstr[256];
       sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d));
@@ -12915,7 +12917,7 @@ yyreduce:
     break;
 
   case 555:
-#line 5974 "Gmsh.y"
+#line 5965 "Gmsh.y"
     {
       char tmpstr[256];
       sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d));
@@ -12926,23 +12928,23 @@ yyreduce:
     break;
 
   case 556:
-#line 5987 "Gmsh.y"
+#line 5978 "Gmsh.y"
     { (yyval.c) = (yyvsp[(1) - (1)].c); ;}
     break;
 
   case 557:
-#line 5990 "Gmsh.y"
+#line 5981 "Gmsh.y"
     { (yyval.c) = (yyvsp[(1) - (1)].c); ;}
     break;
 
   case 558:
-#line 5994 "Gmsh.y"
+#line 5985 "Gmsh.y"
     { (yyval.c) = (yyvsp[(3) - (4)].c); ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 12946 "Gmsh.tab.cpp"
+#line 12948 "Gmsh.tab.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -13156,7 +13158,7 @@ yyreturn:
 }
 
 
-#line 5997 "Gmsh.y"
+#line 5988 "Gmsh.y"
 
 
 void assignVariable(const std::string &name, int index, int assignType,