diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index f4a08542ab63fc214f48330ab90f16763366b06a..52b81efa724bc01dc8c5e539f580d6536539095e 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -45,24 +45,25 @@
 #include "meshGFaceLloyd.h"
 #include "meshGFaceBoundaryLayers.h"
 
-inline double myAngle (const SVector3 &a, const SVector3 &b, const SVector3 &d){
+inline double myAngle (const SVector3 &a, const SVector3 &b, const SVector3 &d)
+{
   double cosTheta = dot(a,b);
   double sinTheta = dot(crossprod(a,b),d);
-  return atan2 (sinTheta,cosTheta);  
+  return atan2 (sinTheta,cosTheta);
 }
 
 struct myPlane {
   SPoint3 p;
   SVector3 n;
   double a;
-  /// nx x + ny y + nz z + a = 0
-  myPlane(SPoint3 _p, SVector3 _n) : p(_p),n(_n) 
+  // nx x + ny y + nz z + a = 0
+  myPlane(SPoint3 _p, SVector3 _n) : p(_p),n(_n)
   {
-    //    printf("plane passing through %12.5E %12.5E %12.5E\n",p.x(),p.y(),p.z());
     n.normalize();
     a = -(n.x()*p.x()+n.y()*p.y()+n.z()*p.z());
   }
-  double eval (double x, double y, double z){
+  double eval (double x, double y, double z)
+  {
     return n.x() * x + n.y() * y + n.z() * z + a;
   }
 };
@@ -78,48 +79,44 @@ struct myLine {
       Msg::Error("parallel planes do not intersect");
     }
     else
-      t.normalize();    
+      t.normalize();
     // find a point, assume z = 0
-    double a[2][2] = {{p1.n.x(),p1.n.y()},{p2.n.x(),p2.n.y()}};
-    double b[2] = {-p1.a,-p2.a},x[2];
-    if (!sys2x2(a,b,x)){
+    double a[2][2] = {{p1.n.x(), p1.n.y()}, {p2.n.x(), p2.n.y()}};
+    double b[2] = {-p1.a, -p2.a}, x[2];
+    if (!sys2x2(a, b, x)){
       // assume x = 0
-      double az[2][2] = {{p1.n.y(),p1.n.z()},{p2.n.y(),p2.n.z()}};
-      double bz[2] = {-p1.a,-p2.a};
-      if (!sys2x2(az,bz,x)){
+      double az[2][2] = {{p1.n.y(), p1.n.z()}, {p2.n.y(), p2.n.z()}};
+      double bz[2] = {-p1.a, -p2.a};
+      if (!sys2x2(az, bz, x)){
 	// assume y = 0
-	double ay[2][2] = {{p1.n.x(),p1.n.z()},{p2.n.x(),p2.n.z()}};
-	double by[2] = {-p1.a,-p2.a};
-	//	printf("%g %g %g %g\n",p1.n.y(),p1.n.z(),p2.n.y(),p2.n.z());
+	double ay[2][2] = {{p1.n.x(), p1.n.z()}, {p2.n.x(), p2.n.z()}};
+	double by[2] = {-p1.a, -p2.a};
 	if (!sys2x2(ay,by,x)){
 	  Msg::Error("parallel planes do not intersect");
 	}
 	else {
-	  p = SPoint3(x[0],0.0,x[1]);	
+	  p = SPoint3(x[0], 0., x[1]);
 	}
       }
       else{
-	p = SPoint3(0.0,x[0],x[1]);	
+	p = SPoint3(0., x[0], x[1]);
       }
     }
     else{
-      p = SPoint3(x[0],x[1],0.0);	
-    }	   
+      p = SPoint3(x[0], x[1], 0.);
+    }
   }
-  SPoint3 orthogonalProjection (SPoint3 &a){
-    // (x - a) * t = 0 --> 
-    // x = p + u t --> (p + ut - a) * t = 0 --> u = (a-p) * t  
-    const double u = dot(a-p,t);
+  SPoint3 orthogonalProjection (SPoint3 &a)
+  {
+    // (x - a) * t = 0 -->
+    // x = p + u t --> (p + ut - a) * t = 0 --> u = (a-p) * t
+    const double u = dot(a - p, t);
     return SPoint3(p.x() + t.x() * u,p.y() + t.y() * u,p.z() + t.z() * u);
   }
-
 };
 
-
 static void copyMesh(GFace *source, GFace *target)
 {
-  //  printf("%d %d \n",source->tag(),target->tag());
-  
   std::map<MVertex*, MVertex*> vs2vt;
   std::list<GEdge*> edges = target->edges();
   {
@@ -128,7 +125,7 @@ static void copyMesh(GFace *source, GFace *target)
       std::map<int, int>::iterator adnksd = target->edgeCounterparts.find((*it)->tag());
       int source_e;
       if(adnksd != target->edgeCounterparts.end())
-	 source_e = adnksd->second;
+        source_e = adnksd->second;
       else{
 	sign = -1;
         adnksd = target->edgeCounterparts.find(-(*it)->tag());
@@ -140,37 +137,25 @@ static void copyMesh(GFace *source, GFace *target)
           return;
         }
       }
-
       GEdge *se = source->model()->getEdgeByTag(abs(source_e));
       GEdge *te = *it;
       if (source_e * sign > 0){
-	vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0];
-	vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0];
+	vs2vt[se->getBeginVertex()->mesh_vertices[0]] =
+          te->getBeginVertex()->mesh_vertices[0];
+	vs2vt[se->getEndVertex()->mesh_vertices[0]] =
+          te->getEndVertex()->mesh_vertices[0];
       }
       else {
-	vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0];
-	vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0];
+	vs2vt[se->getBeginVertex()->mesh_vertices[0]] =
+          te->getEndVertex()->mesh_vertices[0];
+	vs2vt[se->getEndVertex()->mesh_vertices[0]] =
+          te->getBeginVertex()->mesh_vertices[0];
       }
       // iterate on source vertices
       for (unsigned i = 0; i < te->mesh_vertices.size(); i++){
 	MVertex *vt = te->mesh_vertices[i];
-	MVertex *vs = se->mesh_vertices[source_e * sign > 0 ? i : te->mesh_vertices.size() - i - 1];
-	/*
-	MVertex *vt_on_master;
-	if (te->meshMaster() == te->tag())vt_on_master =vt;
-	else vt_on_master = te->correspondingVertices[vt];
-	
-	if (se->meshMaster() == se->tag()){
-	  vs = vt_on_master;
-	}
-	else {
-	  for (unsigned j = 0; j < se->mesh_vertices.size(); j++){
-	    vs = se->mesh_vertices[j];
-	    MVertex *vs_on_master = se->correspondingVertices[vs];
-	    if (vs_on_master == vt_on_master)break;
-	  }
-	}
-	*/
+	MVertex *vs = se->mesh_vertices[source_e * sign > 0 ? i :
+                                        te->mesh_vertices.size() - i - 1];
 	vs2vt[vs] = vt;
       }
     }
@@ -181,14 +166,16 @@ static void copyMesh(GFace *source, GFace *target)
 
   SVector3 DX;
   int count = 0;
-  for (std::map<MVertex*, MVertex*>::iterator it = vs2vt.begin(); it != vs2vt.end() ; ++it){
+  for (std::map<MVertex*, MVertex*>::iterator it = vs2vt.begin();
+       it != vs2vt.end() ; ++it){
     MVertex *vs = it->first;
     MVertex *vt = it->second;
     if (count == 0)
       DX = SVector3(vt->x() - vs->x(), vt->y() - vs->y(), vt->z() - vs->z());
     else {
-      SVector3 DX2 = DX - SVector3 (vt->x() - vs->x(), vt->y() - vs->y(), vt->z() - vs->z());
-      if (DX2.norm() > DX.norm() * 1.e-8)translation = false;
+      SVector3 DX2 = DX - SVector3 (vt->x() - vs->x(), vt->y() - vs->y(),
+                                    vt->z() - vs->z());
+      if (DX2.norm() > DX.norm() * 1.e-8) translation = false;
     }
     count ++;
   }
@@ -200,58 +187,56 @@ static void copyMesh(GFace *source, GFace *target)
     count = 0;
     rotation = true;
     std::vector<SPoint3> mps,mpt;
-    for (std::map<MVertex*, MVertex*>::iterator it = vs2vt.begin(); it != vs2vt.end() ; ++it){
+    for (std::map<MVertex*, MVertex*>::iterator it = vs2vt.begin();
+         it != vs2vt.end() ; ++it){
       MVertex *vs = it->first;
       MVertex *vt = it->second;
       mps.push_back(SPoint3(vs->x(),vs->y(),vs->z()));
-      //      printf("klax %d point %g %g %g\n",vs->onWhat()->tag(),vs->x(),vs->y(),vs->z());
-      mpt.push_back(SPoint3(vt->x(),vt->y(),vt->z()));
-    }
-    mean_plane mean_source,mean_target;
-    computeMeanPlaneSimple(mps,mean_source);
-    computeMeanPlaneSimple(mpt,mean_target);
-    myPlane PLANE_SOURCE (SPoint3(mean_source.x,mean_source.y,mean_source.z),
-			  SVector3(mean_source.a,mean_source.b,mean_source.c));
-    myPlane PLANE_TARGET (SPoint3(mean_target.x,mean_target.y,mean_target.z),
-			  SVector3(mean_target.a,mean_target.b,mean_target.c));
-    //    printf("%g %g %g vs %g %g %g \n",PLANE_SOURCE.n.x(),PLANE_SOURCE.n.y(),PLANE_SOURCE.n.z(),
-    //    	   PLANE_TARGET.n.x(),PLANE_TARGET.n.y(),PLANE_TARGET.n.z());
-    LINE = myLine (PLANE_SOURCE,PLANE_TARGET);
+      mpt.push_back(SPoint3(vt->x(), vt->y(), vt->z()));
+    }
+    mean_plane mean_source, mean_target;
+    computeMeanPlaneSimple(mps, mean_source);
+    computeMeanPlaneSimple(mpt, mean_target);
+    myPlane PLANE_SOURCE(SPoint3(mean_source.x,mean_source.y,mean_source.z),
+                         SVector3(mean_source.a,mean_source.b,mean_source.c));
+    myPlane PLANE_TARGET(SPoint3(mean_target.x,mean_target.y,mean_target.z),
+                         SVector3(mean_target.a,mean_target.b,mean_target.c));
+    LINE = myLine(PLANE_SOURCE, PLANE_TARGET);
 
     // LINE is the axis of rotation
     // let us compute the angle of rotation
     count = 0;
-    for (std::map<MVertex*, MVertex*>::iterator it = vs2vt.begin(); it != vs2vt.end() ; ++it){
+    for (std::map<MVertex*, MVertex*>::iterator it = vs2vt.begin();
+         it != vs2vt.end(); ++it){
       MVertex *vs = it->first;
       MVertex *vt = it->second;
-      // project both points on the axis : that should be the same point !
-      SPoint3 ps = SPoint3(vs->x(),vs->y(),vs->z());
-      SPoint3 pt = SPoint3(vt->x(),vt->y(),vt->z());      
+      // project both points on the axis: that should be the same point !
+      SPoint3 ps = SPoint3(vs->x(), vs->y(), vs->z());
+      SPoint3 pt = SPoint3(vt->x(), vt->y(), vt->z());
       SPoint3 p_ps = LINE.orthogonalProjection (ps);
       SPoint3 p_pt = LINE.orthogonalProjection (pt);
       SVector3 dist1 = ps - pt;
       SVector3 dist2 = p_ps - p_pt;
-      if (dist2.norm() > 1.e-8*dist1.norm()){
-	//	printf("%g %g %g vs %g %g %g\n",ps.x(),ps.y(),ps.z(),pt.x(),pt.y(),pt.z());
-	//	printf("%g %g %g vs %g %g %g\n",p_ps.x(),p_ps.y(),p_ps.z(),p_pt.x(),p_pt.y(),p_pt.z());
+      if (dist2.norm() > 1.e-8 * dist1.norm()){
 	rotation = false;
       }
       SVector3 t1 = ps - p_ps;
       SVector3 t2 = pt - p_pt;
       if (t1.norm() > 1.e-8 * dist1.norm()){
-	if (count == 0)ANGLE = myAngle (t1,t2,LINE.t);
+	if (count == 0)
+          ANGLE = myAngle (t1, t2, LINE.t);
 	else {
-	  double ANGLE2 = myAngle (t1,t2,LINE.t);
-	  //	  printf("ANGLE2 = %12.5E\n",ANGLE2);
-	  if (fabs (ANGLE2-ANGLE) > 1.e-8)rotation = false;
+	  double ANGLE2 = myAngle(t1, t2, LINE.t);
+	  if (fabs (ANGLE2-ANGLE) > 1.e-8) rotation = false;
 	}
 	count++;
       }
     }
 
-    
     if (rotation){
-      Msg::Info("COPYMESH : Rotation found AXIS (%g,%g,%g) POINT (%g %g %g) ANGLE %g",LINE.t.x(),LINE.t.y(),LINE.t.z(),LINE.p.x(),LINE.p.y(),LINE.p.z(),ANGLE*180/M_PI);
+      Msg::Info("Periodic mesh rotation found: axis (%g,%g,%g) point (%g %g %g) angle %g",
+                LINE.t.x(), LINE.t.y(), LINE.t.z(), LINE.p.x(), LINE.p.y(), LINE.p.z(),
+                ANGLE * 180 / M_PI);
       double ux = LINE.t.x();
       double uy = LINE.t.y();
       double uz = LINE.t.z();
@@ -266,18 +251,20 @@ static void copyMesh(GFace *source, GFace *target)
       rot[2][2] = cos (ANGLE) + uz*uz*(1.-cos(ANGLE));
     }
     else {
-      Msg::Error ("COPYMESH : Only rotations or translations can be taken into account for peridic faces, face %d not meshed",target->tag());
+      Msg::Error("Only rotations or translations can be currently taken into account "
+                 "for peridic faces: face %d not meshed", target->tag());
       return;
     }
   }
   else{
-    Msg::Info("COPYMESH : Translation found DX = (%g,%g,%g)",DX.x(),DX.y(),DX.z());
+    Msg::Info("Periodic mesh translation found: dx = (%g,%g,%g)",
+              DX.x(), DX.y(), DX.z());
   }
 
   // now transform !!!
   for(unsigned int i = 0; i < source->mesh_vertices.size(); i++){
     MVertex *vs = source->mesh_vertices[i];
-    
+
     SPoint2 XXX;
     if (translation) {
       SPoint3 tp (vs->x() + DX.x(),vs->y() + DX.y(),vs->z() + DX.z());
@@ -285,7 +272,7 @@ static void copyMesh(GFace *source, GFace *target)
     }
     else if (rotation){
       SPoint3 ps = SPoint3(vs->x(),vs->y(),vs->z());
-      SPoint3 p_ps = LINE.orthogonalProjection (ps);
+      SPoint3 p_ps = LINE.orthogonalProjection(ps);
       SPoint3 P = ps - p_ps, res;
       matvec(rot, P, res);
       res += p_ps;
@@ -298,7 +285,6 @@ static void copyMesh(GFace *source, GFace *target)
     vs2vt[vs] = vt;
   }
 
-
   for (unsigned i = 0; i < source->triangles.size(); i++){
     MVertex *vt[3];
     for (int j = 0; j < 3; j++){
@@ -306,22 +292,22 @@ static void copyMesh(GFace *source, GFace *target)
       vt[j] = vs2vt[vs];
     }
     if (!vt[0] || !vt[1] ||!vt[2]){
-      Msg::Fatal("yet another error in the copymesh procedure %p %p %p %d %d %d",
+      Msg::Fatal("Yet another error in the copyMesh procedure %p %p %p %d %d %d",
 		 vt[0], vt[1], vt[2], source->triangles[i]->getVertex(0)->onWhat()->dim(),
 		 source->triangles[i]->getVertex(1)->onWhat()->dim(),
 		 source->triangles[i]->getVertex(2)->onWhat()->dim());
     }
     target->triangles.push_back(new MTriangle(vt[0], vt[1], vt[2]));
   }
-  
+
   for (unsigned i = 0; i < source->quadrangles.size(); i++){
     MVertex *v1 = vs2vt[source->quadrangles[i]->getVertex(0)];
     MVertex *v2 = vs2vt[source->quadrangles[i]->getVertex(1)];
     MVertex *v3 = vs2vt[source->quadrangles[i]->getVertex(2)];
     MVertex *v4 = vs2vt[source->quadrangles[i]->getVertex(3)];
     if (!v1 || !v2 || !v3 || !v4){
-      Msg::Fatal("yet another error in the copymesh procedure %p %p %p %p %d %d %d %d",
-		 v1, v2, v3, v4, 
+      Msg::Fatal("Yet another error in the copymesh procedure %p %p %p %p %d %d %d %d",
+		 v1, v2, v3, v4,
 		 source->quadrangles[i]->getVertex(0)->onWhat()->dim(),
 		 source->quadrangles[i]->getVertex(1)->onWhat()->dim(),
 		 source->quadrangles[i]->getVertex(2)->onWhat()->dim(),
@@ -455,8 +441,7 @@ static void remeshUnrecoveredEdges(std::map<MVertex*, BDS_Point*> &recoverMapInv
 
 static bool algoDelaunay2D(GFace *gf)
 {
-
-  // FIXME  
+  // FIXME
   //  if(!noSeam(gf))
   //    return false;
 
@@ -1309,7 +1294,7 @@ bool meshGenerator(GFace *gf, int RECUR_ITER,
       bowyerWatson(gf,15000);
       meshGFaceBamg(gf);
     }
-    if (!infty || !(CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine)) 
+    if (!infty || !(CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine))
       laplaceSmoothing(gf, CTX::instance()->mesh.nbSmoothing, infty);
   }
 
@@ -1915,10 +1900,9 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true)
     //    }
   }
 
-  /// This is a structure that we need only for periodic cases
-  /// We will duplicate the vertices (MVertex) that are on seams
-  /// 
-  
+  // This is a structure that we need only for periodic cases
+  // We will duplicate the vertices (MVertex) that are on seams
+
   std::map<MVertex*, MVertex*> equivalence;
   std::map<MVertex*, SPoint2> parametricCoordinates;
   if(algoDelaunay2D(gf)){
@@ -1935,7 +1919,8 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true)
 	if (mv1->onWhat()->dim() == 1) {
 	  double t;
 	  mv1->getParameter(0,t);
-	  mv2  = new MEdgeVertex (mv1->x(),mv1->y(),mv1->z(),mv1->onWhat(), t,   ((MEdgeVertex*)mv1)->getLc());
+	  mv2  = new MEdgeVertex (mv1->x(),mv1->y(),mv1->z(),mv1->onWhat(), t,
+                                  ((MEdgeVertex*)mv1)->getLc());
 	}
 	else if (mv1->onWhat()->dim() == 0) {
 	  mv2  = new MVertex (mv1->x(),mv1->y(),mv1->z(),mv1->onWhat());
@@ -1946,7 +1931,6 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true)
 	it->second = mv2;
 	equivalence[mv2] = mv1;
 	parametricCoordinates[mv2] = SPoint2(bds->u,bds->v);
-	//	printf("new vertex created %p that replaces %p %g %g %g\n",mv2,mv1,mv2->x(),mv2->y(),mv2->z());
 	invertMap[mv2] = bds;
       }
       else {
@@ -1955,7 +1939,7 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true)
       }
       ++it;
     }
-    //    recoverMap.insert(new_relations.begin(), new_relations.end()); 
+    //    recoverMap.insert(new_relations.begin(), new_relations.end());
   }
   Msg::Info("%d points that are duplicated for delaunay meshing",equivalence.size());
 
@@ -1991,7 +1975,7 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true)
           // pole
           if(v1 != v2 && v1 != v3 && v2 != v3){
 	    // we are in the periodic case. if we aim at
-	    // using delaunay mesh generation in thoses cases, 
+	    // using delaunay mesh generation in thoses cases,
 	    // we should double some of the vertices
             gf->triangles.push_back(new MTriangle(v1, v2, v3));
 	  }
@@ -2014,13 +1998,14 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true)
   }
 
   bool infty = false;
-  if (gf->getMeshingAlgo() == ALGO_2D_FRONTAL_QUAD || gf->getMeshingAlgo() == ALGO_2D_PACK_PRLGRMS)
+  if (gf->getMeshingAlgo() == ALGO_2D_FRONTAL_QUAD ||
+      gf->getMeshingAlgo() == ALGO_2D_PACK_PRLGRMS)
     infty = true;
   if (infty)
     buildBackGroundMesh (gf, &equivalence, &parametricCoordinates);
   // BOUNDARY LAYER
   modifyInitialMeshForTakingIntoAccountBoundaryLayers(gf);
-  
+
 
   if(algoDelaunay2D(gf)){
     if(gf->getMeshingAlgo() == ALGO_2D_FRONTAL)
@@ -2034,7 +2019,7 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true)
       bowyerWatson(gf,1000000000, &equivalence, &parametricCoordinates);
     else
       meshGFaceBamg(gf);
-    if (!infty || !(CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine)) 
+    if (!infty || !(CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine))
       laplaceSmoothing(gf, CTX::instance()->mesh.nbSmoothing, infty);
   }
 
diff --git a/Numeric/Numeric.cpp b/Numeric/Numeric.cpp
index 003f3413e21616d22446f5726ec8a771bdd042f1..1a124c83c503ce4ede6214348fa08acb2ed595ae 100644
--- a/Numeric/Numeric.cpp
+++ b/Numeric/Numeric.cpp
@@ -34,7 +34,7 @@ double myacos(double a)
     return acos(a);
 }
 double norm2(double a[3][3]) {
-  double norm2sq = 
+  double norm2sq =
     SQU(a[0][0])+
     SQU(a[0][1])+
     SQU(a[0][2])+
@@ -1249,7 +1249,6 @@ int intersection_segments(SPoint3 &p1, SPoint3 &p2,
 
 void computeMeanPlaneSimple(const std::vector<SPoint3> &points, mean_plane &meanPlane)
 {
-
   double xm = 0., ym = 0., zm = 0.;
   int ndata = points.size();
   int na = 3;
@@ -1284,7 +1283,7 @@ void computeMeanPlaneSimple(const std::vector<SPoint3> &points, mean_plane &mean
   res[0] = V(0, min);
   res[1] = V(1, min);
   res[2] = V(2, min);
-  
+
   double xxx = norme(res);
   res[3] /= xxx;
   double ex[3], t1[3], t2[3];
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index cf2b40955b0658cd6885c32d8239dc2bc83e0425..1cf226fc160d5e151d193bdc57112de4c56e7e45 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 2.5.  */
+/* A Bison parser, made by GNU Bison 2.4.3.  */
 
-/* Bison implementation for Yacc-like parsers in C
+/* Skeleton implementation for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2009, 2010 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -44,7 +45,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.4.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -73,7 +74,7 @@
 
 /* Copy the first part of user declarations.  */
 
-/* Line 268 of yacc.c  */
+/* Line 189 of yacc.c  */
 #line 1 "Gmsh.y"
 
 // Gmsh - Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle
@@ -166,8 +167,8 @@ struct doubleXstring{
 
 
 
-/* Line 268 of yacc.c  */
-#line 171 "Gmsh.tab.cpp"
+/* Line 189 of yacc.c  */
+#line 172 "Gmsh.tab.cpp"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -343,7 +344,7 @@ struct doubleXstring{
 typedef union YYSTYPE
 {
 
-/* Line 293 of yacc.c  */
+/* Line 214 of yacc.c  */
 #line 92 "Gmsh.y"
 
   char *c;
@@ -356,8 +357,8 @@ typedef union YYSTYPE
 
 
 
-/* Line 293 of yacc.c  */
-#line 361 "Gmsh.tab.cpp"
+/* Line 214 of yacc.c  */
+#line 362 "Gmsh.tab.cpp"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -368,8 +369,8 @@ typedef union YYSTYPE
 /* Copy the second part of user declarations.  */
 
 
-/* Line 343 of yacc.c  */
-#line 373 "Gmsh.tab.cpp"
+/* Line 264 of yacc.c  */
+#line 374 "Gmsh.tab.cpp"
 
 #ifdef short
 # undef short
@@ -472,11 +473,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef EXIT_SUCCESS
-#      define EXIT_SUCCESS 0
+#     ifndef _STDLIB_H
+#      define _STDLIB_H 1
 #     endif
 #    endif
 #   endif
@@ -499,24 +500,24 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
+#  if (defined __cplusplus && ! defined _STDLIB_H \
        && ! ((defined YYMALLOC || defined malloc) \
 	     && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef EXIT_SUCCESS
-#    define EXIT_SUCCESS 0
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
@@ -545,7 +546,23 @@ union yyalloc
      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-# define YYCOPY_NEEDED 1
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (YYID (0))
+#  endif
+# endif
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -565,26 +582,6 @@ union yyalloc
 
 #endif
 
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  5
 /* YYLAST -- Last index in YYTABLE.  */
@@ -1190,8 +1187,8 @@ static const yytype_uint8 yyr2[] =
        4,     4,     6,     1,     3
 };
 
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
-   Performed when YYTABLE doesn't specify something else to do.  Zero
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
@@ -1542,7 +1539,8 @@ static const yytype_int16 yypgoto[] =
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If YYTABLE_NINF, syntax error.  */
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
 #define YYTABLE_NINF -5
 static const yytype_int16 yytable[] =
 {
@@ -2359,12 +2357,6 @@ static const yytype_int16 yytable[] =
      361,   362,     0,     0,     0,     0,   363
 };
 
-#define yypact_value_is_default(yystate) \
-  ((yystate) == (-1076))
-
-#define yytable_value_is_error(yytable_value) \
-  YYID (0)
-
 static const yytype_int16 yycheck[] =
 {
        6,     4,     3,   211,     6,   414,   415,     6,     6,   335,
@@ -3372,6 +3364,7 @@ do								\
     {								\
       yychar = (Token);						\
       yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
       YYPOPSTACK (1);						\
       goto yybackup;						\
     }								\
@@ -3413,10 +3406,19 @@ while (YYID (0))
 #endif
 
 
-/* This macro is provided for backward compatibility. */
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+	      (Loc).first_line, (Loc).first_column,	\
+	      (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
 #endif
 
 
@@ -3608,6 +3610,7 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
+
 
 #if YYERROR_VERBOSE
 
@@ -3710,142 +3713,115 @@ yytnamerr (char *yyres, const char *yystr)
 }
 # endif
 
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
-   about the unexpected token YYTOKEN for the state stack whose top is
-   YYSSP.
-
-   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
-   not large enough to hold the message.  In that case, also set
-   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
-   required number of bytes is too large to store.  */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
+/* Copy into YYRESULT an error message about the unexpected token
+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
+   including the terminating null byte.  If YYRESULT is null, do not
+   copy anything; just return the number of bytes that would be
+   copied.  As a special case, return 0 if an ordinary "syntax error"
+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
+   size calculation.  */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
 {
-  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
-  YYSIZE_T yysize1;
-  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-  /* Internationalized format string. */
-  const char *yyformat = 0;
-  /* Arguments of yyformat. */
-  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
-  int yycount = 0;
-
-  /* There are many possibilities here to consider:
-     - Assume YYFAIL is not used.  It's too flawed to consider.  See
-       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
-       for details.  YYERROR is fine as it does not invoke this
-       function.
-     - If this state is a consistent state with a default action, then
-       the only way this function was invoked is if the default action
-       is an error action.  In that case, don't check for expected
-       tokens because there are none.
-     - The only way there can be no lookahead present (in yychar) is if
-       this state is a consistent state with a default action.  Thus,
-       detecting the absence of a lookahead is sufficient to determine
-       that there is no unexpected or expected token to report.  In that
-       case, just report a simple "syntax error".
-     - Don't assume there isn't a lookahead just because this state is a
-       consistent state with a default action.  There might have been a
-       previous inconsistent state, consistent state with a non-default
-       action, or user semantic action that manipulated yychar.
-     - Of course, the expected token list depends on states to have
-       correct lookahead information, and it depends on the parser not
-       to perform extra reductions after fetching a lookahead from the
-       scanner and before detecting a syntax error.  Thus, state merging
-       (from LALR or IELR) and default reductions corrupt the expected
-       token list.  However, the list is correct for canonical LR with
-       one exception: it will still contain any token that will not be
-       accepted due to an error action in a later state.
-  */
-  if (yytoken != YYEMPTY)
-    {
-      int yyn = yypact[*yyssp];
-      yyarg[yycount++] = yytname[yytoken];
-      if (!yypact_value_is_default (yyn))
-        {
-          /* Start YYX at -YYN if negative to avoid negative indexes in
-             YYCHECK.  In other words, skip the first -YYN actions for
-             this state because they are default actions.  */
-          int yyxbegin = yyn < 0 ? -yyn : 0;
-          /* Stay within bounds of both yycheck and yytname.  */
-          int yychecklim = YYLAST - yyn + 1;
-          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-          int yyx;
-
-          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-                && !yytable_value_is_error (yytable[yyx + yyn]))
-              {
-                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-                  {
-                    yycount = 1;
-                    yysize = yysize0;
-                    break;
-                  }
-                yyarg[yycount++] = yytname[yyx];
-                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-                if (! (yysize <= yysize1
-                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                  return 2;
-                yysize = yysize1;
-              }
-        }
-    }
+  int yyn = yypact[yystate];
 
-  switch (yycount)
-    {
-# define YYCASE_(N, S)                      \
-      case N:                               \
-        yyformat = S;                       \
-      break
-      YYCASE_(0, YY_("syntax error"));
-      YYCASE_(1, YY_("syntax error, unexpected %s"));
-      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
-      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
-    }
+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+    return 0;
+  else
+    {
+      int yytype = YYTRANSLATE (yychar);
+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+      YYSIZE_T yysize = yysize0;
+      YYSIZE_T yysize1;
+      int yysize_overflow = 0;
+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+      int yyx;
+
+# if 0
+      /* This is so xgettext sees the translatable formats that are
+	 constructed on the fly.  */
+      YY_("syntax error, unexpected %s");
+      YY_("syntax error, unexpected %s, expecting %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+      char *yyfmt;
+      char const *yyf;
+      static char const yyunexpected[] = "syntax error, unexpected %s";
+      static char const yyexpecting[] = ", expecting %s";
+      static char const yyor[] = " or %s";
+      char yyformat[sizeof yyunexpected
+		    + sizeof yyexpecting - 1
+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+		       * (sizeof yyor - 1))];
+      char const *yyprefix = yyexpecting;
+
+      /* Start YYX at -YYN if negative to avoid negative indexes in
+	 YYCHECK.  */
+      int yyxbegin = yyn < 0 ? -yyn : 0;
+
+      /* Stay within bounds of both yycheck and yytname.  */
+      int yychecklim = YYLAST - yyn + 1;
+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+      int yycount = 1;
+
+      yyarg[0] = yytname[yytype];
+      yyfmt = yystpcpy (yyformat, yyunexpected);
+
+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	  {
+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+	      {
+		yycount = 1;
+		yysize = yysize0;
+		yyformat[sizeof yyunexpected - 1] = '\0';
+		break;
+	      }
+	    yyarg[yycount++] = yytname[yyx];
+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+	    yysize_overflow |= (yysize1 < yysize);
+	    yysize = yysize1;
+	    yyfmt = yystpcpy (yyfmt, yyprefix);
+	    yyprefix = yyor;
+	  }
 
-  yysize1 = yysize + yystrlen (yyformat);
-  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-    return 2;
-  yysize = yysize1;
+      yyf = YY_(yyformat);
+      yysize1 = yysize + yystrlen (yyf);
+      yysize_overflow |= (yysize1 < yysize);
+      yysize = yysize1;
 
-  if (*yymsg_alloc < yysize)
-    {
-      *yymsg_alloc = 2 * yysize;
-      if (! (yysize <= *yymsg_alloc
-             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
-        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
-      return 1;
-    }
+      if (yysize_overflow)
+	return YYSIZE_MAXIMUM;
 
-  /* Avoid sprintf, as that infringes on the user's name space.
-     Don't have undefined behavior even if the translation
-     produced a string with the wrong number of "%s"s.  */
-  {
-    char *yyp = *yymsg;
-    int yyi = 0;
-    while ((*yyp = *yyformat) != '\0')
-      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
-        {
-          yyp += yytnamerr (yyp, yyarg[yyi++]);
-          yyformat += 2;
-        }
-      else
-        {
-          yyp++;
-          yyformat++;
-        }
-  }
-  return 0;
+      if (yyresult)
+	{
+	  /* Avoid sprintf, as that infringes on the user's name space.
+	     Don't have undefined behavior even if the translation
+	     produced a string with the wrong number of "%s"s.  */
+	  char *yyp = yyresult;
+	  int yyi = 0;
+	  while ((*yyp = *yyf) != '\0')
+	    {
+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		{
+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
+		  yyf += 2;
+		}
+	      else
+		{
+		  yyp++;
+		  yyf++;
+		}
+	    }
+	}
+      return yysize;
+    }
 }
 #endif /* YYERROR_VERBOSE */
+
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
@@ -3878,7 +3854,6 @@ yydestruct (yymsg, yytype, yyvaluep)
     }
 }
 
-
 /* Prevent warnings from -Wmissing-prototypes.  */
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
@@ -3905,9 +3880,10 @@ YYSTYPE yylval;
 int yynerrs;
 
 
-/*----------.
-| yyparse.  |
-`----------*/
+
+/*-------------------------.
+| yyparse or yypush_parse.  |
+`-------------------------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -3931,6 +3907,8 @@ yyparse ()
 #endif
 #endif
 {
+
+
     int yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
@@ -4085,7 +4063,7 @@ yybackup:
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yypact_value_is_default (yyn))
+  if (yyn == YYPACT_NINF)
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
@@ -4116,8 +4094,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yytable_value_is_error (yyn))
-        goto yyerrlab;
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -4172,171 +4150,171 @@ yyreduce:
     {
         case 3:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 165 "Gmsh.y"
-    { yyerrok; return 1; }
+    { yyerrok; return 1; ;}
     break;
 
   case 6:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 176 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 7:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 177 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 8:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 178 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 9:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 179 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 10:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 180 "Gmsh.y"
-    { List_Delete((yyvsp[(1) - (1)].l)); return 1; }
+    { List_Delete((yyvsp[(1) - (1)].l)); return 1; ;}
     break;
 
   case 11:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 181 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 12:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 182 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 13:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 183 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 14:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 184 "Gmsh.y"
-    { List_Delete((yyvsp[(1) - (1)].l)); return 1; }
+    { List_Delete((yyvsp[(1) - (1)].l)); return 1; ;}
     break;
 
   case 15:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 185 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 16:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 186 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 17:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 187 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 18:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 188 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 19:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 189 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 20:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 190 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 21:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 191 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 22:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 192 "Gmsh.y"
-    { return 1; }
+    { return 1; ;}
     break;
 
   case 23:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 197 "Gmsh.y"
     {
       (yyval.c) = (char*)"w";
-    }
+    ;}
     break;
 
   case 24:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 201 "Gmsh.y"
     {
       (yyval.c) = (char*)"a";
-    }
+    ;}
     break;
 
   case 25:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 208 "Gmsh.y"
     {
       Msg::Direct((yyvsp[(3) - (5)].c));
       Free((yyvsp[(3) - (5)].c));
-    }
+    ;}
     break;
 
   case 26:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 213 "Gmsh.y"
     {
       Msg::Error((yyvsp[(3) - (5)].c));
       Free((yyvsp[(3) - (5)].c));
-    }
+    ;}
     break;
 
   case 27:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 218 "Gmsh.y"
     {
       std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(6) - (7)].c));
@@ -4350,12 +4328,12 @@ yyreduce:
       }
       Free((yyvsp[(3) - (7)].c));
       Free((yyvsp[(6) - (7)].c));
-    }
+    ;}
     break;
 
   case 28:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 232 "Gmsh.y"
     {
       char tmpstring[5000];
@@ -4368,12 +4346,12 @@ yyreduce:
 	Msg::Direct(tmpstring);
       Free((yyvsp[(3) - (7)].c));
       List_Delete((yyvsp[(5) - (7)].l));
-    }
+    ;}
     break;
 
   case 29:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 245 "Gmsh.y"
     {
       char tmpstring[5000];
@@ -4386,12 +4364,12 @@ yyreduce:
 	Msg::Error(tmpstring);
       Free((yyvsp[(3) - (7)].c));
       List_Delete((yyvsp[(5) - (7)].l));
-    }
+    ;}
     break;
 
   case 30:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 258 "Gmsh.y"
     {
       char tmpstring[5000];
@@ -4414,12 +4392,12 @@ yyreduce:
       Free((yyvsp[(3) - (9)].c));
       Free((yyvsp[(8) - (9)].c));
       List_Delete((yyvsp[(5) - (9)].l));
-    }
+    ;}
     break;
 
   case 31:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 286 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4433,12 +4411,12 @@ yyreduce:
 	delete ViewData;
 #endif
       Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(2) - (6)].c));
-    }
+    ;}
     break;
 
   case 32:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 300 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4449,12 +4427,12 @@ yyreduce:
       }
 #endif
       Free((yyvsp[(2) - (6)].c));
-    }
+    ;}
     break;
 
   case 33:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 311 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4465,51 +4443,51 @@ yyreduce:
       }
 #endif
       Free((yyvsp[(2) - (6)].c));
-    }
+    ;}
     break;
 
   case 34:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 325 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       ViewData = new PViewDataList();
 #endif
-    }
+    ;}
     break;
 
   case 40:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 339 "Gmsh.y"
-    { ViewCoord.push_back((yyvsp[(1) - (1)].d)); }
+    { ViewCoord.push_back((yyvsp[(1) - (1)].d)); ;}
     break;
 
   case 41:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 341 "Gmsh.y"
-    { ViewCoord.push_back((yyvsp[(3) - (3)].d)); }
+    { ViewCoord.push_back((yyvsp[(3) - (3)].d)); ;}
     break;
 
   case 42:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 346 "Gmsh.y"
-    { if(ViewValueList) ViewValueList->push_back((yyvsp[(1) - (1)].d)); }
+    { if(ViewValueList) ViewValueList->push_back((yyvsp[(1) - (1)].d)); ;}
     break;
 
   case 43:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 348 "Gmsh.y"
-    { if(ViewValueList) ViewValueList->push_back((yyvsp[(3) - (3)].d)); }
+    { if(ViewValueList) ViewValueList->push_back((yyvsp[(3) - (3)].d)); ;}
     break;
 
   case 44:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 353 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4613,12 +4591,12 @@ yyreduce:
 #endif
       ViewCoord.clear();
       Free((yyvsp[(1) - (1)].c));
-    }
+    ;}
     break;
 
   case 45:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 457 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4628,47 +4606,47 @@ yyreduce:
 	    ViewValueList->push_back(ViewCoord[3 * j + i]);
       }
 #endif
-    }
+    ;}
     break;
 
   case 46:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 467 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       if(ViewValueList) (*ViewNumList)++;
 #endif
-    }
+    ;}
     break;
 
   case 47:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 476 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       for(int i = 0; i < (int)strlen((yyvsp[(1) - (1)].c)) + 1; i++) ViewData->T2C.push_back((yyvsp[(1) - (1)].c)[i]);
 #endif
       Free((yyvsp[(1) - (1)].c));
-    }
+    ;}
     break;
 
   case 48:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 483 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       for(int i = 0; i < (int)strlen((yyvsp[(3) - (3)].c)) + 1; i++) ViewData->T2C.push_back((yyvsp[(3) - (3)].c)[i]);
 #endif
       Free((yyvsp[(3) - (3)].c));
-    }
+    ;}
     break;
 
   case 49:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 493 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4677,47 +4655,47 @@ yyreduce:
       ViewData->T2D.push_back((yyvsp[(7) - (8)].d));
       ViewData->T2D.push_back(ViewData->T2C.size());
 #endif
-    }
+    ;}
     break;
 
   case 50:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 502 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       ViewData->NbT2++;
 #endif
-    }
+    ;}
     break;
 
   case 51:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 511 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       for(int i = 0; i < (int)strlen((yyvsp[(1) - (1)].c)) + 1; i++) ViewData->T3C.push_back((yyvsp[(1) - (1)].c)[i]);
 #endif
       Free((yyvsp[(1) - (1)].c));
-    }
+    ;}
     break;
 
   case 52:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 518 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       for(int i = 0; i < (int)strlen((yyvsp[(3) - (3)].c)) + 1; i++) ViewData->T3C.push_back((yyvsp[(3) - (3)].c)[i]);
 #endif
       Free((yyvsp[(3) - (3)].c));
-    }
+    ;}
     break;
 
   case 53:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 528 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4725,23 +4703,23 @@ yyreduce:
       ViewData->T3D.push_back((yyvsp[(7) - (10)].d)); ViewData->T3D.push_back((yyvsp[(9) - (10)].d));
       ViewData->T3D.push_back(ViewData->T3C.size());
 #endif
-    }
+    ;}
     break;
 
   case 54:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 536 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       ViewData->NbT3++;
 #endif
-    }
+    ;}
     break;
 
   case 55:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 546 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4757,12 +4735,12 @@ yyreduce:
       ViewData->setInterpolationMatrices(type, ListOfListOfDouble2Matrix((yyvsp[(3) - (8)].l)),
                                          ListOfListOfDouble2Matrix((yyvsp[(6) - (8)].l)));
 #endif
-    }
+    ;}
     break;
 
   case 56:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 565 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -4778,80 +4756,80 @@ yyreduce:
                                          ListOfListOfDouble2Matrix((yyvsp[(9) - (14)].l)),
                                          ListOfListOfDouble2Matrix((yyvsp[(12) - (14)].l)));
 #endif
-    }
+    ;}
     break;
 
   case 57:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 584 "Gmsh.y"
     {
 #if defined(HAVE_POST)
       ViewValueList = &ViewData->Time;
 #endif
-    }
+    ;}
     break;
 
   case 58:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 590 "Gmsh.y"
     {
-    }
+    ;}
     break;
 
   case 59:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 597 "Gmsh.y"
-    { (yyval.i) = 0; }
+    { (yyval.i) = 0; ;}
     break;
 
   case 60:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 598 "Gmsh.y"
-    { (yyval.i) = 1; }
+    { (yyval.i) = 1; ;}
     break;
 
   case 61:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 599 "Gmsh.y"
-    { (yyval.i) = 2; }
+    { (yyval.i) = 2; ;}
     break;
 
   case 62:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 600 "Gmsh.y"
-    { (yyval.i) = 3; }
+    { (yyval.i) = 3; ;}
     break;
 
   case 63:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 601 "Gmsh.y"
-    { (yyval.i) = 4; }
+    { (yyval.i) = 4; ;}
     break;
 
   case 64:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 605 "Gmsh.y"
-    { (yyval.i) = 1; }
+    { (yyval.i) = 1; ;}
     break;
 
   case 65:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 606 "Gmsh.y"
-    { (yyval.i) = -1; }
+    { (yyval.i) = -1; ;}
     break;
 
   case 67:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 615 "Gmsh.y"
     {
       if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c)) && (yyvsp[(2) - (4)].i) && List_Nbr((yyvsp[(3) - (4)].l)) == 1){
@@ -4911,12 +4889,12 @@ yyreduce:
       }
       Free((yyvsp[(1) - (4)].c));
       List_Delete((yyvsp[(3) - (4)].l));
-    }
+    ;}
     break;
 
   case 68:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 677 "Gmsh.y"
     {
       gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (6)].c)]);
@@ -4945,12 +4923,12 @@ yyreduce:
       }
       Free((yyvsp[(1) - (6)].c));
       List_Delete((yyvsp[(5) - (6)].l));
-    }
+    ;}
     break;
 
   case 69:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 707 "Gmsh.y"
     {
       int index = (int)(yyvsp[(3) - (7)].d);
@@ -4983,12 +4961,12 @@ yyreduce:
           yymsg(0, "Variable '%s' is not a list", (yyvsp[(1) - (7)].c));
       }
       Free((yyvsp[(1) - (7)].c));
-    }
+    ;}
     break;
 
   case 70:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 742 "Gmsh.y"
     {
       int index = (int)(yyvsp[(3) - (7)].d);
@@ -5021,12 +4999,12 @@ yyreduce:
           yymsg(0, "Variable '%s' is not a list", (yyvsp[(1) - (7)].c));
       }
       Free((yyvsp[(1) - (7)].c));
-    }
+    ;}
     break;
 
   case 71:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 776 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(4) - (9)].l)) != List_Nbr((yyvsp[(8) - (9)].l))){
@@ -5072,12 +5050,12 @@ yyreduce:
       Free((yyvsp[(1) - (9)].c));
       List_Delete((yyvsp[(4) - (9)].l));
       List_Delete((yyvsp[(8) - (9)].l));
-    }
+    ;}
     break;
 
   case 72:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 824 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(4) - (9)].l)) != List_Nbr((yyvsp[(8) - (9)].l))){
@@ -5123,12 +5101,12 @@ yyreduce:
       Free((yyvsp[(1) - (9)].c));
       List_Delete((yyvsp[(4) - (9)].l));
       List_Delete((yyvsp[(8) - (9)].l));
-    }
+    ;}
     break;
 
   case 73:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 871 "Gmsh.y"
     {
       if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c)))
@@ -5143,12 +5121,12 @@ yyreduce:
           yymsg(0, "Variable '%s' is a list", (yyvsp[(1) - (3)].c));
       }
       Free((yyvsp[(1) - (3)].c));
-    }
+    ;}
     break;
 
   case 74:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 886 "Gmsh.y"
     {
       if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c)))
@@ -5164,45 +5142,45 @@ yyreduce:
           yymsg(0, "Variable '%s' is not a list", (yyvsp[(1) - (6)].c));
       }
       Free((yyvsp[(1) - (6)].c));
-    }
+    ;}
     break;
 
   case 75:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 902 "Gmsh.y"
     {
       gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)] = std::string((yyvsp[(3) - (4)].c));
       Free((yyvsp[(1) - (4)].c));
       Free((yyvsp[(3) - (4)].c));
-    }
+    ;}
     break;
 
   case 76:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 911 "Gmsh.y"
     {
       std::string tmp((yyvsp[(5) - (6)].c));
       StringOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), tmp);
       Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c));
-    }
+    ;}
     break;
 
   case 77:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 917 "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);
       Free((yyvsp[(1) - (9)].c)); Free((yyvsp[(6) - (9)].c)); Free((yyvsp[(8) - (9)].c));
-    }
+    ;}
     break;
 
   case 78:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 926 "Gmsh.y"
     {
       double d = 0.;
@@ -5220,12 +5198,12 @@ yyreduce:
 	NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), d);
       }
       Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(3) - (6)].c));
-    }
+    ;}
     break;
 
   case 79:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 944 "Gmsh.y"
     {
       double d = 0.;
@@ -5243,12 +5221,12 @@ yyreduce:
 	NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), d);
       }
       Free((yyvsp[(1) - (9)].c)); Free((yyvsp[(6) - (9)].c));
-    }
+    ;}
     break;
 
   case 80:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 962 "Gmsh.y"
     {
       double d = 0.;
@@ -5257,12 +5235,12 @@ yyreduce:
 	NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (5)].c), 0, (yyvsp[(3) - (5)].c), d);
       }
       Free((yyvsp[(1) - (5)].c)); Free((yyvsp[(3) - (5)].c));
-    }
+    ;}
     break;
 
   case 81:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 971 "Gmsh.y"
     {
       double d = 0.;
@@ -5271,32 +5249,32 @@ yyreduce:
 	NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (8)].c), (int)(yyvsp[(3) - (8)].d), (yyvsp[(6) - (8)].c), d);
       }
       Free((yyvsp[(1) - (8)].c)); Free((yyvsp[(6) - (8)].c));
-    }
+    ;}
     break;
 
   case 82:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 983 "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));
-    }
+    ;}
     break;
 
   case 83:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 988 "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));
-    }
+    ;}
     break;
 
   case 84:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 996 "Gmsh.y"
     {
       GmshColorTable *ct = GetColorTable(0);
@@ -5316,12 +5294,12 @@ yyreduce:
       }
       Free((yyvsp[(1) - (6)].c));
       List_Delete((yyvsp[(5) - (6)].l));
-    }
+    ;}
     break;
 
   case 85:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1016 "Gmsh.y"
     {
       GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (9)].d));
@@ -5341,12 +5319,12 @@ yyreduce:
       }
       Free((yyvsp[(1) - (9)].c));
       List_Delete((yyvsp[(8) - (9)].l));
-    }
+    ;}
     break;
 
   case 86:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1039 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
@@ -5357,12 +5335,12 @@ yyreduce:
       else
 	yymsg(0, "Unknown command %s Field", (yyvsp[(1) - (5)].c));
 #endif
-    }
+    ;}
     break;
 
   case 87:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1050 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
@@ -5370,12 +5348,12 @@ yyreduce:
 	yymsg(0, "Cannot create field %i of type '%s'", (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c));
 #endif
       Free((yyvsp[(6) - (7)].c));
-    }
+    ;}
     break;
 
   case 88:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1058 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
@@ -5397,12 +5375,12 @@ yyreduce:
 	yymsg(0, "No field with id %i", (int)(yyvsp[(3) - (9)].d));
 #endif
       Free((yyvsp[(6) - (9)].c));
-    }
+    ;}
     break;
 
   case 89:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1080 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
@@ -5425,12 +5403,12 @@ yyreduce:
 #endif
       Free((yyvsp[(6) - (9)].c));
       Free((yyvsp[(8) - (9)].c));
-    }
+    ;}
     break;
 
   case 90:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1103 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
@@ -5456,12 +5434,12 @@ yyreduce:
 #endif
       Free((yyvsp[(6) - (11)].c));
       List_Delete((yyvsp[(9) - (11)].l));
-    }
+    ;}
     break;
 
   case 91:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1129 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
@@ -5479,12 +5457,12 @@ yyreduce:
 	yymsg(0, "No field with id %i", (int)(yyvsp[(3) - (7)].d));
 #endif
       Free((yyvsp[(6) - (7)].c));
-    }
+    ;}
     break;
 
   case 92:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1150 "Gmsh.y"
     {
 #if defined(HAVE_PLUGINS)
@@ -5496,12 +5474,12 @@ yyreduce:
       }
 #endif
       Free((yyvsp[(3) - (9)].c)); Free((yyvsp[(6) - (9)].c));
-    }
+    ;}
     break;
 
   case 93:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1162 "Gmsh.y"
     {
 #if defined(HAVE_PLUGINS)
@@ -5513,12 +5491,12 @@ yyreduce:
       }
 #endif
       Free((yyvsp[(3) - (9)].c)); Free((yyvsp[(6) - (9)].c)); Free((yyvsp[(8) - (9)].c));
-    }
+    ;}
     break;
 
   case 97:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1180 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (3)].c));
@@ -5529,12 +5507,12 @@ yyreduce:
         gmsh_yysymbols[key].value = val;
       }
       Free((yyvsp[(3) - (3)].c));
-    }
+    ;}
     break;
 
   case 98:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1191 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (5)].c));
@@ -5545,19 +5523,19 @@ yyreduce:
         gmsh_yysymbols[key].value = val;
       }
       Free((yyvsp[(3) - (5)].c));
-    }
+    ;}
     break;
 
   case 99:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1202 "Gmsh.y"
-    { floatOptions.clear(); charOptions.clear(); }
+    { floatOptions.clear(); charOptions.clear(); ;}
     break;
 
   case 100:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1204 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (9)].c));
@@ -5567,12 +5545,12 @@ yyreduce:
         gmsh_yysymbols[key].value = val;
       }
       Free((yyvsp[(3) - (9)].c));
-    }
+    ;}
     break;
 
   case 101:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1214 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (5)].c)), val((yyvsp[(5) - (5)].c));
@@ -5583,19 +5561,19 @@ yyreduce:
       }
       Free((yyvsp[(3) - (5)].c));
       Free((yyvsp[(5) - (5)].c));
-    }
+    ;}
     break;
 
   case 102:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1225 "Gmsh.y"
-    { floatOptions.clear(); charOptions.clear(); }
+    { floatOptions.clear(); charOptions.clear(); ;}
     break;
 
   case 103:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1227 "Gmsh.y"
     {
       std::string key((yyvsp[(3) - (9)].c)), val((yyvsp[(6) - (9)].c));
@@ -5605,33 +5583,33 @@ yyreduce:
       }
       Free((yyvsp[(3) - (9)].c));
       Free((yyvsp[(6) - (9)].c));
-    }
+    ;}
     break;
 
   case 104:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1240 "Gmsh.y"
     {
       (yyval.l) = List_Create(20,20,sizeof(doubleXstring));
       doubleXstring v = {(yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].c)};
       List_Add((yyval.l), &v);
-    }
+    ;}
     break;
 
   case 105:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1246 "Gmsh.y"
     {
       doubleXstring v = {(yyvsp[(3) - (5)].d), (yyvsp[(5) - (5)].c)};
       List_Add((yyval.l), &v);
-    }
+    ;}
     break;
 
   case 108:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1258 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (3)].c));
@@ -5642,12 +5620,12 @@ yyreduce:
       }
       Free((yyvsp[(2) - (3)].c));
       List_Delete((yyvsp[(3) - (3)].l));
-    }
+    ;}
     break;
 
   case 109:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1269 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (5)].c));
@@ -5661,12 +5639,12 @@ yyreduce:
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++)
         Free(((doubleXstring*)List_Pointer((yyvsp[(4) - (5)].l), i))->s);
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 110:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1284 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (3)].c));
@@ -5674,24 +5652,24 @@ yyreduce:
       charOptions[key].push_back(val);
       Free((yyvsp[(2) - (3)].c));
       Free((yyvsp[(3) - (3)].c));
-    }
+    ;}
     break;
 
   case 113:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1300 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (3)].c));
       double val = (yyvsp[(3) - (3)].d);
       floatOptions[key].push_back(val);
       Free((yyvsp[(2) - (3)].c));
-    }
+    ;}
     break;
 
   case 114:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1308 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (3)].c));
@@ -5699,12 +5677,12 @@ yyreduce:
       charOptions[key].push_back(val);
       Free((yyvsp[(2) - (3)].c));
       Free((yyvsp[(3) - (3)].c));
-    }
+    ;}
     break;
 
   case 115:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1317 "Gmsh.y"
     {
       std::string key((yyvsp[(2) - (5)].c));
@@ -5717,42 +5695,42 @@ yyreduce:
       }
       Free((yyvsp[(2) - (5)].c));
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 116:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1336 "Gmsh.y"
     {
       (yyval.i) = (int)(yyvsp[(1) - (1)].d);
-    }
+    ;}
     break;
 
   case 117:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1340 "Gmsh.y"
     {
       (yyval.i) = GModel::current()->setPhysicalName
         (std::string((yyvsp[(1) - (1)].c)), curPhysDim,
          ++GModel::current()->getGEOInternals()->MaxPhysicalNum);
       Free((yyvsp[(1) - (1)].c));
-    }
+    ;}
     break;
 
   case 118:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1350 "Gmsh.y"
     {
       (yyval.l) = 0;
-    }
+    ;}
     break;
 
   case 119:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1354 "Gmsh.y"
     {
       (yyval.l) = List_Create(1, 1, sizeof(Vertex*));
@@ -5762,30 +5740,30 @@ yyreduce:
       else{
 	List_Add((yyval.l), &v);
       }
-    }
+    ;}
     break;
 
   case 120:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1366 "Gmsh.y"
     {
       for(int i = 0; i < 4; i++) (yyval.v)[i] = 0.;
-    }
+    ;}
     break;
 
   case 121:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1370 "Gmsh.y"
     {
       for(int i = 0; i < 4; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i];
-    }
+    ;}
     break;
 
   case 122:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1380 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
@@ -5808,21 +5786,21 @@ yyreduce:
       }
       (yyval.s).Type = MSH_POINT;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 123:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1403 "Gmsh.y"
     {
       curPhysDim = 0;
-    }
+    ;}
     break;
 
   case 124:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1407 "Gmsh.y"
     {
       int num = (int)(yyvsp[(5) - (9)].i);
@@ -5838,12 +5816,12 @@ yyreduce:
       List_Delete((yyvsp[(8) - (9)].l));
       (yyval.s).Type = MSH_PHYSICAL_POINT;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 125:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1423 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
@@ -5862,12 +5840,12 @@ yyreduce:
       // dummy values
       (yyval.s).Type = 0;
       (yyval.s).Num = 0;
-    }
+    ;}
     break;
 
   case 126:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1445 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
@@ -5885,12 +5863,12 @@ yyreduce:
       List_Delete((yyvsp[(6) - (7)].l));
       (yyval.s).Type = MSH_SEGM_LINE;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 127:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1463 "Gmsh.y"
     {
       for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
@@ -5911,12 +5889,12 @@ yyreduce:
 	  }
 	}
       }
-    }
+    ;}
     break;
 
   case 128:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1484 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
@@ -5934,12 +5912,12 @@ yyreduce:
       List_Delete((yyvsp[(6) - (7)].l));
       (yyval.s).Type = MSH_SEGM_SPLN;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 129:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1502 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (8)].d);
@@ -5969,12 +5947,12 @@ yyreduce:
       List_Delete((yyvsp[(6) - (8)].l));
       (yyval.s).Type = MSH_SEGM_CIRC;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 130:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1532 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (8)].d);
@@ -6004,12 +5982,12 @@ yyreduce:
       List_Delete((yyvsp[(6) - (8)].l));
       (yyval.s).Type = MSH_SEGM_ELLI;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 131:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1562 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
@@ -6027,12 +6005,12 @@ yyreduce:
       List_Delete((yyvsp[(6) - (7)].l));
       (yyval.s).Type = MSH_SEGM_BSPLN;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 132:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1580 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
@@ -6050,12 +6028,12 @@ yyreduce:
       List_Delete((yyvsp[(6) - (7)].l));
       (yyval.s).Type = MSH_SEGM_BEZIER;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 133:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1598 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (11)].d);
@@ -6081,12 +6059,12 @@ yyreduce:
       List_Delete((yyvsp[(8) - (11)].l));
       (yyval.s).Type = MSH_SEGM_NURBS;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 134:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1624 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
@@ -6104,12 +6082,12 @@ yyreduce:
       Free((yyvsp[(2) - (8)].c));
       (yyval.s).Type = MSH_SEGM_LOOP;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 135:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1642 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
@@ -6127,21 +6105,21 @@ yyreduce:
       List_Delete((yyvsp[(7) - (8)].l));
       (yyval.s).Type = MSH_SEGM_COMPOUND;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 136:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1660 "Gmsh.y"
     {
       curPhysDim = 1;
-    }
+    ;}
     break;
 
   case 137:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1664 "Gmsh.y"
     {
       int num = (int)(yyvsp[(5) - (9)].i);
@@ -6157,12 +6135,12 @@ yyreduce:
       List_Delete((yyvsp[(8) - (9)].l));
       (yyval.s).Type = MSH_PHYSICAL_LINE;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 138:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1683 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
@@ -6180,12 +6158,12 @@ yyreduce:
       List_Delete((yyvsp[(7) - (8)].l));
       (yyval.s).Type = MSH_SURF_PLAN;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 139:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1701 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (9)].d), type = 0;
@@ -6224,46 +6202,46 @@ yyreduce:
       List_Delete((yyvsp[(7) - (9)].l));
       (yyval.s).Type = type;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 140:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1740 "Gmsh.y"
     {
       myGmshSurface = 0;
       (yyval.s).Type = 0;
       (yyval.s).Num = 0;
-    }
+    ;}
     break;
 
   case 141:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1746 "Gmsh.y"
     {
       myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d));
       (yyval.s).Type = 0;
       (yyval.s).Num = 0;
-    }
+    ;}
     break;
 
   case 142:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1752 "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));
       (yyval.s).Type = 0;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 143:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1759 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
@@ -6288,12 +6266,12 @@ yyreduce:
       }
       (yyval.s).Type = 0;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 144:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1784 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
@@ -6318,12 +6296,12 @@ yyreduce:
       }
       (yyval.s).Type = 0;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 145:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1809 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
@@ -6340,12 +6318,12 @@ yyreduce:
       Free((yyvsp[(2) - (8)].c));
       (yyval.s).Type = MSH_SURF_LOOP;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 146:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1826 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
@@ -6362,12 +6340,12 @@ yyreduce:
       List_Delete((yyvsp[(7) - (8)].l));
       (yyval.s).Type = MSH_SURF_COMPOUND;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 147:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1844 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (12)].d);
@@ -6397,21 +6375,21 @@ yyreduce:
       Free((yyvsp[(8) - (12)].c));
       (yyval.s).Type = MSH_SURF_COMPOUND;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 148:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1874 "Gmsh.y"
     {
       curPhysDim = 2;
-    }
+    ;}
     break;
 
   case 149:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1878 "Gmsh.y"
     {
       int num = (int)(yyvsp[(5) - (9)].i);
@@ -6427,12 +6405,12 @@ yyreduce:
       List_Delete((yyvsp[(8) - (9)].l));
       (yyval.s).Type = MSH_PHYSICAL_SURFACE;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 150:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1898 "Gmsh.y"
     {
       yymsg(0, "'Complex Volume' command is deprecated: use 'Volume' instead");
@@ -6450,12 +6428,12 @@ yyreduce:
       List_Delete((yyvsp[(7) - (8)].l));
       (yyval.s).Type = MSH_VOLUME;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 151:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1916 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
@@ -6472,12 +6450,12 @@ yyreduce:
       List_Delete((yyvsp[(6) - (7)].l));
       (yyval.s).Type = MSH_VOLUME;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 152:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1933 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
@@ -6493,21 +6471,21 @@ yyreduce:
       List_Delete((yyvsp[(7) - (8)].l));
       (yyval.s).Type = MSH_VOLUME_COMPOUND;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 153:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1949 "Gmsh.y"
     {
       curPhysDim = 3;
-    }
+    ;}
     break;
 
   case 154:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1953 "Gmsh.y"
     {
       int num = (int)(yyvsp[(5) - (9)].i);
@@ -6523,62 +6501,62 @@ yyreduce:
       List_Delete((yyvsp[(8) - (9)].l));
       (yyval.s).Type = MSH_PHYSICAL_VOLUME;
       (yyval.s).Num = num;
-    }
+    ;}
     break;
 
   case 155:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1975 "Gmsh.y"
     {
       TranslateShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(4) - (5)].l));
       (yyval.l) = (yyvsp[(4) - (5)].l);
-    }
+    ;}
     break;
 
   case 156:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1980 "Gmsh.y"
     {
       RotateShapes((yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), (yyvsp[(10) - (11)].l));
       (yyval.l) = (yyvsp[(10) - (11)].l);
-    }
+    ;}
     break;
 
   case 157:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1985 "Gmsh.y"
     {
       SymmetryShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(2) - (5)].v)[3], (yyvsp[(4) - (5)].l));
       (yyval.l) = (yyvsp[(4) - (5)].l);
-    }
+    ;}
     break;
 
   case 158:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1990 "Gmsh.y"
     {
       DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].l));
       (yyval.l) = (yyvsp[(8) - (9)].l);
-    }
+    ;}
     break;
 
   case 159:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1995 "Gmsh.y"
     {
       DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].v)[0], (yyvsp[(5) - (9)].v)[1], (yyvsp[(5) - (9)].v)[2], (yyvsp[(8) - (9)].l));
       (yyval.l) = (yyvsp[(8) - (9)].l);
-    }
+    ;}
     break;
 
   case 160:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2000 "Gmsh.y"
     {
       (yyval.l) = List_Create(3, 3, sizeof(Shape));
@@ -6601,23 +6579,23 @@ yyreduce:
       }
       Free((yyvsp[(1) - (4)].c));
       List_Delete((yyvsp[(3) - (4)].l));
-    }
+    ;}
     break;
 
   case 161:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2023 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       IntersectCurvesWithSurface((yyvsp[(4) - (9)].l), (int)(yyvsp[(8) - (9)].d), (yyval.l));
       List_Delete((yyvsp[(4) - (9)].l));
-    }
+    ;}
     break;
 
   case 162:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2029 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape*));
@@ -6625,44 +6603,44 @@ yyreduce:
       List_Delete((yyvsp[(7) - (9)].l));
       SplitCurve((int)(yyvsp[(4) - (9)].d), tmp, (yyval.l));
       List_Delete(tmp);
-    }
+    ;}
     break;
 
   case 163:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2039 "Gmsh.y"
-    { (yyval.l) = (yyvsp[(1) - (1)].l); }
+    { (yyval.l) = (yyvsp[(1) - (1)].l); ;}
     break;
 
   case 164:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2040 "Gmsh.y"
-    { (yyval.l) = (yyvsp[(1) - (1)].l); }
+    { (yyval.l) = (yyvsp[(1) - (1)].l); ;}
     break;
 
   case 165:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2045 "Gmsh.y"
     {
       (yyval.l) = List_Create(3, 3, sizeof(Shape));
-    }
+    ;}
     break;
 
   case 166:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2049 "Gmsh.y"
     {
       List_Add((yyval.l), &(yyvsp[(2) - (2)].s));
-    }
+    ;}
     break;
 
   case 167:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2053 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
@@ -6685,12 +6663,12 @@ yyreduce:
 	    yymsg(1, "Unknown point %d", TheShape.Num);
 	}
       }
-    }
+    ;}
     break;
 
   case 168:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2076 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
@@ -6713,12 +6691,12 @@ yyreduce:
 	    yymsg(1, "Unknown curve %d", TheShape.Num);
 	}
       }
-    }
+    ;}
     break;
 
   case 169:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2099 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
@@ -6741,12 +6719,12 @@ yyreduce:
 	    yymsg(1, "Unknown surface %d", TheShape.Num);
 	}
       }
-    }
+    ;}
     break;
 
   case 170:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2122 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
@@ -6769,12 +6747,12 @@ yyreduce:
 	    yymsg(1, "Unknown volume %d", TheShape.Num);
 	}
       }
-    }
+    ;}
     break;
 
   case 171:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2150 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -6795,12 +6773,12 @@ yyreduce:
       else
         yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (8)].d));
 #endif
-    }
+    ;}
     break;
 
   case 172:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2171 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -6823,12 +6801,12 @@ yyreduce:
 	 Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
       }
 #endif
-    }
+    ;}
     break;
 
   case 173:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2195 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -6848,12 +6826,12 @@ yyreduce:
       else
         yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (14)].d));
 #endif
-    }
+    ;}
     break;
 
   case 174:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2216 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -6874,12 +6852,12 @@ yyreduce:
       else
         yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (16)].d));
 #endif
-    }
+    ;}
     break;
 
   case 175:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2237 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -6899,12 +6877,12 @@ yyreduce:
       else
         yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (12)].d));
 #endif
-    }
+    ;}
     break;
 
   case 176:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2257 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -7016,12 +6994,12 @@ yyreduce:
         yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (8)].d));
       Free((yyvsp[(2) - (8)].c));
 #endif
-    }
+    ;}
     break;
 
   case 177:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2369 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -7040,12 +7018,12 @@ yyreduce:
         yymsg(0, "Wrong levelset definition");
       Free((yyvsp[(2) - (8)].c)); Free((yyvsp[(7) - (8)].c));
 #endif
-    }
+    ;}
     break;
 
   case 178:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2388 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -7083,12 +7061,12 @@ yyreduce:
         yymsg(0, "Wrong levelset definition");
       Free((yyvsp[(2) - (6)].c));
 #endif
-    }
+    ;}
     break;
 
   case 179:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2427 "Gmsh.y"
     {
 #if defined(HAVE_DINTEGRATION)
@@ -7191,12 +7169,12 @@ yyreduce:
         yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (14)].d));
       Free((yyvsp[(2) - (14)].c));
 #endif
-    }
+    ;}
     break;
 
   case 180:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2535 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
@@ -7205,23 +7183,23 @@ yyreduce:
 	DeleteShape(TheShape.Type, TheShape.Num);
       }
       List_Delete((yyvsp[(3) - (4)].l));
-    }
+    ;}
     break;
 
   case 181:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2544 "Gmsh.y"
     {
 #if defined(HAVE_MESH)
       GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d));
 #endif
-    }
+    ;}
     break;
 
   case 182:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2550 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -7236,12 +7214,12 @@ yyreduce:
 	yymsg(0, "Unknown command 'Delete %s'", (yyvsp[(2) - (6)].c));
 #endif
       Free((yyvsp[(2) - (6)].c));
-    }
+    ;}
     break;
 
   case 183:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2565 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){
@@ -7269,12 +7247,12 @@ yyreduce:
 	  yymsg(0, "Unknown object or expression to delete '%s'", (yyvsp[(2) - (3)].c));
       }
       Free((yyvsp[(2) - (3)].c));
-    }
+    ;}
     break;
 
   case 184:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2593 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -7286,12 +7264,12 @@ yyreduce:
 	yymsg(0, "Unknown command 'Delete %s %s'", (yyvsp[(2) - (4)].c), (yyvsp[(3) - (4)].c));
 #endif
       Free((yyvsp[(2) - (4)].c)); Free((yyvsp[(3) - (4)].c));
-    }
+    ;}
     break;
 
   case 185:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2610 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){
@@ -7300,34 +7278,34 @@ yyreduce:
 	ColorShape(TheShape.Type, TheShape.Num, (yyvsp[(2) - (5)].u));
       }
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 186:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2624 "Gmsh.y"
     {
       for(int i = 0; i < 4; i++)
 	VisibilityShape((yyvsp[(2) - (3)].c), i, 1);
       Free((yyvsp[(2) - (3)].c));
-    }
+    ;}
     break;
 
   case 187:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2630 "Gmsh.y"
     {
       for(int i = 0; i < 4; i++)
 	VisibilityShape((yyvsp[(2) - (3)].c), i, 0);
       Free((yyvsp[(2) - (3)].c));
-    }
+    ;}
     break;
 
   case 188:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2636 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
@@ -7336,12 +7314,12 @@ yyreduce:
 	VisibilityShape(TheShape.Type, TheShape.Num, 1);
       }
       List_Delete((yyvsp[(3) - (4)].l));
-    }
+    ;}
     break;
 
   case 189:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2645 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
@@ -7350,12 +7328,12 @@ yyreduce:
 	VisibilityShape(TheShape.Type, TheShape.Num, 0);
       }
       List_Delete((yyvsp[(3) - (4)].l));
-    }
+    ;}
     break;
 
   case 190:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2659 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (3)].c), "Include")){
@@ -7400,12 +7378,12 @@ yyreduce:
       else
 	yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c));
       Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(2) - (3)].c));
-    }
+    ;}
     break;
 
   case 191:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2704 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -7422,12 +7400,12 @@ yyreduce:
 	yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c));
 #endif
       Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(2) - (7)].c)); Free((yyvsp[(6) - (7)].c));
-    }
+    ;}
     break;
 
   case 192:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2721 "Gmsh.y"
     {
 #if defined(HAVE_POST) && defined(HAVE_MESH)
@@ -7442,12 +7420,12 @@ yyreduce:
 	yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c));
 #endif
       Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(2) - (7)].c)); Free((yyvsp[(3) - (7)].c));
-    }
+    ;}
     break;
 
   case 193:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2736 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){
@@ -7466,12 +7444,12 @@ yyreduce:
       else
 	yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c));
       Free((yyvsp[(1) - (3)].c));
-    }
+    ;}
     break;
 
   case 194:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2755 "Gmsh.y"
     {
 #if defined(HAVE_PLUGINS)
@@ -7483,12 +7461,12 @@ yyreduce:
        }
 #endif
        Free((yyvsp[(3) - (7)].c)); Free((yyvsp[(6) - (7)].c));
-     }
+     ;}
     break;
 
   case 195:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2767 "Gmsh.y"
     {
 #if defined(HAVE_POST)
@@ -7512,103 +7490,103 @@ yyreduce:
 	yymsg(0, "Unknown 'Combine' command");
 #endif
       Free((yyvsp[(2) - (3)].c));
-    }
+    ;}
     break;
 
   case 196:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2791 "Gmsh.y"
     {
       Msg::Exit(0);
-    }
+    ;}
     break;
 
   case 197:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2795 "Gmsh.y"
     {
       gmsh_yyerrorstate = 999; // this will be checked when yyparse returns
       YYABORT;
-    }
+    ;}
     break;
 
   case 198:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2800 "Gmsh.y"
     {
       // FIXME: this is a hack to force a transfer from the old DB to
       // the new DB. This will become unnecessary if/when we fill the
       // GModel directly during parsing.
       GModel::current()->importGEOInternals();
-    }
+    ;}
     break;
 
   case 199:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2807 "Gmsh.y"
     {
       CTX::instance()->forcedBBox = 0;
       GModel::current()->importGEOInternals();
       SetBoundingBox();
-    }
+    ;}
     break;
 
   case 200:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2813 "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));
-    }
+    ;}
     break;
 
   case 201:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2818 "Gmsh.y"
     {
 #if defined(HAVE_OPENGL)
       drawContext::global()->draw();
 #endif
-    }
+    ;}
     break;
 
   case 202:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2824 "Gmsh.y"
     {
       GModel::current()->createTopologyFromMesh();
-    }
+    ;}
     break;
 
   case 203:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2828 "Gmsh.y"
     {
       GModel::current()->createTopologyFromMesh(1);
-    }
+    ;}
     break;
 
   case 204:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2832 "Gmsh.y"
     {
       GModel::current()->importGEOInternals();
       GModel::current()->refineMesh(CTX::instance()->mesh.secondOrderLinear);
-    }
+    ;}
     break;
 
   case 205:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2842 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d);
@@ -7625,12 +7603,12 @@ yyreduce:
 	yymsg(0, "Reached maximum number of imbricated loops");
 	ImbricatedLoop = MAX_RECUR_LOOPS - 1;
       }
-    }
+    ;}
     break;
 
   case 206:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2859 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d);
@@ -7647,12 +7625,12 @@ yyreduce:
 	yymsg(0, "Reached maximum number of imbricated loops");
 	ImbricatedLoop = MAX_RECUR_LOOPS - 1;
       }
-    }
+    ;}
     break;
 
   case 207:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2876 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d);
@@ -7673,12 +7651,12 @@ yyreduce:
 	yymsg(0, "Reached maximum number of imbricated loops");
 	ImbricatedLoop = MAX_RECUR_LOOPS - 1;
       }
-    }
+    ;}
     break;
 
   case 208:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2897 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d);
@@ -7699,12 +7677,12 @@ yyreduce:
 	yymsg(0, "Reached maximum number of imbricated loops");
 	ImbricatedLoop = MAX_RECUR_LOOPS - 1;
       }
-    }
+    ;}
     break;
 
   case 209:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2918 "Gmsh.y"
     {
       if(ImbricatedLoop <= 0){
@@ -7739,12 +7717,12 @@ yyreduce:
 	else
 	  ImbricatedLoop--;
       }
-    }
+    ;}
     break;
 
   case 210:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2953 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->createFunction
@@ -7752,52 +7730,52 @@ yyreduce:
 	yymsg(0, "Redefinition of function %s", (yyvsp[(2) - (2)].c));
       skip_until(NULL, "Return");
       //FIXME: wee leak $2
-    }
+    ;}
     break;
 
   case 211:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2961 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->leaveFunction
          (&gmsh_yyin, gmsh_yyname, gmsh_yylineno))
 	yymsg(0, "Error while exiting function");
-    }
+    ;}
     break;
 
   case 212:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2967 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->enterFunction
          ((yyvsp[(2) - (3)].c), &gmsh_yyin, gmsh_yyname, gmsh_yylineno))
 	yymsg(0, "Unknown function %s", (yyvsp[(2) - (3)].c));
       //FIXME: wee leak $2
-    }
+    ;}
     break;
 
   case 213:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2974 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (4)].d)) skip_until("If", "EndIf");
-    }
+    ;}
     break;
 
   case 214:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2978 "Gmsh.y"
     {
-    }
+    ;}
     break;
 
   case 215:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2987 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
@@ -7805,12 +7783,12 @@ yyreduce:
 		    (yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
 		    NULL, (yyval.l));
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 216:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2995 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
@@ -7818,12 +7796,12 @@ yyreduce:
 		    0., 0., 0., (yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d),
 		    NULL, (yyval.l));
       List_Delete((yyvsp[(10) - (11)].l));
-    }
+    ;}
     break;
 
   case 217:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3003 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
@@ -7831,22 +7809,22 @@ yyreduce:
 		    (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(5) - (13)].v)[0], (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2], (yyvsp[(7) - (13)].v)[0], (yyvsp[(7) - (13)].v)[1], (yyvsp[(7) - (13)].v)[2], (yyvsp[(9) - (13)].d),
 		    NULL, (yyval.l));
       List_Delete((yyvsp[(12) - (13)].l));
-    }
+    ;}
     break;
 
   case 218:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3011 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 219:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3016 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
@@ -7854,22 +7832,22 @@ yyreduce:
 		    (yyvsp[(2) - (7)].v)[0], (yyvsp[(2) - (7)].v)[1], (yyvsp[(2) - (7)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
 		    &extr, (yyval.l));
       List_Delete((yyvsp[(4) - (7)].l));
-    }
+    ;}
     break;
 
   case 220:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3024 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 221:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3029 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
@@ -7877,22 +7855,22 @@ yyreduce:
 		    0., 0., 0., (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(5) - (13)].v)[0], (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2], (yyvsp[(7) - (13)].d),
 		    &extr, (yyval.l));
       List_Delete((yyvsp[(10) - (13)].l));
-    }
+    ;}
     break;
 
   case 222:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3037 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 223:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3042 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
@@ -7900,356 +7878,356 @@ yyreduce:
 		    (yyvsp[(3) - (15)].v)[0], (yyvsp[(3) - (15)].v)[1], (yyvsp[(3) - (15)].v)[2], (yyvsp[(5) - (15)].v)[0], (yyvsp[(5) - (15)].v)[1], (yyvsp[(5) - (15)].v)[2], (yyvsp[(7) - (15)].v)[0], (yyvsp[(7) - (15)].v)[1], (yyvsp[(7) - (15)].v)[2], (yyvsp[(9) - (15)].d),
 		    &extr, (yyval.l));
       List_Delete((yyvsp[(12) - (15)].l));
-    }
+    ;}
     break;
 
   case 224:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3050 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 225:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3055 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
 		    &extr, (yyval.l));
       List_Delete((yyvsp[(3) - (6)].l));
-    }
+    ;}
     break;
 
   case 226:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3063 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d),
 		   (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 227:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3070 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d),
 		   (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 228:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3077 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d),
 		   (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 229:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3084 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d),
 		   0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d),
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 230:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3091 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d),
 		   0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d),
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 231:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3098 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d),
 		   0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d),
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 232:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3105 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d),
 		   (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d),
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 233:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3112 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d),
 		   (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d),
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 234:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3119 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d),
 		   (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d),
 		   NULL, (yyval.l));
-    }
+    ;}
     break;
 
   case 235:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3126 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 236:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3131 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d),
 		   (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 237:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3138 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 238:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3143 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d),
 		   (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 239:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3150 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 240:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3155 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d),
 		   (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 241:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3162 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 242:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3167 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d),
 		   0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 243:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3174 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 244:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3179 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d),
 		   0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 245:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3186 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 246:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3191 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d),
 		   0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 247:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3198 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 248:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3203 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d),
 		   (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 249:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3210 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 250:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3215 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d),
 		   (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 251:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3222 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
       extr.mesh.QuadToTri = NO_QUADTRI;
-    }
+    ;}
     break;
 
   case 252:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3227 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d),
 		   (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
 		   &extr, (yyval.l));
-    }
+    ;}
     break;
 
   case 253:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3238 "Gmsh.y"
     {
-    }
+    ;}
     break;
 
   case 254:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3241 "Gmsh.y"
     {
-    }
+    ;}
     break;
 
   case 255:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3247 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = true;
@@ -8258,12 +8236,12 @@ yyreduce:
       extr.mesh.hLayer.clear();
       extr.mesh.NbElmLayer.push_back((int)fabs((yyvsp[(3) - (5)].d)));
       extr.mesh.hLayer.push_back(1.);
-    }
+    ;}
     break;
 
   case 256:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3256 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = true;
@@ -8283,12 +8261,12 @@ yyreduce:
 	yymsg(0, "Wrong layer definition {%d, %d}", List_Nbr((yyvsp[(3) - (7)].l)), List_Nbr((yyvsp[(5) - (7)].l)));
       List_Delete((yyvsp[(3) - (7)].l));
       List_Delete((yyvsp[(5) - (7)].l));
-    }
+    ;}
     break;
 
   case 257:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3276 "Gmsh.y"
     {
       yymsg(0, "Explicit region numbers in layers are deprecated");
@@ -8311,57 +8289,57 @@ yyreduce:
       List_Delete((yyvsp[(3) - (9)].l));
       List_Delete((yyvsp[(5) - (9)].l));
       List_Delete((yyvsp[(7) - (9)].l));
-    }
+    ;}
     break;
 
   case 258:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3299 "Gmsh.y"
     {
       extr.mesh.Recombine = true;
-    }
+    ;}
     break;
 
   case 259:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3303 "Gmsh.y"
     {
       extr.mesh.QuadToTri = QUADTRI_DBL_1;
-    }
+    ;}
     break;
 
   case 260:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3307 "Gmsh.y"
     {
       extr.mesh.QuadToTri = QUADTRI_DBL_1_RECOMB;
-    }
+    ;}
     break;
 
   case 261:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3311 "Gmsh.y"
     {
       extr.mesh.QuadToTri = QUADTRI_SNGL_1;
-    }
+    ;}
     break;
 
   case 262:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3315 "Gmsh.y"
     {
       extr.mesh.QuadToTri = QUADTRI_SNGL_1_RECOMB;
-    }
+    ;}
     break;
 
   case 263:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3319 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (9)].d);
@@ -8380,12 +8358,12 @@ yyreduce:
 	}
       }
       List_Delete((yyvsp[(6) - (9)].l));
-    }
+    ;}
     break;
 
   case 264:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3338 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (6)].c), "Index"))
@@ -8393,21 +8371,21 @@ yyreduce:
       else if(!strcmp((yyvsp[(2) - (6)].c), "View"))
         extr.mesh.ViewIndex = (yyvsp[(4) - (6)].d);
       Free((yyvsp[(2) - (6)].c));
-    }
+    ;}
     break;
 
   case 265:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3350 "Gmsh.y"
     {
       (yyval.v)[0] = (yyval.v)[1] = 1.;
-    }
+    ;}
     break;
 
   case 266:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3354 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power"))
@@ -8420,21 +8398,21 @@ yyreduce:
       }
       (yyval.v)[1] = (yyvsp[(3) - (3)].d);
       Free((yyvsp[(2) - (3)].c));
-    }
+    ;}
     break;
 
   case 267:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3369 "Gmsh.y"
     {
       (yyval.i) = -1; // left
-    }
+    ;}
     break;
 
   case 268:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3373 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (1)].c), "Right"))
@@ -8444,48 +8422,48 @@ yyreduce:
       else // alternated
         (yyval.i) = 0;
       Free((yyvsp[(1) - (1)].c));
-    }
+    ;}
     break;
 
   case 269:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3385 "Gmsh.y"
     {
      (yyval.l) = List_Create(1, 1, sizeof(double));
-   }
+   ;}
     break;
 
   case 270:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3389 "Gmsh.y"
     {
      (yyval.l) = (yyvsp[(2) - (2)].l);
-   }
+   ;}
     break;
 
   case 271:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3394 "Gmsh.y"
     {
       (yyval.i) = 45;
-    }
+    ;}
     break;
 
   case 272:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3398 "Gmsh.y"
     {
       (yyval.i) = (int)(yyvsp[(2) - (2)].d);
-    }
+    ;}
     break;
 
   case 273:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3405 "Gmsh.y"
     {
       int type = (int)(yyvsp[(6) - (7)].v)[0];
@@ -8541,12 +8519,12 @@ yyreduce:
         }
         List_Delete((yyvsp[(3) - (7)].l));
       }
-    }
+    ;}
     break;
 
   case 274:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3461 "Gmsh.y"
     {
       int k = List_Nbr((yyvsp[(4) - (6)].l));
@@ -8616,22 +8594,22 @@ yyreduce:
         }
       }
       List_Delete((yyvsp[(4) - (6)].l));
-    }
+    ;}
     break;
 
   case 275:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3531 "Gmsh.y"
     {
       yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)");
       List_Delete((yyvsp[(7) - (8)].l));
-    }
+    ;}
     break;
 
   case 276:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3536 "Gmsh.y"
     {
       int k = List_Nbr((yyvsp[(4) - (5)].l));
@@ -8698,12 +8676,12 @@ yyreduce:
         }
       }
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 277:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3603 "Gmsh.y"
     {
       if(!(yyvsp[(2) - (3)].l)){
@@ -8739,12 +8717,12 @@ yyreduce:
         }
         List_Delete((yyvsp[(2) - (3)].l));
       }
-    }
+    ;}
     break;
 
   case 278:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3639 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (7)].l)); i++){
@@ -8752,12 +8730,12 @@ yyreduce:
 	List_Read((yyvsp[(4) - (7)].l), i, &d);
 	CTX::instance()->mesh.algo2d_per_face[(int)d] = (int)(yyvsp[(6) - (7)].d);
       }
-    }
+    ;}
     break;
 
   case 279:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3648 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (5)].l)){
@@ -8800,12 +8778,12 @@ yyreduce:
         }
         List_Delete((yyvsp[(3) - (5)].l));
       }
-    }
+    ;}
     break;
 
   case 280:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3691 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (4)].l)){
@@ -8844,12 +8822,12 @@ yyreduce:
         }
         List_Delete((yyvsp[(3) - (4)].l));
       }
-    }
+    ;}
     break;
 
   case 281:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3730 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
@@ -8869,12 +8847,12 @@ yyreduce:
         }
       }
       List_Delete((yyvsp[(3) - (6)].l));
-    }
+    ;}
     break;
 
   case 282:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3755 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(5) - (6)].l)) != List_Nbr((yyvsp[(3) - (6)].l))){
@@ -8901,12 +8879,12 @@ yyreduce:
       }
       List_Delete((yyvsp[(3) - (6)].l));
       List_Delete((yyvsp[(5) - (6)].l));
-    }
+    ;}
     break;
 
   case 283:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3783 "Gmsh.y"
     {
       if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l))){
@@ -8945,12 +8923,12 @@ yyreduce:
       }
       List_Delete((yyvsp[(5) - (12)].l));
       List_Delete((yyvsp[(10) - (12)].l));
-    }
+    ;}
     break;
 
   case 284:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3829 "Gmsh.y"
     {
       Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d));
@@ -8973,12 +8951,12 @@ yyreduce:
         else
           yymsg(0, "Unknown surface %d", (int)(yyvsp[(8) - (10)].d));
       }
-    }
+    ;}
     break;
 
   case 285:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3852 "Gmsh.y"
     {
       Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d));
@@ -9001,37 +8979,37 @@ yyreduce:
         else
           yymsg(0, "Unknown surface %d", (int)(yyvsp[(8) - (10)].d));
       }
-    }
+    ;}
     break;
 
   case 286:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3875 "Gmsh.y"
     {
-    }
+    ;}
     break;
 
   case 287:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3878 "Gmsh.y"
     {
-    }
+    ;}
     break;
 
   case 288:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3887 "Gmsh.y"
     {
       ReplaceAllDuplicates();
-    }
+    ;}
     break;
 
   case 289:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3891 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (3)].c), "Geometry"))
@@ -9041,12 +9019,12 @@ yyreduce:
       else
         yymsg(0, "Unknown coherence command");
       Free((yyvsp[(2) - (3)].c));
-    }
+    ;}
     break;
 
   case 290:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3901 "Gmsh.y"
     {
       if(List_Nbr((yyvsp[(4) - (6)].l)) >= 2){
@@ -9076,44 +9054,44 @@ yyreduce:
         yymsg(0, "Need at least two points to merge");
       ReplaceAllDuplicates();
       List_Delete((yyvsp[(4) - (6)].l));
-    }
+    ;}
     break;
 
   case 291:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3935 "Gmsh.y"
-    { (yyval.c) = (char*)"Homology"; }
+    { (yyval.c) = (char*)"Homology"; ;}
     break;
 
   case 292:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3936 "Gmsh.y"
-    { (yyval.c) = (char*)"Cohomology"; }
+    { (yyval.c) = (char*)"Cohomology"; ;}
     break;
 
   case 293:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3937 "Gmsh.y"
-    { (yyval.c) = (char*)"Betti"; }
+    { (yyval.c) = (char*)"Betti"; ;}
     break;
 
   case 294:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3942 "Gmsh.y"
     {
       std::vector<int> domain, subdomain, dim;
       for(int i = 0; i < 4; i++) dim.push_back(i);
       GModel::current()->addHomologyRequest((yyvsp[(1) - (2)].c), domain, subdomain, dim);
-    }
+    ;}
     break;
 
   case 295:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3948 "Gmsh.y"
     {
       std::vector<int> domain, subdomain, dim;
@@ -9125,12 +9103,12 @@ yyreduce:
       for(int i = 0; i < 4; i++) dim.push_back(i);
       GModel::current()->addHomologyRequest((yyvsp[(1) - (5)].c), domain, subdomain, dim);
       List_Delete((yyvsp[(3) - (5)].l));
-    }
+    ;}
     break;
 
   case 296:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3960 "Gmsh.y"
     {
       std::vector<int> domain, subdomain, dim;
@@ -9148,12 +9126,12 @@ yyreduce:
       GModel::current()->addHomologyRequest((yyvsp[(1) - (7)].c), domain, subdomain, dim);
       List_Delete((yyvsp[(3) - (7)].l));
       List_Delete((yyvsp[(5) - (7)].l));
-    }
+    ;}
     break;
 
   case 297:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 3978 "Gmsh.y"
     {
       std::vector<int> domain, subdomain, dim;
@@ -9176,500 +9154,500 @@ yyreduce:
       List_Delete((yyvsp[(6) - (10)].l));
       List_Delete((yyvsp[(8) - (10)].l));
       List_Delete((yyvsp[(3) - (10)].l));
-    }
+    ;}
     break;
 
   case 298:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4005 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (1)].d);           }
+    { (yyval.d) = (yyvsp[(1) - (1)].d);           ;}
     break;
 
   case 299:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4006 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(2) - (3)].d);           }
+    { (yyval.d) = (yyvsp[(2) - (3)].d);           ;}
     break;
 
   case 300:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4007 "Gmsh.y"
-    { (yyval.d) = -(yyvsp[(2) - (2)].d);          }
+    { (yyval.d) = -(yyvsp[(2) - (2)].d);          ;}
     break;
 
   case 301:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4008 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(2) - (2)].d);           }
+    { (yyval.d) = (yyvsp[(2) - (2)].d);           ;}
     break;
 
   case 302:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4009 "Gmsh.y"
-    { (yyval.d) = !(yyvsp[(2) - (2)].d);          }
+    { (yyval.d) = !(yyvsp[(2) - (2)].d);          ;}
     break;
 
   case 303:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4010 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d);      }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 304:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4011 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d);      }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 305:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4012 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d);      }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 306:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4014 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (3)].d))
 	yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));
       else
 	(yyval.d) = (yyvsp[(1) - (3)].d) / (yyvsp[(3) - (3)].d);
-    }
+    ;}
     break;
 
   case 307:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4020 "Gmsh.y"
-    { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d);  }
+    { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d);  ;}
     break;
 
   case 308:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4021 "Gmsh.y"
-    { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));  }
+    { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));  ;}
     break;
 
   case 309:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4022 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d);      }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 310:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4023 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d);      }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 311:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4024 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d);     }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 312:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4025 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d);     }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 313:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4026 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d);     }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 314:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4027 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d);     }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 315:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4028 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d);     }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 316:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4029 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d);     }
+    { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 317:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4030 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); }
+    { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;}
     break;
 
   case 318:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4031 "Gmsh.y"
-    { (yyval.d) = exp((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = exp((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 319:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4032 "Gmsh.y"
-    { (yyval.d) = log((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = log((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 320:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4033 "Gmsh.y"
-    { (yyval.d) = log10((yyvsp[(3) - (4)].d));    }
+    { (yyval.d) = log10((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 321:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4034 "Gmsh.y"
-    { (yyval.d) = sqrt((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = sqrt((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 322:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4035 "Gmsh.y"
-    { (yyval.d) = sin((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = sin((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 323:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4036 "Gmsh.y"
-    { (yyval.d) = asin((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = asin((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 324:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4037 "Gmsh.y"
-    { (yyval.d) = cos((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = cos((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 325:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4038 "Gmsh.y"
-    { (yyval.d) = acos((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = acos((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 326:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4039 "Gmsh.y"
-    { (yyval.d) = tan((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = tan((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 327:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4040 "Gmsh.y"
-    { (yyval.d) = atan((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = atan((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 328:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4041 "Gmsh.y"
-    { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));}
+    { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}
     break;
 
   case 329:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4042 "Gmsh.y"
-    { (yyval.d) = sinh((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = sinh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 330:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4043 "Gmsh.y"
-    { (yyval.d) = cosh((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = cosh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 331:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4044 "Gmsh.y"
-    { (yyval.d) = tanh((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = tanh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 332:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4045 "Gmsh.y"
-    { (yyval.d) = fabs((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = fabs((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 333:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4046 "Gmsh.y"
-    { (yyval.d) = floor((yyvsp[(3) - (4)].d));    }
+    { (yyval.d) = floor((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 334:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4047 "Gmsh.y"
-    { (yyval.d) = ceil((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = ceil((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 335:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4048 "Gmsh.y"
-    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); }
+    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 336:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4049 "Gmsh.y"
-    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); }
+    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 337:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4050 "Gmsh.y"
-    { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); }
+    { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 338:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4051 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; }
+    { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;}
     break;
 
   case 339:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4054 "Gmsh.y"
-    { (yyval.d) = exp((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = exp((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 340:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4055 "Gmsh.y"
-    { (yyval.d) = log((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = log((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 341:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4056 "Gmsh.y"
-    { (yyval.d) = log10((yyvsp[(3) - (4)].d));    }
+    { (yyval.d) = log10((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 342:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4057 "Gmsh.y"
-    { (yyval.d) = sqrt((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = sqrt((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 343:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4058 "Gmsh.y"
-    { (yyval.d) = sin((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = sin((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 344:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4059 "Gmsh.y"
-    { (yyval.d) = asin((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = asin((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 345:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4060 "Gmsh.y"
-    { (yyval.d) = cos((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = cos((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 346:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4061 "Gmsh.y"
-    { (yyval.d) = acos((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = acos((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 347:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4062 "Gmsh.y"
-    { (yyval.d) = tan((yyvsp[(3) - (4)].d));      }
+    { (yyval.d) = tan((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 348:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4063 "Gmsh.y"
-    { (yyval.d) = atan((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = atan((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 349:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4064 "Gmsh.y"
-    { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));}
+    { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}
     break;
 
   case 350:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4065 "Gmsh.y"
-    { (yyval.d) = sinh((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = sinh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 351:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4066 "Gmsh.y"
-    { (yyval.d) = cosh((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = cosh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 352:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4067 "Gmsh.y"
-    { (yyval.d) = tanh((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = tanh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 353:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4068 "Gmsh.y"
-    { (yyval.d) = fabs((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = fabs((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 354:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4069 "Gmsh.y"
-    { (yyval.d) = floor((yyvsp[(3) - (4)].d));    }
+    { (yyval.d) = floor((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 355:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4070 "Gmsh.y"
-    { (yyval.d) = ceil((yyvsp[(3) - (4)].d));     }
+    { (yyval.d) = ceil((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 356:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4071 "Gmsh.y"
-    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); }
+    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 357:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4072 "Gmsh.y"
-    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); }
+    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 358:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4073 "Gmsh.y"
-    { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); }
+    { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 359:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4074 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; }
+    { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;}
     break;
 
   case 360:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4083 "Gmsh.y"
-    { (yyval.d) = (yyvsp[(1) - (1)].d); }
+    { (yyval.d) = (yyvsp[(1) - (1)].d); ;}
     break;
 
   case 361:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4084 "Gmsh.y"
-    { (yyval.d) = 3.141592653589793; }
+    { (yyval.d) = 3.141592653589793; ;}
     break;
 
   case 362:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4085 "Gmsh.y"
-    { (yyval.d) = Msg::GetCommRank(); }
+    { (yyval.d) = Msg::GetCommRank(); ;}
     break;
 
   case 363:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4086 "Gmsh.y"
-    { (yyval.d) = Msg::GetCommSize(); }
+    { (yyval.d) = Msg::GetCommSize(); ;}
     break;
 
   case 364:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4087 "Gmsh.y"
-    { (yyval.d) = GetGmshMajorVersion(); }
+    { (yyval.d) = GetGmshMajorVersion(); ;}
     break;
 
   case 365:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4088 "Gmsh.y"
-    { (yyval.d) = GetGmshMinorVersion(); }
+    { (yyval.d) = GetGmshMinorVersion(); ;}
     break;
 
   case 366:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4089 "Gmsh.y"
-    { (yyval.d) = GetGmshPatchVersion(); }
+    { (yyval.d) = GetGmshPatchVersion(); ;}
     break;
 
   case 367:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4094 "Gmsh.y"
     {
       if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){
@@ -9686,12 +9664,12 @@ yyreduce:
           (yyval.d) = s.value[0];
       }
       Free((yyvsp[(1) - (1)].c));
-    }
+    ;}
     break;
 
   case 368:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4115 "Gmsh.y"
     {
       char tmpstring[1024];
@@ -9710,12 +9688,12 @@ yyreduce:
           (yyval.d) = s.value[0];
       }
       Free((yyvsp[(1) - (5)].c));
-    }
+    ;}
     break;
 
   case 369:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4134 "Gmsh.y"
     {
       int index = (int)(yyvsp[(3) - (4)].d);
@@ -9733,12 +9711,12 @@ yyreduce:
           (yyval.d) = s.value[index];
       }
       Free((yyvsp[(1) - (4)].c));
-    }
+    ;}
     break;
 
   case 370:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4152 "Gmsh.y"
     {
       if(!gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){
@@ -9750,12 +9728,12 @@ yyreduce:
 	(yyval.d) = s.value.size();
       }
       Free((yyvsp[(2) - (4)].c));
-    }
+    ;}
     break;
 
   case 371:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4164 "Gmsh.y"
     {
       if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){
@@ -9772,12 +9750,12 @@ yyreduce:
           (yyval.d) = (s.value[0] += (yyvsp[(2) - (2)].i));
       }
       Free((yyvsp[(1) - (2)].c));
-    }
+    ;}
     break;
 
   case 372:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4181 "Gmsh.y"
     {
       int index = (int)(yyvsp[(3) - (5)].d);
@@ -9795,32 +9773,32 @@ yyreduce:
           (yyval.d) = (s.value[index] += (yyvsp[(5) - (5)].i));
       }
       Free((yyvsp[(1) - (5)].c));
-    }
+    ;}
     break;
 
   case 373:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4202 "Gmsh.y"
     {
       NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d));
       Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c));
-    }
+    ;}
     break;
 
   case 374:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4207 "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));
-    }
+    ;}
     break;
 
   case 375:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4212 "Gmsh.y"
     {
       double d = 0.;
@@ -9830,12 +9808,12 @@ yyreduce:
 	(yyval.d) = d;
       }
       Free((yyvsp[(1) - (4)].c)); Free((yyvsp[(3) - (4)].c));
-    }
+    ;}
     break;
 
   case 376:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4222 "Gmsh.y"
     {
       double d = 0.;
@@ -9845,22 +9823,22 @@ yyreduce:
 	(yyval.d) = d;
       }
       Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(6) - (7)].c));
-    }
+    ;}
     break;
 
   case 377:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4232 "Gmsh.y"
     {
       (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d));
       Free((yyvsp[(3) - (6)].c));
-    }
+    ;}
     break;
 
   case 378:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4237 "Gmsh.y"
     {
       std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c));
@@ -9869,150 +9847,150 @@ yyreduce:
       else
         (yyval.d) = 0.;
       Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c));
-    }
+    ;}
     break;
 
   case 379:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4249 "Gmsh.y"
     {
       memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double));
-    }
+    ;}
     break;
 
   case 380:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4253 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i];
-    }
+    ;}
     break;
 
   case 381:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4257 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i];
-    }
+    ;}
     break;
 
   case 382:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4261 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i];
-    }
+    ;}
     break;
 
   case 383:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4265 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i];
-    }
+    ;}
     break;
 
   case 384:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4272 "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 385:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4276 "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 386:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4280 "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 387:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4284 "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 388:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4291 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(List_T*));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].l)));
-    }
+    ;}
     break;
 
   case 389:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4296 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].l)));
-    }
+    ;}
     break;
 
   case 390:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4303 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].d)));
-    }
+    ;}
     break;
 
   case 391:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4308 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(1) - (1)].l);
-    }
+    ;}
     break;
 
   case 392:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4312 "Gmsh.y"
     {
       // creates an empty list
       (yyval.l) = List_Create(2, 1, sizeof(double));
-    }
+    ;}
     break;
 
   case 393:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4317 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (3)].l);
-    }
+    ;}
     break;
 
   case 394:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4321 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(3) - (4)].l);
@@ -10020,12 +9998,12 @@ yyreduce:
 	double *pd = (double*)List_Pointer((yyval.l), i);
 	(*pd) = - (*pd);
       }
-    }
+    ;}
     break;
 
   case 395:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4329 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(4) - (5)].l);
@@ -10033,21 +10011,21 @@ yyreduce:
 	double *pd = (double*)List_Pointer((yyval.l), i);
 	(*pd) *= (yyvsp[(1) - (5)].d);
       }
-    }
+    ;}
     break;
 
   case 396:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4340 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(1) - (1)].l);
-    }
+    ;}
     break;
 
   case 397:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4344 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all"))
@@ -10056,12 +10034,12 @@ yyreduce:
         yyerror("Unknown special string for list replacement");
         (yyval.l) = List_Create(2, 1, sizeof(double));
       }
-    }
+    ;}
     break;
 
   case 398:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4356 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (2)].l);
@@ -10069,12 +10047,12 @@ yyreduce:
 	double *pd = (double*)List_Pointer((yyval.l), i);
 	(*pd) = - (*pd);
       }
-    }
+    ;}
     break;
 
   case 399:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4364 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(3) - (3)].l);
@@ -10082,24 +10060,24 @@ yyreduce:
 	double *pd = (double*)List_Pointer((yyval.l), i);
 	(*pd) *= (yyvsp[(1) - (3)].d);
       }
-    }
+    ;}
     break;
 
   case 400:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4372 "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));
           ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d += 1.) : (d -= 1.))
 	List_Add((yyval.l), &d);
-    }
+    ;}
     break;
 
   case 401:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4379 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
@@ -10109,12 +10087,12 @@ yyreduce:
       else
 	for(double d = (yyvsp[(1) - (5)].d); ((yyvsp[(5) - (5)].d) > 0) ? (d <= (yyvsp[(3) - (5)].d)) : (d >= (yyvsp[(3) - (5)].d)); d += (yyvsp[(5) - (5)].d))
 	  List_Add((yyval.l), &d);
-   }
+   ;}
     break;
 
   case 402:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4389 "Gmsh.y"
     {
       // Returns the coordinates of a point and fills a list with it.
@@ -10134,48 +10112,48 @@ yyreduce:
 	List_Add((yyval.l), &v->Pos.Y);
 	List_Add((yyval.l), &v->Pos.Z);
       }
-    }
+    ;}
     break;
 
   case 403:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4409 "Gmsh.y"
     {
       (yyval.l) = GetAllEntityNumbers(0);
-    }
+    ;}
     break;
 
   case 404:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4413 "Gmsh.y"
     {
       (yyval.l) = GetAllEntityNumbers(1);
-    }
+    ;}
     break;
 
   case 405:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4417 "Gmsh.y"
     {
       (yyval.l) = GetAllEntityNumbers(2);
-    }
+    ;}
     break;
 
   case 406:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4421 "Gmsh.y"
     {
       (yyval.l) = GetAllEntityNumbers(3);
-    }
+    ;}
     break;
 
   case 407:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4425 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 1, sizeof(double));
@@ -10204,12 +10182,12 @@ yyreduce:
         }
       }
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 408:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4454 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 1, sizeof(double));
@@ -10238,12 +10216,12 @@ yyreduce:
         }
       }
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 409:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4483 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 1, sizeof(double));
@@ -10272,12 +10250,12 @@ yyreduce:
         }
       }
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 410:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4512 "Gmsh.y"
     {
       (yyval.l) = List_Create(10, 1, sizeof(double));
@@ -10306,12 +10284,12 @@ yyreduce:
         }
       }
       List_Delete((yyvsp[(4) - (5)].l));
-    }
+    ;}
     break;
 
   case 411:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4541 "Gmsh.y"
     {
       (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
@@ -10321,12 +10299,12 @@ yyreduce:
 	List_Add((yyval.l), &d);
       }
       List_Delete((yyvsp[(1) - (1)].l));
-    }
+    ;}
     break;
 
   case 412:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4551 "Gmsh.y"
     {
       (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
@@ -10336,12 +10314,12 @@ yyreduce:
 	List_Add((yyval.l), &d);
       }
       List_Delete((yyvsp[(1) - (1)].l));
-    }
+    ;}
     break;
 
   case 413:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4561 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
@@ -10353,12 +10331,12 @@ yyreduce:
 	  List_Add((yyval.l), &s.value[i]);
       }
       Free((yyvsp[(1) - (3)].c));
-    }
+    ;}
     break;
 
   case 414:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4574 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
@@ -10370,12 +10348,12 @@ yyreduce:
 	  List_Add((yyval.l), &s.value[i]);
       }
       Free((yyvsp[(1) - (3)].c));
-    }
+    ;}
     break;
 
   case 415:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4586 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
@@ -10387,12 +10365,12 @@ yyreduce:
 	  List_Add((yyval.l), &s.value[i]);
       }
       Free((yyvsp[(3) - (4)].c));
-    }
+    ;}
     break;
 
   case 416:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4598 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
@@ -10410,12 +10388,12 @@ yyreduce:
       }
       Free((yyvsp[(1) - (6)].c));
       List_Delete((yyvsp[(4) - (6)].l));
-    }
+    ;}
     break;
 
   case 417:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4617 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
@@ -10433,40 +10411,40 @@ yyreduce:
       }
       Free((yyvsp[(1) - (6)].c));
       List_Delete((yyvsp[(4) - (6)].l));
-    }
+    ;}
     break;
 
   case 418:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4638 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].d)));
-    }
+    ;}
     break;
 
   case 419:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4643 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(1) - (1)].l);
-    }
+    ;}
     break;
 
   case 420:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4647 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].d)));
-    }
+    ;}
     break;
 
   case 421:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4651 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){
@@ -10475,63 +10453,63 @@ yyreduce:
 	List_Add((yyval.l), &d);
       }
       List_Delete((yyvsp[(3) - (3)].l));
-    }
+    ;}
     break;
 
   case 422:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4663 "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 423:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4667 "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 424:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4679 "Gmsh.y"
     {
       int flag;
       (yyval.u) = GetColorForString(-1, (yyvsp[(1) - (1)].c), &flag);
       if(flag) yymsg(0, "Unknown color '%s'", (yyvsp[(1) - (1)].c));
       Free((yyvsp[(1) - (1)].c));
-    }
+    ;}
     break;
 
   case 425:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4686 "Gmsh.y"
     {
       unsigned int val = 0;
       ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val);
       (yyval.u) = val;
       Free((yyvsp[(1) - (5)].c)); Free((yyvsp[(5) - (5)].c));
-    }
+    ;}
     break;
 
   case 426:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4696 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (3)].l);
-    }
+    ;}
     break;
 
   case 427:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4700 "Gmsh.y"
     {
       (yyval.l) = List_Create(256, 10, sizeof(unsigned int));
@@ -10543,40 +10521,40 @@ yyreduce:
 	  List_Add((yyval.l), &ct->table[i]);
       }
       Free((yyvsp[(1) - (6)].c));
-    }
+    ;}
     break;
 
   case 428:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4715 "Gmsh.y"
     {
       (yyval.l) = List_Create(256, 10, sizeof(unsigned int));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].u)));
-    }
+    ;}
     break;
 
   case 429:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4720 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].u)));
-    }
+    ;}
     break;
 
   case 430:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4727 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(1) - (1)].c);
-    }
+    ;}
     break;
 
   case 431:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4731 "Gmsh.y"
     {
       if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){
@@ -10589,12 +10567,12 @@ yyreduce:
 	strcpy((yyval.c), val.c_str());
 	Free((yyvsp[(1) - (1)].c));
       }
-    }
+    ;}
     break;
 
   case 432:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4744 "Gmsh.y"
     {
       std::string out;
@@ -10602,12 +10580,12 @@ yyreduce:
       (yyval.c) = (char*)Malloc((out.size() + 1) * sizeof(char));
       strcpy((yyval.c), out.c_str());
       Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c));
-    }
+    ;}
     break;
 
   case 433:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4752 "Gmsh.y"
     {
       std::string out;
@@ -10615,21 +10593,21 @@ yyreduce:
       (yyval.c) = (char*)Malloc((out.size() + 1) * sizeof(char));
       strcpy((yyval.c), out.c_str());
       Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c));
-    }
+    ;}
     break;
 
   case 434:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4763 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(1) - (1)].c);
-    }
+    ;}
     break;
 
   case 435:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4767 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc(32 * sizeof(char));
@@ -10637,12 +10615,12 @@ yyreduce:
       time(&now);
       strcpy((yyval.c), ctime(&now));
       (yyval.c)[strlen((yyval.c)) - 1] = '\0';
-    }
+    ;}
     break;
 
   case 436:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4775 "Gmsh.y"
     {
       const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c));
@@ -10650,12 +10628,12 @@ yyreduce:
       (yyval.c) = (char *)Malloc((sizeof(env) + 1) * sizeof(char));
       strcpy((yyval.c), env);
       Free((yyvsp[(3) - (4)].c));
-    }
+    ;}
     break;
 
   case 437:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4783 "Gmsh.y"
     {
       std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c));
@@ -10663,12 +10641,12 @@ yyreduce:
       strcpy((yyval.c), s.c_str());
       Free((yyvsp[(3) - (6)].c));
       Free((yyvsp[(5) - (6)].c));
-    }
+    ;}
     break;
 
   case 438:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4791 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (6)].c)) + strlen((yyvsp[(5) - (6)].c)) + 1) * sizeof(char));
@@ -10676,12 +10654,12 @@ yyreduce:
       strcat((yyval.c), (yyvsp[(5) - (6)].c));
       Free((yyvsp[(3) - (6)].c));
       Free((yyvsp[(5) - (6)].c));
-    }
+    ;}
     break;
 
   case 439:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4799 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char));
@@ -10695,12 +10673,12 @@ yyreduce:
       }
       if(i <= 0) strcpy((yyval.c), (yyvsp[(3) - (4)].c));
       Free((yyvsp[(3) - (4)].c));
-    }
+    ;}
     break;
 
   case 440:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4813 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char));
@@ -10714,21 +10692,21 @@ yyreduce:
       else
 	strcpy((yyval.c), &(yyvsp[(3) - (4)].c)[i+1]);
       Free((yyvsp[(3) - (4)].c));
-    }
+    ;}
     break;
 
   case 441:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4827 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(3) - (4)].c);
-    }
+    ;}
     break;
 
   case 442:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4831 "Gmsh.y"
     {
       char tmpstring[5000];
@@ -10747,43 +10725,32 @@ yyreduce:
 	Free((yyvsp[(3) - (6)].c));
       }
       List_Delete((yyvsp[(5) - (6)].l));
-    }
+    ;}
     break;
 
   case 443:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4853 "Gmsh.y"
     {
       (yyval.l) = List_Create(20,20,sizeof(char*));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].c)));
-    }
+    ;}
     break;
 
   case 444:
 
-/* Line 1806 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 4858 "Gmsh.y"
-    { List_Add((yyval.l), &((yyvsp[(3) - (3)].c))); }
+    { List_Add((yyval.l), &((yyvsp[(3) - (3)].c))); ;}
     break;
 
 
 
-/* Line 1806 of yacc.c  */
-#line 10774 "Gmsh.tab.cpp"
+/* Line 1464 of yacc.c  */
+#line 10752 "Gmsh.tab.cpp"
       default: break;
     }
-  /* User semantic actions sometimes alter yychar, and that requires
-     that yytoken be updated with the new translation.  We take the
-     approach of translating immediately before every use of yytoken.
-     One alternative is translating here after every semantic action,
-     but that translation would be missed if the semantic action invokes
-     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
-     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
-     incorrect destructor might then be invoked immediately.  In the
-     case of YYERROR or YYBACKUP, subsequent parser actions might lead
-     to an incorrect destructor call or verbose syntax error message
-     before the lookahead is translated.  */
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
@@ -10811,10 +10778,6 @@ yyreduce:
 | yyerrlab -- here on detecting error |
 `------------------------------------*/
 yyerrlab:
-  /* Make sure we have latest lookahead translation.  See comments at
-     user semantic actions for why this is necessary.  */
-  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
@@ -10822,36 +10785,37 @@ yyerrlab:
 #if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
 #else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
-                                        yyssp, yytoken)
       {
-        char const *yymsgp = YY_("syntax error");
-        int yysyntax_error_status;
-        yysyntax_error_status = YYSYNTAX_ERROR;
-        if (yysyntax_error_status == 0)
-          yymsgp = yymsg;
-        else if (yysyntax_error_status == 1)
-          {
-            if (yymsg != yymsgbuf)
-              YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-            if (!yymsg)
-              {
-                yymsg = yymsgbuf;
-                yymsg_alloc = sizeof yymsgbuf;
-                yysyntax_error_status = 2;
-              }
-            else
-              {
-                yysyntax_error_status = YYSYNTAX_ERROR;
-                yymsgp = yymsg;
-              }
-          }
-        yyerror (yymsgp);
-        if (yysyntax_error_status == 2)
-          goto yyexhaustedlab;
+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+	  {
+	    YYSIZE_T yyalloc = 2 * yysize;
+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
+	    if (yymsg != yymsgbuf)
+	      YYSTACK_FREE (yymsg);
+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+	    if (yymsg)
+	      yymsg_alloc = yyalloc;
+	    else
+	      {
+		yymsg = yymsgbuf;
+		yymsg_alloc = sizeof yymsgbuf;
+	      }
+	  }
+
+	if (0 < yysize && yysize <= yymsg_alloc)
+	  {
+	    (void) yysyntax_error (yymsg, yystate, yychar);
+	    yyerror (yymsg);
+	  }
+	else
+	  {
+	    yyerror (YY_("syntax error"));
+	    if (yysize != 0)
+	      goto yyexhaustedlab;
+	  }
       }
-# undef YYSYNTAX_ERROR
 #endif
     }
 
@@ -10910,7 +10874,7 @@ yyerrlab1:
   for (;;)
     {
       yyn = yypact[yystate];
-      if (!yypact_value_is_default (yyn))
+      if (yyn != YYPACT_NINF)
 	{
 	  yyn += YYTERROR;
 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -10969,13 +10933,8 @@ yyexhaustedlab:
 
 yyreturn:
   if (yychar != YYEMPTY)
-    {
-      /* Make sure we have latest lookahead translation.  See comments at
-         user semantic actions for why this is necessary.  */
-      yytoken = YYTRANSLATE (yychar);
-      yydestruct ("Cleanup: discarding lookahead",
-                  yytoken, &yylval);
-    }
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
   /* Do not reclaim the symbols of the rule which action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
@@ -11000,7 +10959,7 @@ yyreturn:
 
 
 
-/* Line 2067 of yacc.c  */
+/* Line 1684 of yacc.c  */
 #line 4861 "Gmsh.y"
 
 
diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp
index 6cdb6e2ba4ed7a147da8c1f4002fe7ff393611ad..50e0ba074572fa973a64d14458d171360a8db95b 100644
--- a/Parser/Gmsh.tab.hpp
+++ b/Parser/Gmsh.tab.hpp
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 2.5.  */
+/* A Bison parser, made by GNU Bison 2.4.3.  */
 
-/* Bison interface for Yacc-like parsers in C
+/* Skeleton interface for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2009, 2010 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -186,7 +187,7 @@
 typedef union YYSTYPE
 {
 
-/* Line 2068 of yacc.c  */
+/* Line 1685 of yacc.c  */
 #line 92 "Gmsh.y"
 
   char *c;
@@ -199,8 +200,8 @@ typedef union YYSTYPE
 
 
 
-/* Line 2068 of yacc.c  */
-#line 204 "Gmsh.tab.hpp"
+/* Line 1685 of yacc.c  */
+#line 205 "Gmsh.tab.hpp"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 3d4821373d7dd79a9223c20cb2beb962fefae267..9c9f3d6493ef830b1c42292c30a33f19f6a1d87d 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -66,6 +66,7 @@ typedef int16_t flex_int16_t;
 typedef uint16_t flex_uint16_t;
 typedef int32_t flex_int32_t;
 typedef uint32_t flex_uint32_t;
+typedef uint64_t flex_uint64_t;
 #else
 typedef signed char flex_int8_t;
 typedef short int flex_int16_t;
@@ -73,6 +74,7 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -103,8 +105,6 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#endif /* ! C99 */
-
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -161,15 +161,7 @@ typedef unsigned int flex_uint32_t;
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -181,7 +173,12 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
-extern int gmsh_yyleng;
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t gmsh_yyleng;
 
 extern FILE *gmsh_yyin, *gmsh_yyout;
 
@@ -207,11 +204,6 @@ extern FILE *gmsh_yyin, *gmsh_yyout;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -229,7 +221,7 @@ struct yy_buffer_state
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	int yy_n_chars;
+	yy_size_t yy_n_chars;
 
 	/* Whether we "own" the buffer - i.e., we know we created it,
 	 * and can realloc() it to grow it, and should free() it to
@@ -299,8 +291,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when gmsh_yytext is formed. */
 static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int gmsh_yyleng;
+static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
+yy_size_t gmsh_yyleng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
@@ -328,7 +320,7 @@ static void gmsh_yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE gmsh_yy_scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE gmsh_yy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 void *gmsh_yyalloc (yy_size_t  );
 void *gmsh_yyrealloc (void *,yy_size_t  );
@@ -383,7 +375,7 @@ static void yy_fatal_error (yyconst char msg[]  );
  */
 #define YY_DO_BEFORE_ACTION \
 	(yytext_ptr) = yy_bp; \
-	gmsh_yyleng = (size_t) (yy_cp - yy_bp); \
+	gmsh_yyleng = (yy_size_t) (yy_cp - yy_bp); \
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
@@ -964,7 +956,7 @@ void   skipline(void);
 #define YY_NO_UNISTD_H
 #endif
 
-#line 968 "Gmsh.yy.cpp"
+#line 960 "Gmsh.yy.cpp"
 
 #define INITIAL 0
 
@@ -1003,7 +995,7 @@ FILE *gmsh_yyget_out (void );
 
 void gmsh_yyset_out  (FILE * out_str  );
 
-int gmsh_yyget_leng (void );
+yy_size_t gmsh_yyget_leng (void );
 
 char *gmsh_yyget_text (void );
 
@@ -1045,12 +1037,7 @@ static int input (void );
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -1058,7 +1045,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( gmsh_yytext, gmsh_yyleng, 1, gmsh_yyout )) {} } while (0)
+#define ECHO fwrite( gmsh_yytext, gmsh_yyleng, 1, gmsh_yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1069,7 +1056,7 @@ static int input (void );
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		size_t n; \
+		yy_size_t n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( gmsh_yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -1154,7 +1141,7 @@ YY_DECL
 #line 49 "Gmsh.l"
 
 
-#line 1158 "Gmsh.yy.cpp"
+#line 1145 "Gmsh.yy.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -2044,7 +2031,7 @@ YY_RULE_SETUP
 #line 238 "Gmsh.l"
 ECHO;
 	YY_BREAK
-#line 2048 "Gmsh.yy.cpp"
+#line 2035 "Gmsh.yy.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2230,7 +2217,7 @@ static int yy_get_next_buffer (void)
 
 	else
 		{
-			int num_to_read =
+			yy_size_t num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
@@ -2244,7 +2231,7 @@ static int yy_get_next_buffer (void)
 
 			if ( b->yy_is_our_buffer )
 				{
-				int new_size = b->yy_buf_size * 2;
+				yy_size_t new_size = b->yy_buf_size * 2;
 
 				if ( new_size <= 0 )
 					b->yy_buf_size += b->yy_buf_size / 8;
@@ -2275,7 +2262,7 @@ static int yy_get_next_buffer (void)
 
 		/* Read in more data. */
 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), (size_t) num_to_read );
+			(yy_n_chars), num_to_read );
 
 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 		}
@@ -2385,7 +2372,7 @@ static int yy_get_next_buffer (void)
 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 		{ /* need to shift things up to make room */
 		/* +2 for EOB chars. */
-		register int number_to_move = (yy_n_chars) + 2;
+		register yy_size_t number_to_move = (yy_n_chars) + 2;
 		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
 		register char *source =
@@ -2434,7 +2421,7 @@ static int yy_get_next_buffer (void)
 
 		else
 			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
+			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
 			++(yy_c_buf_p);
 
 			switch ( yy_get_next_buffer(  ) )
@@ -2458,7 +2445,7 @@ static int yy_get_next_buffer (void)
 				case EOB_ACT_END_OF_FILE:
 					{
 					if ( gmsh_yywrap( ) )
-						return EOF;
+						return 0;
 
 					if ( ! (yy_did_buffer_switch_on_eof) )
 						YY_NEW_FILE;
@@ -2710,7 +2697,7 @@ void gmsh_yypop_buffer_state (void)
  */
 static void gmsh_yyensure_buffer_stack (void)
 {
-	int num_to_alloc;
+	yy_size_t num_to_alloc;
     
 	if (!(yy_buffer_stack)) {
 
@@ -2802,17 +2789,16 @@ YY_BUFFER_STATE gmsh_yy_scan_string (yyconst char * yystr )
 
 /** Setup the input buffer state to scan the given bytes. The next call to gmsh_yylex() will
  * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE gmsh_yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE gmsh_yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
 	YY_BUFFER_STATE b;
 	char *buf;
-	yy_size_t n;
-	int i;
+	yy_size_t n, i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
 	n = _yybytes_len + 2;
@@ -2894,7 +2880,7 @@ FILE *gmsh_yyget_out  (void)
 /** Get the length of the current token.
  * 
  */
-int gmsh_yyget_leng  (void)
+yy_size_t gmsh_yyget_leng  (void)
 {
         return gmsh_yyleng;
 }
diff --git a/Plugin/Crack.cpp b/Plugin/Crack.cpp
index efe09f60e995644fc63b948ed81e98e414d82afd..5617abc57320ec900f8f33305dd10c5ad31841bc 100644
--- a/Plugin/Crack.cpp
+++ b/Plugin/Crack.cpp
@@ -5,18 +5,14 @@
 
 #include "Crack.h"
 #include "GModel.h"
-#include "partitionFace.h"
-#include "partitionEdge.h"
+#include "discreteEdge.h"
+#include "discreteFace.h"
 #include "MElement.h"
 #include "MLine.h"
 #include "MTriangle.h"
 #include "MQuadrangle.h"
-#include "MFace.h"
 #include "MEdge.h"
-#include "mathEvaluator.h"
-#if defined(HAVE_MESH)
-#include "meshPartition.h"
-#endif
+#include "Context.h"
 
 StringXNumber CrackOptions_Number[] = {
   {GMSH_FULLRC, "Dimension", NULL, 1.},
@@ -33,7 +29,13 @@ extern "C"
 
 std::string GMSH_CrackPlugin::getHelp() const
 {
-  return "Plugin(Crack) creates a crack around the physical group";
+  return "Plugin(Crack) creates a crack around the physical "
+    "group `PhysicalGroup' of dimension `Dimension' (1 or 2). "
+    "The plugin duplicates the vertices and the elements on "
+    "the crack and stores them in a new discrete curve "
+    "(Dimension = 1) or surface (Dimension = 2). The "
+    "elements touching the crack on the negative side "
+    "are modified to use the newly generated vertices.";
 }
 
 int GMSH_CrackPlugin::getNbOptions() const
diff --git a/Plugin/PluginManager.cpp b/Plugin/PluginManager.cpp
index b1acc9510150b52e004247f1ae5df4471a5b5560..1afbfa3757814d3d95365889d26096aa1bcf2bc1 100644
--- a/Plugin/PluginManager.cpp
+++ b/Plugin/PluginManager.cpp
@@ -108,8 +108,11 @@ void PluginManager::action(std::string pluginName, std::string action, void *dat
   GMSH_Plugin *plugin = find(pluginName);
   if(!plugin) throw "Unknown plugin name";
 
-  if(action == "Run")
+  if(action == "Run"){
+    Msg::Info("Running Plugin(%s)...", pluginName.c_str());
     plugin->run();
+    Msg::Info("Done running Plugin(%s)", pluginName.c_str());
+  }
   else
     throw "Unknown plugin action";
 }
diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi
index 539da5d4edd1048c6f9fb8ff8b6938bd9d8245f7..6d853e884f34cf5b80b79c3cc3fc698a5a1f767f 100644
--- a/doc/texinfo/gmsh.texi
+++ b/doc/texinfo/gmsh.texi
@@ -3219,9 +3219,9 @@ cases.)
 The MSH ASCII file format contains one mandatory section giving
 information about the file (@code{$MeshFormat}), followed by several
 optional sections defining the nodes (@code{$Nodes}), elements
-(@code{$Elements}), region names (@code{$PhysicalName}) and
-post-processing datasets (@code{$NodeData}, @code{$ElementData},
-@code{$ElementNodeData}).
+(@code{$Elements}), region names (@code{$PhysicalName}), periodicity
+relations (@code{$Periodic}) and post-processing datasets
+(@code{$NodeData}, @code{$ElementData}, @code{$ElementNodeData}).
 
 When @code{$Elements} are given, @code{$Nodes} should also be provided,
 before the @code{$Elements} section. Currently only one @code{$Nodes}
@@ -3252,6 +3252,13 @@ $Elements
 @var{elm-number} @var{elm-type} @var{number-of-tags} < @var{tag} > @dots{} @var{node-number-list}
 @dots{}
 $EndElements
+$Periodic
+@var{number-of-periodic-entities}
+@var{dimension} @var{slave-entity-tag} @var{master-entity-tag}
+@var{number-of-nodes}
+@var{slave-node-number master-node-number}
+@dots{}
+$EndPeriodic
 $PhysicalNames
 @var{number-of-names}
 @var{physical-dimension} @var{physical-number} "@var{physical-name}"