diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l
index dee0cb877ed7ef89d0d2c75876f1d29d1c9f31b4..90cc70ad314585eb4d2da6919e871f849566128c 100644
--- a/Parser/Gmsh.l
+++ b/Parser/Gmsh.l
@@ -169,7 +169,7 @@ FixRelativePath         return tFixRelativePath;
 Floor                   return tFloor;
 Fmod                    return tFmod;
 For                     return tFor;
-Function                return tFunction;
+Function                return tMacro;
 
 GetEnv                  return tGetEnv;
 GetString               return tGetString;
@@ -200,6 +200,7 @@ Log10                   return tLog10;
 Layers                  return tLayers;
 Levelset                return tLevelset;
 
+Macro                   return tMacro;
 MeshAlgorithm           return tMeshAlgorithm;
 Modulo                  return tModulo;
 MPI_Rank                return tMPI_Rank;
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 55ceaf8122409de0c76bd93265a830fa85974c97..f7a829ede36f0289bbdf8bdfba96241892f88236 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -348,7 +348,7 @@ extern int gmsh_yydebug;
      tField = 398,
      tReturn = 399,
      tCall = 400,
-     tFunction = 401,
+     tMacro = 401,
      tShow = 402,
      tHide = 403,
      tGetValue = 404,
@@ -1149,9 +1149,9 @@ static const char *const yytname[] =
   "tInterpolationScheme", "tTime", "tCombine", "tBSpline", "tBezier",
   "tNurbs", "tNurbsOrder", "tNurbsKnots", "tColor", "tColorTable", "tFor",
   "tIn", "tEndFor", "tIf", "tEndIf", "tExit", "tAbort", "tField",
-  "tReturn", "tCall", "tFunction", "tShow", "tHide", "tGetValue",
-  "tGetEnv", "tGetString", "tGetNumber", "tHomology", "tCohomology",
-  "tBetti", "tSetOrder", "tExists", "tFileExists", "tGMSH_MAJOR_VERSION",
+  "tReturn", "tCall", "tMacro", "tShow", "tHide", "tGetValue", "tGetEnv",
+  "tGetString", "tGetNumber", "tHomology", "tCohomology", "tBetti",
+  "tSetOrder", "tExists", "tFileExists", "tGMSH_MAJOR_VERSION",
   "tGMSH_MINOR_VERSION", "tGMSH_PATCH_VERSION", "tGmshExecutableName",
   "tAFFECTDIVIDE", "tAFFECTTIMES", "tAFFECTMINUS", "tAFFECTPLUS", "'?'",
   "tOR", "tAND", "tNOTEQUAL", "tEQUAL", "'<'", "'>'", "tGREATEROREQUAL",
diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp
index 3f43cc309314b06290cd538c1c5fb9b53f60210f..dba04f99bb5423ebd6ba81b14653253d5964bcda 100644
--- a/Parser/Gmsh.tab.hpp
+++ b/Parser/Gmsh.tab.hpp
@@ -189,7 +189,7 @@ extern int gmsh_yydebug;
      tField = 398,
      tReturn = 399,
      tCall = 400,
-     tFunction = 401,
+     tMacro = 401,
      tShow = 402,
      tHide = 403,
      tGetValue = 404,
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 62c6dd4ce6e17b204b4b72d83105af7da9622209..1f1c348644d55f8c01782e439f724fdf5fc8c30a 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -137,7 +137,7 @@ struct doubleXstring{
 %token tText2D tText3D tInterpolationScheme tTime tCombine
 %token tBSpline tBezier tNurbs tNurbsOrder tNurbsKnots
 %token tColor tColorTable tFor tIn tEndFor tIf tEndIf tExit tAbort
-%token tField tReturn tCall tFunction tShow tHide tGetValue tGetEnv tGetString tGetNumber
+%token tField tReturn tCall tMacro tShow tHide tGetValue tGetEnv tGetString tGetNumber
 %token tHomology tCohomology tBetti tSetOrder tExists tFileExists
 %token tGMSH_MAJOR_VERSION tGMSH_MINOR_VERSION tGMSH_PATCH_VERSION
 %token tGmshExecutableName
@@ -3120,7 +3120,7 @@ Loop :
 	  ImbricatedLoop--;
       }
     }
-  | tFunction tSTRING
+  | tMacro tSTRING
     {
       if(!FunctionManager::Instance()->createFunction
          (std::string($2), gmsh_yyin, gmsh_yyname, gmsh_yylineno))
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index e2d6c5708a4fb46e8acd2767df0cb468d5b1c485..d57436fae4595f7a9309ec2ecd5b2d207ab90da6 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -380,8 +380,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 196
-#define YY_END_OF_BUFFER 197
+#define YY_NUM_RULES 197
+#define YY_END_OF_BUFFER 198
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -389,115 +389,115 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[974] =
+static yyconst flex_int16_t yy_accept[978] =
     {   0,
-        0,    0,  197,  195,    1,    1,  195,    5,  195,    6,
-      195,  195,  195,  195,  195,  190,   21,    2,  195,   16,
-      195,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  195,   28,   24,   19,   25,   17,
-       26,   18,    0,  192,    3,    4,   20,  191,  190,    0,
-       29,   27,   30,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-
-      194,  194,  107,  106,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  130,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  176,  177,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,   23,
-       22,    0,  191,    0,    0,  193,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,   54,   65,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-       74,  194,  194,  194,  194,  194,  194,  194,  194,   92,
-
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  114,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  158,  194,  194,  194,
-      194,  194,  164,  194,  194,  194,  194,  184,  194,  194,
-      194,  194,  194,  194,  194,  194,    0,  192,    0,    0,
-      191,  194,   32,  194,  194,  194,  194,  194,   37,   39,
-      194,  194,  194,  194,   62,  194,   47,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,   53,  194,  194,  194,
-
-      194,  194,   72,  194,  194,  194,  194,  194,  194,   83,
-      194,   85,  194,  194,   87,  194,  194,   91,  194,  194,
-      194,  194,  194,  194,  194,  102,  103,  194,  194,  194,
-      194,  194,  194,  194,  194,  112,  113,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  147,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      173,  159,  194,  194,  194,  194,  157,  194,  194,  194,
-      194,  194,  194,  194,  179,  183,  194,  194,  194,  194,
-      194,  194,  194,   10,   15,    9,    8,  194,   12,   14,
-
-        0,  191,   31,  194,   35,  194,  194,  194,   41,  194,
-       43,  194,  194,  194,  194,  194,  194,  194,   57,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,   80,   82,  194,  194,  194,   86,  194,  194,   90,
-      194,  194,  194,  194,  194,  194,  194,  194,  105,  194,
-      194,  110,  194,  194,  194,  115,  194,  194,  194,  194,
-      194,  194,  124,  194,  127,  194,  194,  194,  131,  194,
-      132,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  145,  146,  194,  194,  194,  194,  194,  194,  194,
-      194,  162,  194,  194,  194,  194,  194,  194,  194,  194,
-
-      194,  194,  194,  185,  194,  194,  194,  188,  194,   11,
-      194,   13,  194,  194,   34,   38,   40,  194,   44,  194,
-      194,  194,   48,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,   69,   71,  194,  194,   79,  194,
-       84,  194,  194,  194,  194,  194,  194,   94,  194,  194,
-      194,  194,  194,  194,  194,  116,  111,  194,  194,  194,
-      122,  194,  119,  194,  194,  194,  194,  194,  136,  194,
-      135,  194,  194,  194,  194,  194,  150,  194,  144,  194,
-      194,  194,  194,  194,  194,  160,  161,  194,  166,  194,
-      171,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-
-      194,  194,  194,  189,    7,  194,  194,   42,   45,  194,
-      194,  194,  194,  194,  194,   52,   56,  194,  194,  194,
-      194,  194,  194,  194,  194,   76,  194,  194,  194,   77,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      151,  194,  194,  194,  194,  194,  194,  165,  194,  170,
-      194,  194,  194,  163,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-       59,  194,  194,  194,  194,  194,  194,  194,   75,   78,
-
-      194,  194,  194,   93,  194,  194,  194,  194,  194,   97,
-      194,  104,  194,  194,  117,  120,  121,  194,  123,  194,
-      194,  194,  128,  129,  194,  194,  194,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,  154,  194,  153,
-      194,  194,  194,  194,  174,  194,  194,  194,  194,  194,
-      194,  194,   33,  194,  194,  194,  194,   50,  194,  194,
-      194,  194,  194,  194,  194,  194,  194,   81,  194,  194,
-      194,  194,  194,   96,   95,  194,  194,  108,  194,  194,
-      126,  194,  194,  194,  194,  194,  194,  194,  141,  143,
-      194,  194,  194,  194,  155,  156,  172,  168,  194,  194,
-
-      175,  194,  194,  194,  194,  182,  194,  194,  194,   61,
-      194,   51,   58,  194,  194,  194,  194,  194,  194,  194,
-       88,  194,  194,  194,  194,  194,  194,  194,  194,  133,
-      194,  194,  139,  194,  194,  194,  148,  194,  194,   73,
-      194,  167,  194,  194,  194,  194,  194,  194,   46,  194,
-       60,   49,  194,  194,  194,  194,   70,  194,  194,  194,
-      194,  194,  194,  194,  194,  134,  194,  194,  140,  194,
-      194,  194,  169,  194,  186,  194,  180,  194,  194,  194,
-      194,  194,   67,   68,  194,  194,  194,  194,  194,  194,
-      194,  125,  194,  194,  194,  149,  194,  194,  194,  194,
-
-      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
-      118,  194,  194,  194,  194,  194,  181,  194,  194,   55,
-       63,   66,  194,  194,  194,  194,  194,  194,  194,  194,
-      142,  152,  178,  194,  194,  194,   89,  194,  194,  194,
-      194,  194,  137,  194,  194,   36,  194,  194,  194,  194,
-      194,  194,  194,  187,  194,  194,  194,  194,  194,  194,
-      138,  194,   98,   99,  100,  101,  194,  194,  194,  194,
-      109,   64,    0
+        0,    0,  198,  196,    1,    1,  196,    5,  196,    6,
+      196,  196,  196,  196,  196,  191,   21,    2,  196,   16,
+      196,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  196,   28,   24,   19,   25,   17,
+       26,   18,    0,  193,    3,    4,   20,  192,  191,    0,
+       29,   27,   30,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+
+      195,  195,  107,  106,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      131,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  177,
+      178,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+       23,   22,    0,  192,    0,    0,  194,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,   54,   65,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,   74,  195,  195,  195,  195,  195,  195,  195,  195,
+
+       92,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  114,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  159,  195,
+      195,  195,  195,  195,  165,  195,  195,  195,  195,  185,
+      195,  195,  195,  195,  195,  195,  195,  195,    0,  193,
+        0,    0,  192,  195,   32,  195,  195,  195,  195,  195,
+       37,   39,  195,  195,  195,  195,   62,  195,   47,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,   53,  195,
+
+      195,  195,  195,  195,   72,  195,  195,  195,  195,  195,
+      195,   83,  195,   85,  195,  195,   87,  195,  195,   91,
+      195,  195,  195,  195,  195,  195,  195,  102,  103,  195,
+      195,  195,  195,  195,  195,  195,  195,  112,  113,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  148,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  174,  160,  195,  195,  195,  195,  158,
+      195,  195,  195,  195,  195,  195,  195,  180,  184,  195,
+      195,  195,  195,  195,  195,  195,   10,   15,    9,    8,
+
+      195,   12,   14,    0,  192,   31,  195,   35,  195,  195,
+      195,   41,  195,   43,  195,  195,  195,  195,  195,  195,
+      195,   57,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,   80,   82,  195,  195,  195,   86,
+      195,  195,   90,  195,  195,  195,  195,  195,  195,  195,
+      195,  105,  195,  195,  110,  195,  195,  195,  115,  195,
+      195,  118,  195,  195,  195,  195,  125,  195,  128,  195,
+      195,  195,  132,  195,  133,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  146,  147,  195,  195,  195,
+      195,  195,  195,  195,  195,  163,  195,  195,  195,  195,
+
+      195,  195,  195,  195,  195,  195,  195,  186,  195,  195,
+      195,  189,  195,   11,  195,   13,  195,  195,   34,   38,
+       40,  195,   44,  195,  195,  195,   48,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,   69,   71,
+      195,  195,   79,  195,   84,  195,  195,  195,  195,  195,
+      195,   94,  195,  195,  195,  195,  195,  195,  195,  116,
+      111,  195,  195,  195,  123,  195,  120,  195,  195,  195,
+      195,  195,  137,  195,  136,  195,  195,  195,  195,  195,
+      151,  195,  145,  195,  195,  195,  195,  195,  195,  161,
+      162,  195,  167,  195,  172,  195,  195,  195,  195,  195,
+
+      195,  195,  195,  195,  195,  195,  195,  190,    7,  195,
+      195,   42,   45,  195,  195,  195,  195,  195,  195,   52,
+       56,  195,  195,  195,  195,  195,  195,  195,  195,   76,
+      195,  195,  195,   77,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  152,  195,  195,  195,  195,  195,
+      195,  166,  195,  171,  195,  195,  195,  164,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,   59,  195,  195,  195,  195,  195,
+
+      195,  195,   75,   78,  195,  195,  195,   93,  195,  195,
+      195,  195,  195,   97,  195,  104,  195,  195,  117,  121,
+      122,  195,  124,  195,  195,  195,  129,  130,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  155,  195,  154,  195,  195,  195,  195,  175,  195,
+      195,  195,  195,  195,  195,  195,   33,  195,  195,  195,
+      195,   50,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,   81,  195,  195,  195,  195,  195,   96,   95,  195,
+      195,  108,  195,  195,  127,  195,  195,  195,  195,  195,
+      195,  195,  142,  144,  195,  195,  195,  195,  156,  157,
+
+      173,  169,  195,  195,  176,  195,  195,  195,  195,  183,
+      195,  195,  195,   61,  195,   51,   58,  195,  195,  195,
+      195,  195,  195,  195,   88,  195,  195,  195,  195,  195,
+      195,  195,  195,  134,  195,  195,  140,  195,  195,  195,
+      149,  195,  195,   73,  195,  168,  195,  195,  195,  195,
+      195,  195,   46,  195,   60,   49,  195,  195,  195,  195,
+       70,  195,  195,  195,  195,  195,  195,  195,  195,  135,
+      195,  195,  141,  195,  195,  195,  170,  195,  187,  195,
+      181,  195,  195,  195,  195,  195,   67,   68,  195,  195,
+      195,  195,  195,  195,  195,  126,  195,  195,  195,  150,
+
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  119,  195,  195,  195,  195,  195,
+      182,  195,  195,   55,   63,   66,  195,  195,  195,  195,
+      195,  195,  195,  195,  143,  153,  179,  195,  195,  195,
+       89,  195,  195,  195,  195,  195,  138,  195,  195,   36,
+      195,  195,  195,  195,  195,  195,  195,  188,  195,  195,
+      195,  195,  195,  195,  139,  195,   98,   99,  100,  101,
+      195,  195,  195,  195,  109,   64,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -544,229 +544,229 @@ static yyconst flex_int32_t yy_meta[74] =
         2,    2,    1
     } ;
 
-static yyconst flex_int16_t yy_base[975] =
+static yyconst flex_int16_t yy_base[979] =
     {   0,
-        0,    0, 1106, 1107, 1107, 1107, 1084, 1107, 1098, 1107,
-     1082,   65,   66,   64,   76,   78, 1107, 1107, 1081, 1080,
-     1079,   49,   49,   56,   67,   68,   81,   50,   80,   97,
-        0, 1039,   97,  108,   54,   83,  107, 1031,  118,  125,
-      158,   62, 1036, 1044, 1022, 1107, 1107, 1107, 1107, 1107,
-     1107, 1107, 1083,  184, 1107, 1107, 1107,  199,  214,  229,
-     1107, 1107, 1107,    0, 1032, 1031, 1043, 1034, 1039, 1032,
-     1039, 1024,   95, 1018,   58, 1028, 1035, 1018,  194, 1014,
-     1028,  149, 1021, 1030, 1019, 1025, 1011, 1024,  116, 1024,
-      202, 1011, 1010, 1006, 1009, 1027, 1001, 1001, 1014,   24,
-
-     1002, 1021,    0,  996, 1000,  989,   84,  130, 1005, 1027,
-      158, 1006,  987,  991, 1002, 1002,  988,  987,  979,    0,
-      116,   98,  993, 1000,  987,  182,  127,  988,  997,  978,
-      982,  982,  980,  203,  976,  975,  974,  145,    0,    0,
-     1002,  976,  965,  158,  986,  982,  976,  973,  961, 1107,
-     1107,  260,  265,  274,  280,  285,  965,  963,  965,  978,
-      222,  965,  964,  965,  956,  965,  960,  961,  959,  959,
-      952,  965,   73,  953,  159,  949,  941,  956,    0,  962,
-      953,  956,  955,  958,  936,  948,  206,  942,  944,  220,
-        0,  937,  935,  941,  946,  946,  956,  934,  943,    0,
-
-      943,  962,  277,  936,  938,  937,  927,  926,  959,  933,
-      918,  931,  928,  929,  928,  913,  964,  930,  915,  920,
-      907,  938,  923,  913,  918,  921,  912,  902,  906,  911,
-      904,  915,  902,  910,  909,  204,  903,  897,  890,  904,
-      907,  894,  901,  894,  278,  882,  895,  888,  896,  891,
-      890,  879,  282,  891,  884,  892,  914,  885,  873,  890,
-      889,  876,  883,  874,  866,  273,  329,  334,  343,  348,
-      353,  866,    0,  865,  865,  868,  872,  879,    0,  911,
-      869,  868,  871,  871,    0,  854,    0,  872,  861,  854,
-      858,  852,  859,  247,  863,  876,    0,  846,  851,  850,
-
-      843,  842,    0,  845,  845,  852,  840,  847,  836,    0,
-      834,    0,  849,  872,    0,  846,  833,    0,  830,  848,
-      834,  826,  826,  843,  863,    0,    0,  831,  822,  847,
-      822,  820,  820,  817,  824,    0,    0,  868,  271,  816,
-      856,  820,  816,  811,  827,  810,  814,  811,  815,  818,
-      813,  802,  803,  800,  191,    0,  806,  800,  803,  812,
-      797,  796,  793,  807,  806,  804,  800,  787,  789,  786,
-        0,    0,  785,  786,  264,  789,    0,  277,  792,  783,
-      794,  797,  792,  808,    0,    0,  819,  770,  782,  774,
-      785,  783,  777,    0,    0,  777,    0,  782,  775,    0,
-
-      358,  363,    0,  797,  786,  765,  769,  768,    0,  767,
-        0,  762,  769,  766,  773,  770,  769,  759,  777,  758,
-      765,  749,  759,  752,  761,  760,  759,  758,  757,  262,
-      744,    0,    0,  756,  741,  754,    0,  734,  745,    0,
-      746,  271,  733,  741,  735,  740,  727,  735,    0,  757,
-      729,    0,  728,  737,  726,    0,  742,  733,  717,  729,
-      725,  734,    0,  735,    0,  731,  731,  731,    0,  720,
-        0,  738,  725,  713,  727,  710,  722,  725,  712,  706,
-      718,    0,    0,  735,  720,  708,  715,  701,  709,  711,
-      710,    0,  695,  694,  698,  696,  697,  704,  271,  705,
-
-      688,  692,  686,    0,  716,  281,  694,    0,  697,    0,
-      694,    0,  695,  690,    0,    0,  730,  692,    0,  683,
-      684,  675,    0,  680,  681,  690,  685,  666,  675,  674,
-      667,  690,  356,  667,    0,    0,  330,  674,    0,  673,
-        0,  676,  671,  678,  664,  360,  701,    0,  674,  666,
-      654,  668,  665,  681,  665,    0,    0,  664,  655,  642,
-        0,  659,    0,  660,  361,  645,  654,  661,    0,  646,
-        0,  651,  351,  650,  670,  638,    0,  651,    0,  654,
-      641,  651,  647,  642,  645,    0,    0,  643,    0,  639,
-        0,  643,  640,  644,  633,  638,  625,  637,  621,  634,
-
-      348,  637,  624,    0,    0,  618,  616,    0,    0,  627,
-      640,  627,  628,  616,  627,    0,    0,  624,  626,  617,
-      611,  610,  603,  603,  620,    0,  602,  616,  617,    0,
-      599,  597,  602,  629,  624,  617,  606,  597,  604,  605,
-      583,  619,  602,  585,  593,  597,  587,  589,  596,  578,
-      580,  593,  584,  586,  367,  592,  579,  570,  585,  584,
-        0,  570,  580,  581,  568,  571,  566,    0,  579,    0,
-      572,  561,  578,    0,  554,  572,  559,  563,  554,  560,
-      553,  566,  562,  561,  591,  553,  549,  560,  557,  552,
-        0,  543,  547,   34,   43,  117,  122,  152,    0,    0,
-
-      160,  202,  260,    0,  303,  317,  330,  324,  335,    0,
-      327,    0,  372,  330,    0,    0,    0,  334,    0,  333,
-      340,  346,    0,    0,  353,  355,  361,  351,  353,  348,
-      364,  365,  354,  385,  355,  370,  359,    0,  370,    0,
-      373,  356,  372,  379,    0,  372,  375,  372,  386,  379,
-      384,  412,    0,  401,  378,  381,  385,    0,  371,  391,
-      392,  385,  385,  382,  399,  393,  398,    0,  386,  384,
-      413,  414,  425,    0,    0,  390,  415,    0,  402,  403,
-        0,  410,  397,  411,  405,  428,  411,  414,    0,    0,
-      412,  416,  435,  419,    0,    0,    0,    0,  403,  420,
-
-        0,  424,  410,  424,  410,    0,  416,  416,  409,    0,
-      415,    0,    0,  416,  417,  425,  418,  433,  426,  436,
-        0,  437,  443,  444,  445,  445,  463,  429,  435,    0,
-      445,  454,    0,  447,  442,  437,    0,  437,  455,    0,
-      452,    0,  438,  435,  465,  456,  449,  444,    0,  445,
-        0,    0,  451,  465,  450,  461,    0,  478,  473,  474,
-      475,  471,  484,  468,  464,    0,  473,  457,    0,  479,
-      473,  458,    0,  464,    0,  468,    0,  468,  478,  479,
-      482,  477,    0,    0,  490,  512,  513,  514,  484,  507,
-      485,    0,  481,  502,  489,    0,  496,  497,  494,  485,
-
-      491,  503,  483,  489,  490,  517,  518,  519,  508,  514,
-        0,  496,  511,  499,  501,  501,    0,  519,  508,    0,
-      533,    0,  516,  531,  532,  533,  539,  535,  512,  514,
-        0,    0,    0,  519,  515,  520,    0,  551,  552,  553,
-      537,  561,    0,  521,  522,    0,  559,  553,  554,  555,
-      534,  564,  530,    0,  535,  561,  562,  563,  548,  574,
-        0,  544,    0,    0,    0,    0,  568,  552,  578,  541,
-        0,    0, 1107,  605
+        0,    0, 1110, 1111, 1111, 1111, 1088, 1111, 1102, 1111,
+     1086,   65,   66,   64,   76,   78, 1111, 1111, 1085, 1084,
+     1083,   49,   49,   56,   67,   68,   81,   50,   80,   97,
+        0, 1043,   97,  108,   54,   83,  107, 1035,  118,  125,
+      158,   62, 1040, 1048, 1026, 1111, 1111, 1111, 1111, 1111,
+     1111, 1111, 1087,  184, 1111, 1111, 1111,  199,  214,  229,
+     1111, 1111, 1111,    0, 1036, 1035, 1047, 1038, 1043, 1036,
+     1043, 1028,   95, 1022,   58, 1032, 1039, 1022,  194, 1018,
+     1032,  149, 1025, 1034, 1023, 1029, 1015, 1028,  116, 1028,
+      202, 1015, 1014, 1010, 1013, 1031, 1005, 1005, 1018,   24,
+
+     1006, 1025,    0, 1000, 1004,  993,   84,  130, 1009, 1031,
+     1011,  158, 1009,  990,  994, 1005, 1005,  991,  990,  982,
+        0,  116,  162,  996, 1003,  990,  182,  127,  991, 1000,
+      981,  985,  985,  983,  203,  979,  978,  977,  145,    0,
+        0, 1005,  979,  968,  158,  989,  985,  979,  976,  964,
+     1111, 1111,  260,  265,  274,  280,  285,  968,  966,  968,
+      981,  222,  968,  967,  968,  959,  968,  963,  964,  962,
+      962,  955,  968,   73,  956,  159,  952,  944,  959,    0,
+      965,  956,  959,  958,  961,  939,  951,  206,  945,  947,
+      220,    0,  940,  938,  944,  949,  949,  959,  937,  946,
+
+        0,  946,  965,  277,  939,  941,  940,  930,  929,  962,
+      936,  921,  934,  931,  932,  931,  916,  967,  933,  915,
+      917,  922,  909,  940,  925,  915,  920,  923,  914,  904,
+      908,  913,  906,  917,  904,  912,  911,  204,  905,  899,
+      892,  906,  909,  896,  903,  896,  278,  884,  897,  890,
+      898,  893,  892,  881,  282,  893,  886,  894,  916,  887,
+      875,  892,  891,  878,  885,  876,  868,  273,  329,  334,
+      343,  348,  353,  868,    0,  867,  867,  870,  874,  881,
+        0,  913,  871,  870,  873,  873,    0,  856,    0,  874,
+      863,  856,  860,  854,  861,  247,  865,  878,    0,  848,
+
+      853,  852,  845,  844,    0,  847,  847,  854,  842,  849,
+      838,    0,  836,    0,  851,  874,    0,  848,  835,    0,
+      832,  850,  836,  828,  828,  845,  865,    0,    0,  833,
+      824,  849,  824,  822,  822,  819,  826,    0,    0,  870,
+      271,  821,  817,  857,  821,  817,  812,  828,  811,  815,
+      812,  816,  819,  814,  803,  804,  801,  191,    0,  807,
+      801,  804,  813,  798,  797,  794,  808,  807,  805,  801,
+      788,  790,  787,    0,    0,  786,  787,  264,  790,    0,
+      277,  793,  784,  795,  798,  793,  809,    0,    0,  820,
+      771,  783,  775,  786,  784,  778,    0,    0,  778,    0,
+
+      783,  776,    0,  358,  363,    0,  798,  787,  766,  770,
+      769,    0,  768,    0,  763,  770,  767,  774,  771,  770,
+      760,  778,  759,  766,  750,  760,  753,  762,  761,  760,
+      759,  758,  262,  745,    0,    0,  757,  742,  755,    0,
+      735,  746,    0,  747,  271,  734,  742,  736,  741,  728,
+      736,    0,  758,  730,    0,  729,  738,  727,    0,  743,
+      734,    0,  718,  730,  726,  735,    0,  736,    0,  732,
+      732,  732,    0,  721,    0,  739,  726,  714,  728,  711,
+      723,  726,  713,  707,  719,    0,    0,  736,  721,  709,
+      716,  702,  710,  712,  711,    0,  696,  695,  699,  697,
+
+      698,  705,  271,  706,  689,  693,  687,    0,  717,  281,
+      695,    0,  698,    0,  695,    0,  696,  691,    0,    0,
+      731,  693,    0,  684,  685,  676,    0,  681,  682,  691,
+      686,  667,  676,  675,  668,  691,  356,  668,    0,    0,
+      330,  675,    0,  674,    0,  677,  672,  679,  665,  360,
+      702,    0,  675,  667,  655,  669,  666,  682,  666,    0,
+        0,  665,  656,  643,    0,  660,    0,  661,  361,  646,
+      655,  662,    0,  647,    0,  652,  351,  651,  671,  639,
+        0,  652,    0,  655,  642,  652,  648,  643,  646,    0,
+        0,  644,    0,  640,    0,  644,  641,  645,  634,  639,
+
+      626,  638,  622,  635,  348,  638,  625,    0,    0,  619,
+      617,    0,    0,  628,  641,  628,  629,  617,  628,    0,
+        0,  625,  627,  618,  612,  611,  604,  604,  621,    0,
+      603,  617,  618,    0,  600,  598,  603,  630,  625,  618,
+      607,  598,  605,  606,  584,  620,  603,  586,  594,  598,
+      588,  590,  597,  579,  581,  594,  585,  587,  367,  593,
+      580,  571,  586,  585,    0,  571,  581,  582,  569,  572,
+      567,    0,  580,    0,  573,  562,  579,    0,  555,  573,
+      560,  564,  555,  561,  554,  567,  563,  562,  592,  554,
+      550,  561,  558,   38,    0,   37,   93,  114,  126,  209,
+
+      252,  274,    0,    0,  294,  289,  332,    0,  352,  357,
+      370,  332,  344,    0,  332,    0,  377,  336,    0,    0,
+        0,  341,    0,  340,  350,  356,    0,    0,  361,  363,
+      367,  356,  359,  354,  369,  370,  358,  389,  359,  374,
+      364,    0,  375,    0,  378,  361,  377,  384,    0,  377,
+      380,  376,  390,  383,  388,  416,    0,  405,  382,  385,
+      389,    0,  375,  395,  396,  389,  389,  386,  403,  397,
+      402,    0,  390,  388,  417,  418,  429,    0,    0,  394,
+      419,    0,  406,  407,    0,  414,  401,  415,  409,  432,
+      415,  418,    0,    0,  416,  420,  439,  423,    0,    0,
+
+        0,    0,  407,  424,    0,  428,  414,  428,  414,    0,
+      420,  420,  413,    0,  419,    0,    0,  420,  421,  429,
+      422,  437,  430,  440,    0,  441,  447,  448,  449,  449,
+      467,  433,  439,    0,  449,  458,    0,  451,  446,  441,
+        0,  441,  459,    0,  456,    0,  442,  439,  469,  460,
+      453,  448,    0,  449,    0,    0,  455,  469,  454,  465,
+        0,  482,  477,  478,  479,  475,  488,  472,  468,    0,
+      477,  461,    0,  483,  477,  462,    0,  468,    0,  472,
+        0,  472,  482,  483,  486,  481,    0,    0,  494,  516,
+      517,  518,  488,  511,  489,    0,  485,  506,  493,    0,
+
+      500,  501,  498,  489,  495,  507,  487,  493,  494,  521,
+      522,  523,  512,  518,    0,  500,  515,  503,  505,  505,
+        0,  523,  512,    0,  537,    0,  520,  535,  536,  537,
+      543,  539,  516,  518,    0,    0,    0,  523,  519,  524,
+        0,  555,  556,  557,  541,  565,    0,  525,  526,    0,
+      563,  557,  558,  559,  538,  568,  534,    0,  539,  565,
+      566,  567,  552,  578,    0,  548,    0,    0,    0,    0,
+      572,  556,  582,  545,    0,    0, 1111,  609
     } ;
 
-static yyconst flex_int16_t yy_def[975] =
+static yyconst flex_int16_t yy_def[979] =
     {   0,
-      973,    1,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  973,
-      973,  973,  973,  973,  973,  973,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  973,  973,  973,  973,
-      973,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      973,  973,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
-      974,  974,    0,  973
+      977,    1,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      977,  977,  977,  977,  977,  977,  977,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  977,  977,
+      977,  977,  977,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  977,  977,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,    0,  977
     } ;
 
-static yyconst flex_int16_t yy_nxt[1181] =
+static yyconst flex_int16_t yy_nxt[1185] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
        14,   15,   16,   16,   16,   16,   16,   17,   18,   19,
@@ -776,130 +776,131 @@ static yyconst flex_int16_t yy_nxt[1181] =
        31,   31,   31,   31,   31,   31,   31,   31,   31,   44,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   45,   49,   53,   51,   54,   54,   54,   54,
-       54,  206,  207,   55,   96,   50,   52,   56,   58,   72,
-       59,   59,   59,   59,   59,  763,   57,   65,   66,   67,
-
-       73,   97,  764,   75,   60,  113,   68,   76,   98,   74,
-       77,   78,   69,   70,   71,  168,   79,   80,   82,   81,
-      114,  146,   83,  169,  290,   85,  147,   86,   90,   60,
-       84,   87,  102,  291,   88,   99,   91,   89,   92,   93,
-      100,   94,  115,  213,  106,  110,  116,   95,  107,  103,
-      101,  214,  108,  231,  117,  232,  104,  109,  118,  111,
-      165,  119,  120,  229,  121,  125,  166,  122,  112,  126,
-      123,  190,  139,  140,  129,  765,  130,  191,  127,  131,
-      132,  192,  230,  133,  128,  766,  134,  135,  141,  215,
-      136,  137,  241,  242,  216,  138,   54,   54,   54,   54,
-
-       54,  181,  182,  255,  256,  142,  183,  293,  260,  143,
-      152,  153,  153,  153,  153,  153,  219,  767,  144,  768,
-      294,  145,  220,  261,   58,  154,   59,   59,   59,   59,
-       59,  236,  474,  305,  237,  152,  306,  155,  155,  238,
-       60,  156,  156,  156,  156,  156,  276,  239,  173,  240,
-      154,  174,  175,  194,  176,  177,  474,  249,  178,  195,
-      250,  196,  277,  278,  357,   60,  251,  769,  267,  267,
-      358,  197,  268,  268,  268,  268,  268,  153,  153,  153,
-      153,  153,  270,  270,  309,  310,  271,  271,  271,  271,
-      271,  269,  156,  156,  156,  156,  156,  156,  156,  156,
-
-      156,  156,  367,  321,  421,  546,  378,  422,  547,  379,
-      457,  458,  322,  368,  369,  770,  269,  323,  370,  380,
-      324,  381,  394,  491,  494,  395,  537,  538,  594,  492,
-      396,  495,  595,  601,  397,  496,  398,  399,  602,  771,
-      400,  268,  268,  268,  268,  268,  268,  268,  268,  268,
-      268,  401,  401,  772,  773,  402,  402,  402,  402,  402,
-      271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
-      402,  402,  402,  402,  402,  402,  402,  402,  402,  402,
-      622,  626,  634,  649,  656,  627,  679,  774,  775,  726,
-      635,  623,  727,  776,  777,  778,  624,  779,  780,  781,
-
-      650,  782,  728,  680,  783,  784,  657,  729,  656,  785,
-      679,  786,  787,  788,  726,  789,  790,  727,  791,  792,
-      793,  794,  795,  796,  797,  798,  728,  799,  800,  801,
-      802,  729,  803,  804,  805,  806,  807,  808,  809,  810,
+       54,  207,  208,   55,   96,   50,   52,   56,   58,   72,
+       59,   59,   59,   59,   59,  764,   57,   65,   66,   67,
+
+       73,   97,  765,   75,   60,  114,   68,   76,   98,   74,
+       77,   78,   69,   70,   71,  169,   79,   80,   82,   81,
+      115,  147,   83,  170,  292,   85,  148,   86,   90,   60,
+       84,   87,  102,  293,   88,   99,   91,   89,   92,   93,
+      100,   94,  116,  214,  106,  110,  117,   95,  107,  103,
+      101,  215,  108,  766,  118,  111,  104,  109,  119,  112,
+      166,  120,  121,  231,  122,  126,  167,  123,  113,  127,
+      124,  191,  140,  141,  130,  767,  131,  192,  128,  132,
+      133,  193,  232,  134,  129,  768,  135,  136,  142,  216,
+      137,  138,  243,  244,  217,  139,   54,   54,   54,   54,
+
+       54,  182,  183,  257,  258,  143,  184,  295,  262,  144,
+      153,  154,  154,  154,  154,  154,  221,  233,  145,  234,
+      296,  146,  222,  263,   58,  155,   59,   59,   59,   59,
+       59,  238,  478,  307,  239,  153,  308,  156,  156,  240,
+       60,  157,  157,  157,  157,  157,  278,  241,  174,  242,
+      155,  175,  176,  195,  177,  178,  478,  251,  179,  196,
+      252,  197,  279,  280,  360,   60,  253,  769,  269,  269,
+      361,  198,  270,  270,  270,  270,  270,  154,  154,  154,
+      154,  154,  272,  272,  311,  312,  273,  273,  273,  273,
+      273,  271,  157,  157,  157,  157,  157,  157,  157,  157,
+
+      157,  157,  370,  323,  424,  550,  381,  425,  551,  382,
+      460,  461,  324,  371,  372,  770,  271,  325,  373,  383,
+      326,  384,  397,  495,  498,  398,  541,  542,  598,  496,
+      399,  499,  599,  605,  400,  500,  401,  402,  606,  771,
+      403,  270,  270,  270,  270,  270,  270,  270,  270,  270,
+      270,  404,  404,  772,  773,  405,  405,  405,  405,  405,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      405,  405,  405,  405,  405,  405,  405,  405,  405,  405,
+      626,  630,  638,  653,  660,  631,  683,  774,  775,  730,
+      639,  627,  731,  776,  777,  778,  628,  779,  780,  781,
+
+      654,  782,  732,  684,  783,  784,  661,  733,  660,  785,
+      683,  786,  787,  788,  730,  789,  790,  731,  791,  792,
+      793,  794,  795,  796,  797,  798,  732,  799,  800,  801,
+      802,  733,  803,  804,  805,  806,  807,  808,  809,  810,
       811,  812,  813,  814,  815,  816,  817,  818,  819,  820,
       821,  822,  823,  824,  825,  826,  827,  828,  829,  830,
       831,  832,  833,  834,  835,  836,  837,  838,  839,  840,
       841,  842,  843,  844,  845,  846,  847,  848,  849,  850,
-      851,  852,  853,  854,  855,  856,  857,  834,  858,  859,
-      860,  861,  862,  863,  864,  865,  866,  867,  868,  869,
+      851,  852,  853,  854,  855,  856,  857,  858,  859,  860,
+      861,  838,  862,  863,  864,  865,  866,  867,  868,  869,
 
       870,  871,  872,  873,  874,  875,  876,  877,  878,  879,
       880,  881,  882,  883,  884,  885,  886,  887,  888,  889,
-      890,  867,  891,  892,  893,  894,  895,  896,  897,  898,
-      876,  899,  900,  901,  902,  903,  904,  905,  906,  907,
+      890,  891,  892,  893,  894,  871,  895,  896,  897,  898,
+      899,  900,  901,  902,  880,  903,  904,  905,  906,  907,
       908,  909,  910,  911,  912,  913,  914,  915,  916,  917,
       918,  919,  920,  921,  922,  923,  924,  925,  926,  927,
-      928,  929,  930,  931,  932,  933,  934,  935,  936,  913,
-      937,  938,  939,  940,  941,  942,  943,  944,  945,  946,
+      928,  929,  930,  931,  932,  933,  934,  935,  936,  937,
+      938,  939,  940,  917,  941,  942,  943,  944,  945,  946,
       947,  948,  949,  950,  951,  952,  953,  954,  955,  956,
       957,  958,  959,  960,  961,  962,  963,  964,  965,  966,
 
-      967,  968,  969,  970,  971,  972,   64,  762,  761,  760,
-      759,  758,  757,  756,  755,  754,  753,  752,  751,  750,
-      749,  748,  747,  746,  745,  744,  743,  742,  741,  740,
-      739,  738,  737,  736,  735,  734,  733,  732,  731,  730,
-      725,  724,  723,  722,  721,  720,  719,  718,  717,  716,
-      715,  714,  713,  712,  711,  710,  709,  708,  707,  706,
-      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
-      695,  694,  693,  692,  691,  690,  689,  688,  687,  686,
-      685,  684,  683,  682,  681,  678,  677,  676,  675,  674,
-      673,  672,  671,  670,  669,  668,  667,  666,  665,  664,
-
-      663,  662,  661,  660,  659,  658,  655,  654,  653,  652,
-      651,  648,  647,  646,  645,  644,  643,  642,  641,  640,
-      639,  638,  637,  636,  633,  632,  631,  630,  629,  628,
-      625,  621,  620,  619,  618,  617,  616,  615,  614,  613,
-      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
-      600,  599,  598,  597,  596,  593,  592,  591,  590,  589,
-      588,  587,  586,  585,  584,  583,  582,  581,  580,  579,
-      578,  577,  576,  575,  574,  573,  572,  571,  570,  569,
-      568,  567,  566,  565,  564,  563,  562,  561,  560,  559,
-      558,  557,  556,  555,  554,  553,  552,  551,  550,  549,
-
-      548,  545,  544,  543,  542,  541,  540,  539,  536,  535,
-      534,  533,  532,  531,  530,  529,  528,  527,  526,  525,
-      524,  523,  522,  521,  520,  519,  518,  517,  516,  515,
-      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
-      504,  503,  502,  501,  500,  499,  498,  497,  493,  490,
-      489,  488,  487,  486,  485,  484,  483,  482,  481,  480,
-      479,  478,  477,  476,  475,  473,  472,  471,  470,  469,
-      468,  467,  466,  465,  464,  463,  462,  461,  460,  459,
-      456,  455,  454,  453,  452,  451,  450,  449,  448,  447,
-      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
-
-      436,  435,  434,  433,  432,  431,  430,  429,  428,  427,
-      426,  425,  424,  423,  420,  419,  418,  417,  416,  415,
-      414,  413,  412,  411,  410,  409,  408,  407,  406,  405,
-      404,  403,  393,  392,  391,  390,  389,  388,  387,  386,
-      385,  384,  383,  382,  377,  376,  375,  374,  373,  372,
-      371,  366,  365,  364,  363,  362,  361,  360,  359,  356,
-      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
-      345,  344,  343,  342,  341,  340,  339,  338,  337,  336,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
-      325,  320,  319,  318,  317,  316,  315,  314,  313,  312,
-
-      311,  308,  307,  304,  303,  302,  301,  300,  299,  298,
-      297,  296,  295,  292,  289,  288,  287,  286,  285,  284,
-      283,  282,  281,  280,  279,  275,  274,  273,  272,  266,
-      265,  264,  263,  262,  259,  258,  257,  254,  253,  252,
-      248,  247,  246,  245,  244,  243,  235,  234,  233,  228,
-      227,  226,  225,  224,  223,  222,  221,  218,  217,  212,
-      211,  210,  209,  208,  205,  204,  203,  202,  201,  200,
-      199,  198,  193,  189,  188,  187,  186,  185,  184,  180,
-      179,  172,  171,  170,  167,  164,  163,  162,  161,  160,
-      159,  158,  157,  151,  150,  149,  148,  124,  105,   63,
-
-       62,   61,   48,   47,   46,  973,    3,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973
+      967,  968,  969,  970,  971,  972,  973,  974,  975,  976,
+       64,  763,  762,  761,  760,  759,  758,  757,  756,  755,
+      754,  753,  752,  751,  750,  749,  748,  747,  746,  745,
+      744,  743,  742,  741,  740,  739,  738,  737,  736,  735,
+      734,  729,  728,  727,  726,  725,  724,  723,  722,  721,
+      720,  719,  718,  717,  716,  715,  714,  713,  712,  711,
+      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
+      700,  699,  698,  697,  696,  695,  694,  693,  692,  691,
+      690,  689,  688,  687,  686,  685,  682,  681,  680,  679,
+      678,  677,  676,  675,  674,  673,  672,  671,  670,  669,
+
+      668,  667,  666,  665,  664,  663,  662,  659,  658,  657,
+      656,  655,  652,  651,  650,  649,  648,  647,  646,  645,
+      644,  643,  642,  641,  640,  637,  636,  635,  634,  633,
+      632,  629,  625,  624,  623,  622,  621,  620,  619,  618,
+      617,  616,  615,  614,  613,  612,  611,  610,  609,  608,
+      607,  604,  603,  602,  601,  600,  597,  596,  595,  594,
+      593,  592,  591,  590,  589,  588,  587,  586,  585,  584,
+      583,  582,  581,  580,  579,  578,  577,  576,  575,  574,
+      573,  572,  571,  570,  569,  568,  567,  566,  565,  564,
+      563,  562,  561,  560,  559,  558,  557,  556,  555,  554,
+
+      553,  552,  549,  548,  547,  546,  545,  544,  543,  540,
+      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
+      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
+      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
+      509,  508,  507,  506,  505,  504,  503,  502,  501,  497,
+      494,  493,  492,  491,  490,  489,  488,  487,  486,  485,
+      484,  483,  482,  481,  480,  479,  477,  476,  475,  474,
+      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
+      463,  462,  459,  458,  457,  456,  455,  454,  453,  452,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
+
+      441,  440,  439,  438,  437,  436,  435,  434,  433,  432,
+      431,  430,  429,  428,  427,  426,  423,  422,  421,  420,
+      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
+      409,  408,  407,  406,  396,  395,  394,  393,  392,  391,
+      390,  389,  388,  387,  386,  385,  380,  379,  378,  377,
+      376,  375,  374,  369,  368,  367,  366,  365,  364,  363,
+      362,  359,  358,  357,  356,  355,  354,  353,  352,  351,
+      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
+      330,  329,  328,  327,  322,  321,  320,  319,  318,  317,
+
+      316,  315,  314,  313,  310,  309,  306,  305,  304,  303,
+      302,  301,  300,  299,  298,  297,  294,  291,  290,  289,
+      288,  287,  286,  285,  284,  283,  282,  281,  277,  276,
+      275,  274,  268,  267,  266,  265,  264,  261,  260,  259,
+      256,  255,  254,  250,  249,  248,  247,  246,  245,  237,
+      236,  235,  230,  229,  228,  227,  226,  225,  224,  223,
+      220,  219,  218,  213,  212,  211,  210,  209,  206,  205,
+      204,  203,  202,  201,  200,  199,  194,  190,  189,  188,
+      187,  186,  185,  181,  180,  173,  172,  171,  168,  165,
+      164,  163,  162,  161,  160,  159,  158,  152,  151,  150,
+
+      149,  125,  105,   63,   62,   61,   48,   47,   46,  977,
+        3,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977
     } ;
 
-static yyconst flex_int16_t yy_chk[1181] =
+static yyconst flex_int16_t yy_chk[1185] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -912,124 +913,125 @@ static yyconst flex_int16_t yy_chk[1181] =
        14,  100,  100,   15,   28,   12,   13,   15,   16,   23,
        16,   16,   16,   16,   16,  694,   15,   22,   22,   22,
 
-       23,   28,  695,   24,   16,   35,   22,   24,   28,   23,
+       23,   28,  696,   24,   16,   35,   22,   24,   28,   23,
        24,   24,   22,   22,   22,   75,   24,   24,   25,   24,
-       35,   42,   25,   75,  173,   26,   42,   26,   27,   16,
-       25,   26,   30,  173,   26,   29,   27,   26,   27,   27,
+       35,   42,   25,   75,  174,   26,   42,   26,   27,   16,
+       25,   26,   30,  174,   26,   29,   27,   26,   27,   27,
        29,   27,   36,  107,   33,   34,   36,   27,   33,   30,
-       29,  107,   33,  122,   37,  122,   30,   33,   37,   34,
-       73,   37,   37,  121,   37,   39,   73,   37,   34,   39,
-       37,   89,   41,   41,   40,  696,   40,   89,   39,   40,
-       40,   89,  121,   40,   39,  697,   40,   40,   41,  108,
-       40,   40,  127,  127,  108,   40,   54,   54,   54,   54,
-
-       54,   82,   82,  138,  138,   41,   82,  175,  144,   41,
-       54,   58,   58,   58,   58,   58,  111,  698,   41,  701,
-      175,   41,  111,  144,   59,   58,   59,   59,   59,   59,
-       59,  126,  355,  187,  126,   54,  187,   60,   60,  126,
-       59,   60,   60,   60,   60,   60,  161,  126,   79,  126,
-       58,   79,   79,   91,   79,   79,  355,  134,   79,   91,
-      134,   91,  161,  161,  236,   59,  134,  702,  152,  152,
-      236,   91,  152,  152,  152,  152,  152,  153,  153,  153,
-      153,  153,  154,  154,  190,  190,  154,  154,  154,  154,
-      154,  153,  155,  155,  155,  155,  155,  156,  156,  156,
-
-      156,  156,  245,  203,  294,  442,  253,  294,  442,  253,
-      339,  339,  203,  245,  245,  703,  153,  203,  245,  253,
-      203,  253,  266,  375,  378,  266,  430,  430,  499,  375,
-      266,  378,  499,  506,  266,  378,  266,  266,  506,  705,
-      266,  267,  267,  267,  267,  267,  268,  268,  268,  268,
-      268,  269,  269,  706,  707,  269,  269,  269,  269,  269,
-      270,  270,  270,  270,  270,  271,  271,  271,  271,  271,
-      401,  401,  401,  401,  401,  402,  402,  402,  402,  402,
-      533,  537,  546,  565,  573,  537,  601,  708,  709,  655,
-      546,  533,  655,  711,  713,  714,  533,  718,  720,  721,
-
-      565,  722,  655,  601,  725,  726,  573,  655,  573,  727,
-      601,  728,  729,  730,  655,  731,  732,  655,  733,  734,
-      735,  736,  737,  739,  741,  742,  655,  743,  744,  746,
-      747,  655,  748,  749,  750,  751,  752,  754,  755,  756,
-      757,  759,  760,  761,  762,  763,  764,  765,  766,  767,
-      769,  770,  771,  772,  773,  776,  777,  779,  780,  782,
-      783,  784,  785,  786,  787,  788,  791,  792,  793,  794,
-      799,  800,  802,  803,  804,  805,  807,  808,  809,  811,
-      814,  815,  816,  817,  818,  819,  820,  786,  822,  823,
-      824,  825,  826,  827,  828,  829,  831,  832,  834,  835,
-
-      836,  838,  839,  841,  843,  844,  845,  846,  847,  848,
-      850,  853,  854,  855,  856,  858,  859,  860,  861,  862,
-      863,  832,  864,  865,  867,  868,  870,  871,  872,  874,
-      845,  876,  878,  879,  880,  881,  882,  885,  886,  887,
-      888,  889,  890,  891,  893,  894,  895,  897,  898,  899,
-      900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
-      910,  912,  913,  914,  915,  916,  918,  919,  921,  894,
-      923,  924,  925,  926,  927,  928,  929,  930,  934,  935,
-      936,  938,  939,  940,  941,  942,  944,  945,  947,  948,
-      949,  950,  951,  952,  953,  955,  956,  957,  958,  959,
-
-      960,  962,  967,  968,  969,  970,  974,  693,  692,  690,
-      689,  688,  687,  686,  685,  684,  683,  682,  681,  680,
-      679,  678,  677,  676,  675,  673,  672,  671,  669,  667,
-      666,  665,  664,  663,  662,  660,  659,  658,  657,  656,
-      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
-      644,  643,  642,  641,  640,  639,  638,  637,  636,  635,
-      634,  633,  632,  631,  629,  628,  627,  625,  624,  623,
-      622,  621,  620,  619,  618,  615,  614,  613,  612,  611,
-      610,  607,  606,  603,  602,  600,  599,  598,  597,  596,
-      595,  594,  593,  592,  590,  588,  585,  584,  583,  582,
-
-      581,  580,  578,  576,  575,  574,  572,  570,  568,  567,
-      566,  564,  562,  560,  559,  558,  555,  554,  553,  552,
-      551,  550,  549,  547,  545,  544,  543,  542,  540,  538,
-      534,  532,  531,  530,  529,  528,  527,  526,  525,  524,
-      522,  521,  520,  518,  517,  514,  513,  511,  509,  507,
-      505,  503,  502,  501,  500,  498,  497,  496,  495,  494,
-      493,  491,  490,  489,  488,  487,  486,  485,  484,  481,
-      480,  479,  478,  477,  476,  475,  474,  473,  472,  470,
-      468,  467,  466,  464,  462,  461,  460,  459,  458,  457,
-      455,  454,  453,  451,  450,  448,  447,  446,  445,  444,
-
-      443,  441,  439,  438,  436,  435,  434,  431,  429,  428,
-      427,  426,  425,  424,  423,  422,  421,  420,  419,  418,
-      417,  416,  415,  414,  413,  412,  410,  408,  407,  406,
-      405,  404,  399,  398,  396,  393,  392,  391,  390,  389,
-      388,  387,  384,  383,  382,  381,  380,  379,  376,  374,
-      373,  370,  369,  368,  367,  366,  365,  364,  363,  362,
-      361,  360,  359,  358,  357,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
-      338,  335,  334,  333,  332,  331,  330,  329,  328,  325,
-      324,  323,  322,  321,  320,  319,  317,  316,  314,  313,
-
-      311,  309,  308,  307,  306,  305,  304,  302,  301,  300,
-      299,  298,  296,  295,  293,  292,  291,  290,  289,  288,
-      286,  284,  283,  282,  281,  280,  278,  277,  276,  275,
-      274,  272,  265,  264,  263,  262,  261,  260,  259,  258,
-      257,  256,  255,  254,  252,  251,  250,  249,  248,  247,
-      246,  244,  243,  242,  241,  240,  239,  238,  237,  235,
-      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
-      224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
-      214,  213,  212,  211,  210,  209,  208,  207,  206,  205,
-      204,  202,  201,  199,  198,  197,  196,  195,  194,  193,
-
-      192,  189,  188,  186,  185,  184,  183,  182,  181,  180,
-      178,  177,  176,  174,  172,  171,  170,  169,  168,  167,
-      166,  165,  164,  163,  162,  160,  159,  158,  157,  149,
-      148,  147,  146,  145,  143,  142,  141,  137,  136,  135,
-      133,  132,  131,  130,  129,  128,  125,  124,  123,  119,
-      118,  117,  116,  115,  114,  113,  112,  110,  109,  106,
-      105,  104,  102,  101,   99,   98,   97,   96,   95,   94,
-       93,   92,   90,   88,   87,   86,   85,   84,   83,   81,
-       80,   78,   77,   76,   74,   72,   71,   70,   69,   68,
-       67,   66,   65,   53,   45,   44,   43,   38,   32,   21,
-
-       20,   19,   11,    9,    7,    3,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973
+       29,  107,   33,  697,   37,   34,   30,   33,   37,   34,
+       73,   37,   37,  122,   37,   39,   73,   37,   34,   39,
+       37,   89,   41,   41,   40,  698,   40,   89,   39,   40,
+       40,   89,  122,   40,   39,  699,   40,   40,   41,  108,
+       40,   40,  128,  128,  108,   40,   54,   54,   54,   54,
+
+       54,   82,   82,  139,  139,   41,   82,  176,  145,   41,
+       54,   58,   58,   58,   58,   58,  112,  123,   41,  123,
+      176,   41,  112,  145,   59,   58,   59,   59,   59,   59,
+       59,  127,  358,  188,  127,   54,  188,   60,   60,  127,
+       59,   60,   60,   60,   60,   60,  162,  127,   79,  127,
+       58,   79,   79,   91,   79,   79,  358,  135,   79,   91,
+      135,   91,  162,  162,  238,   59,  135,  700,  153,  153,
+      238,   91,  153,  153,  153,  153,  153,  154,  154,  154,
+      154,  154,  155,  155,  191,  191,  155,  155,  155,  155,
+      155,  154,  156,  156,  156,  156,  156,  157,  157,  157,
+
+      157,  157,  247,  204,  296,  445,  255,  296,  445,  255,
+      341,  341,  204,  247,  247,  701,  154,  204,  247,  255,
+      204,  255,  268,  378,  381,  268,  433,  433,  503,  378,
+      268,  381,  503,  510,  268,  381,  268,  268,  510,  702,
+      268,  269,  269,  269,  269,  269,  270,  270,  270,  270,
+      270,  271,  271,  705,  706,  271,  271,  271,  271,  271,
+      272,  272,  272,  272,  272,  273,  273,  273,  273,  273,
+      404,  404,  404,  404,  404,  405,  405,  405,  405,  405,
+      537,  541,  550,  569,  577,  541,  605,  707,  709,  659,
+      550,  537,  659,  710,  711,  712,  537,  713,  715,  717,
+
+      569,  718,  659,  605,  722,  724,  577,  659,  577,  725,
+      605,  726,  729,  730,  659,  731,  732,  659,  733,  734,
+      735,  736,  737,  738,  739,  740,  659,  741,  743,  745,
+      746,  659,  747,  748,  750,  751,  752,  753,  754,  755,
+      756,  758,  759,  760,  761,  763,  764,  765,  766,  767,
+      768,  769,  770,  771,  773,  774,  775,  776,  777,  780,
+      781,  783,  784,  786,  787,  788,  789,  790,  791,  792,
+      795,  796,  797,  798,  803,  804,  806,  807,  808,  809,
+      811,  812,  813,  815,  818,  819,  820,  821,  822,  823,
+      824,  790,  826,  827,  828,  829,  830,  831,  832,  833,
+
+      835,  836,  838,  839,  840,  842,  843,  845,  847,  848,
+      849,  850,  851,  852,  854,  857,  858,  859,  860,  862,
+      863,  864,  865,  866,  867,  836,  868,  869,  871,  872,
+      874,  875,  876,  878,  849,  880,  882,  883,  884,  885,
+      886,  889,  890,  891,  892,  893,  894,  895,  897,  898,
+      899,  901,  902,  903,  904,  905,  906,  907,  908,  909,
+      910,  911,  912,  913,  914,  916,  917,  918,  919,  920,
+      922,  923,  925,  898,  927,  928,  929,  930,  931,  932,
+      933,  934,  938,  939,  940,  942,  943,  944,  945,  946,
+      948,  949,  951,  952,  953,  954,  955,  956,  957,  959,
+
+      960,  961,  962,  963,  964,  966,  971,  972,  973,  974,
+      978,  693,  692,  691,  690,  689,  688,  687,  686,  685,
+      684,  683,  682,  681,  680,  679,  677,  676,  675,  673,
+      671,  670,  669,  668,  667,  666,  664,  663,  662,  661,
+      660,  658,  657,  656,  655,  654,  653,  652,  651,  650,
+      649,  648,  647,  646,  645,  644,  643,  642,  641,  640,
+      639,  638,  637,  636,  635,  633,  632,  631,  629,  628,
+      627,  626,  625,  624,  623,  622,  619,  618,  617,  616,
+      615,  614,  611,  610,  607,  606,  604,  603,  602,  601,
+      600,  599,  598,  597,  596,  594,  592,  589,  588,  587,
+
+      586,  585,  584,  582,  580,  579,  578,  576,  574,  572,
+      571,  570,  568,  566,  564,  563,  562,  559,  558,  557,
+      556,  555,  554,  553,  551,  549,  548,  547,  546,  544,
+      542,  538,  536,  535,  534,  533,  532,  531,  530,  529,
+      528,  526,  525,  524,  522,  521,  518,  517,  515,  513,
+      511,  509,  507,  506,  505,  504,  502,  501,  500,  499,
+      498,  497,  495,  494,  493,  492,  491,  490,  489,  488,
+      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
+      474,  472,  471,  470,  468,  466,  465,  464,  463,  461,
+      460,  458,  457,  456,  454,  453,  451,  450,  449,  448,
+
+      447,  446,  444,  442,  441,  439,  438,  437,  434,  432,
+      431,  430,  429,  428,  427,  426,  425,  424,  423,  422,
+      421,  420,  419,  418,  417,  416,  415,  413,  411,  410,
+      409,  408,  407,  402,  401,  399,  396,  395,  394,  393,
+      392,  391,  390,  387,  386,  385,  384,  383,  382,  379,
+      377,  376,  373,  372,  371,  370,  369,  368,  367,  366,
+      365,  364,  363,  362,  361,  360,  357,  356,  355,  354,
+      353,  352,  351,  350,  349,  348,  347,  346,  345,  344,
+      343,  342,  340,  337,  336,  335,  334,  333,  332,  331,
+      330,  327,  326,  325,  324,  323,  322,  321,  319,  318,
+
+      316,  315,  313,  311,  310,  309,  308,  307,  306,  304,
+      303,  302,  301,  300,  298,  297,  295,  294,  293,  292,
+      291,  290,  288,  286,  285,  284,  283,  282,  280,  279,
+      278,  277,  276,  274,  267,  266,  265,  264,  263,  262,
+      261,  260,  259,  258,  257,  256,  254,  253,  252,  251,
+      250,  249,  248,  246,  245,  244,  243,  242,  241,  240,
+      239,  237,  236,  235,  234,  233,  232,  231,  230,  229,
+      228,  227,  226,  225,  224,  223,  222,  221,  220,  219,
+      218,  217,  216,  215,  214,  213,  212,  211,  210,  209,
+      208,  207,  206,  205,  203,  202,  200,  199,  198,  197,
+
+      196,  195,  194,  193,  190,  189,  187,  186,  185,  184,
+      183,  182,  181,  179,  178,  177,  175,  173,  172,  171,
+      170,  169,  168,  167,  166,  165,  164,  163,  161,  160,
+      159,  158,  150,  149,  148,  147,  146,  144,  143,  142,
+      138,  137,  136,  134,  133,  132,  131,  130,  129,  126,
+      125,  124,  120,  119,  118,  117,  116,  115,  114,  113,
+      111,  110,  109,  106,  105,  104,  102,  101,   99,   98,
+       97,   96,   95,   94,   93,   92,   90,   88,   87,   86,
+       85,   84,   83,   81,   80,   78,   77,   76,   74,   72,
+       71,   70,   69,   68,   67,   66,   65,   53,   45,   44,
+
+       43,   38,   32,   21,   20,   19,   11,    9,    7,    3,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1109,7 +1111,7 @@ void   skipline(void);
 #define YY_NO_UNISTD_H
 #endif
 
-#line 1113 "Gmsh.yy.cpp"
+#line 1115 "Gmsh.yy.cpp"
 
 #define INITIAL 0
 
@@ -1294,7 +1296,7 @@ YY_DECL
 #line 72 "Gmsh.l"
 
 
-#line 1298 "Gmsh.yy.cpp"
+#line 1300 "Gmsh.yy.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -1347,13 +1349,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 974 )
+				if ( yy_current_state >= 978 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 1107 );
+		while ( yy_base[yy_current_state] != 1111 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -1841,7 +1843,7 @@ return tFor;
 case 93:
 YY_RULE_SETUP
 #line 172 "Gmsh.l"
-return tFunction;
+return tMacro;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
@@ -1966,390 +1968,395 @@ return tLevelset;
 case 118:
 YY_RULE_SETUP
 #line 203 "Gmsh.l"
-return tMeshAlgorithm;
+return tMacro;
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 204 "Gmsh.l"
-return tModulo;
+return tMeshAlgorithm;
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 205 "Gmsh.l"
-return tMPI_Rank;
+return tModulo;
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 206 "Gmsh.l"
-return tMPI_Size;
+return tMPI_Rank;
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 207 "Gmsh.l"
-return tMemory;
+return tMPI_Size;
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 209 "Gmsh.l"
-return tNewModel;
+#line 208 "Gmsh.l"
+return tMemory;
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 210 "Gmsh.l"
-return tNurbs;
+return tNewModel;
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 212 "Gmsh.l"
-return tOnelabAction;
+#line 211 "Gmsh.l"
+return tNurbs;
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 213 "Gmsh.l"
-return tOnelabRun;
+return tOnelabAction;
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 214 "Gmsh.l"
-return tNurbsOrder;
+return tOnelabRun;
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 216 "Gmsh.l"
-return tPeriodic;
+#line 215 "Gmsh.l"
+return tNurbsOrder;
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 217 "Gmsh.l"
-return tPhysical;
+return tPeriodic;
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 218 "Gmsh.l"
-return tPi;
+return tPhysical;
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 219 "Gmsh.l"
-return tPlane;
+return tPi;
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 220 "Gmsh.l"
-return tPoint;
+return tPlane;
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 221 "Gmsh.l"
-return tParametric;
+return tPoint;
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 222 "Gmsh.l"
-return tPolarSphere;
+return tParametric;
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 223 "Gmsh.l"
-return tPrintf;
+return tPolarSphere;
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 224 "Gmsh.l"
-return tPlugin;
+return tPrintf;
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 226 "Gmsh.l"
-return tQuadTriAddVerts;
+#line 225 "Gmsh.l"
+return tPlugin;
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 227 "Gmsh.l"
-return tQuadTriNoNewVerts;
+return tQuadTriAddVerts;
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 229 "Gmsh.l"
-return tQuadTriDbl;
+#line 228 "Gmsh.l"
+return tQuadTriNoNewVerts;
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
 #line 230 "Gmsh.l"
-return tQuadTriSngl;
+return tQuadTriDbl;
 	YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 232 "Gmsh.l"
-return tRecombine;
+#line 231 "Gmsh.l"
+return tQuadTriSngl;
 	YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 233 "Gmsh.l"
-return tRecombLaterals;
+return tRecombine;
 	YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 234 "Gmsh.l"
-return tRecursive;
+return tRecombLaterals;
 	YY_BREAK
 case 144:
 YY_RULE_SETUP
 #line 235 "Gmsh.l"
-return tRotate;
+return tRecursive;
 	YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 236 "Gmsh.l"
-return tRound;
+return tRotate;
 	YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 237 "Gmsh.l"
-return tRuled;
+return tRound;
 	YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 238 "Gmsh.l"
-return tRand;
+return tRuled;
 	YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 239 "Gmsh.l"
-return tRefineMesh;
+return tRand;
 	YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 240 "Gmsh.l"
-return tRelocateMesh;
+return tRefineMesh;
 	YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 241 "Gmsh.l"
-return tReturn;
+return tRelocateMesh;
 	YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 242 "Gmsh.l"
-return tReverse;
+return tReturn;
 	YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 244 "Gmsh.l"
-return tScaleLast;
+#line 243 "Gmsh.l"
+return tReverse;
 	YY_BREAK
 case 153:
 YY_RULE_SETUP
 #line 245 "Gmsh.l"
-return tSmoother;
+return tScaleLast;
 	YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 246 "Gmsh.l"
-return tSetOrder;
+return tSmoother;
 	YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 247 "Gmsh.l"
-return tSetNumber;
+return tSetOrder;
 	YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 248 "Gmsh.l"
-return tSetString;
+return tSetNumber;
 	YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 249 "Gmsh.l"
-return tSqrt;
+return tSetString;
 	YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 250 "Gmsh.l"
-return tSin;
+return tSqrt;
 	YY_BREAK
 case 159:
 YY_RULE_SETUP
 #line 251 "Gmsh.l"
-return tSinh;
+return tSin;
 	YY_BREAK
 case 160:
 YY_RULE_SETUP
 #line 252 "Gmsh.l"
-return tSphere;
+return tSinh;
 	YY_BREAK
 case 161:
 YY_RULE_SETUP
 #line 253 "Gmsh.l"
-return tSpline;
+return tSphere;
 	YY_BREAK
 case 162:
 YY_RULE_SETUP
 #line 254 "Gmsh.l"
-return tSplit;
+return tSpline;
 	YY_BREAK
 case 163:
 YY_RULE_SETUP
 #line 255 "Gmsh.l"
-return tSurface;
+return tSplit;
 	YY_BREAK
 case 164:
 YY_RULE_SETUP
 #line 256 "Gmsh.l"
-return tStr;
+return tSurface;
 	YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 257 "Gmsh.l"
-return tSprintf;
+return tStr;
 	YY_BREAK
 case 166:
 YY_RULE_SETUP
 #line 258 "Gmsh.l"
-return tStrCat;
+return tSprintf;
 	YY_BREAK
 case 167:
 YY_RULE_SETUP
 #line 259 "Gmsh.l"
-return tStrReplace;
+return tStrCat;
 	YY_BREAK
 case 168:
 YY_RULE_SETUP
 #line 260 "Gmsh.l"
-return tStrPrefix;
+return tStrReplace;
 	YY_BREAK
 case 169:
 YY_RULE_SETUP
 #line 261 "Gmsh.l"
-return tStrRelative;
+return tStrPrefix;
 	YY_BREAK
 case 170:
 YY_RULE_SETUP
 #line 262 "Gmsh.l"
-return tStrFind;
+return tStrRelative;
 	YY_BREAK
 case 171:
 YY_RULE_SETUP
 #line 263 "Gmsh.l"
-return tStrCmp;
+return tStrFind;
 	YY_BREAK
 case 172:
 YY_RULE_SETUP
 #line 264 "Gmsh.l"
-return tStrChoice;
+return tStrCmp;
 	YY_BREAK
 case 173:
 YY_RULE_SETUP
 #line 265 "Gmsh.l"
-return tShow;
+return tStrChoice;
 	YY_BREAK
 case 174:
 YY_RULE_SETUP
 #line 266 "Gmsh.l"
-return tSymmetry;
+return tShow;
 	YY_BREAK
 case 175:
 YY_RULE_SETUP
 #line 267 "Gmsh.l"
-return tSyncModel;
+return tSymmetry;
 	YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 269 "Gmsh.l"
-return tText2D;
+#line 268 "Gmsh.l"
+return tSyncModel;
 	YY_BREAK
 case 177:
 YY_RULE_SETUP
 #line 270 "Gmsh.l"
-return tText3D;
+return tText2D;
 	YY_BREAK
 case 178:
 YY_RULE_SETUP
 #line 271 "Gmsh.l"
-return tTextAttributes;
+return tText3D;
 	YY_BREAK
 case 179:
 YY_RULE_SETUP
 #line 272 "Gmsh.l"
-return tTime;
+return tTextAttributes;
 	YY_BREAK
 case 180:
 YY_RULE_SETUP
 #line 273 "Gmsh.l"
-return tTransfinite;
+return tTime;
 	YY_BREAK
 case 181:
 YY_RULE_SETUP
 #line 274 "Gmsh.l"
-return tTransfQuadTri;
+return tTransfinite;
 	YY_BREAK
 case 182:
 YY_RULE_SETUP
 #line 275 "Gmsh.l"
-return tTranslate;
+return tTransfQuadTri;
 	YY_BREAK
 case 183:
 YY_RULE_SETUP
 #line 276 "Gmsh.l"
-return tTanh;
+return tTranslate;
 	YY_BREAK
 case 184:
 YY_RULE_SETUP
 #line 277 "Gmsh.l"
-return tTan;
+return tTanh;
 	YY_BREAK
 case 185:
 YY_RULE_SETUP
 #line 278 "Gmsh.l"
-return tToday;
+return tTan;
 	YY_BREAK
 case 186:
 YY_RULE_SETUP
 #line 279 "Gmsh.l"
-return tTotalMemory;
+return tToday;
 	YY_BREAK
 case 187:
 YY_RULE_SETUP
-#line 281 "Gmsh.l"
-return tUndefineConstant;
+#line 280 "Gmsh.l"
+return tTotalMemory;
 	YY_BREAK
 case 188:
 YY_RULE_SETUP
 #line 282 "Gmsh.l"
-return tUsing;
+return tUndefineConstant;
 	YY_BREAK
 case 189:
 YY_RULE_SETUP
-#line 284 "Gmsh.l"
-return tVolume;
+#line 283 "Gmsh.l"
+return tUsing;
 	YY_BREAK
 case 190:
-#line 287 "Gmsh.l"
+YY_RULE_SETUP
+#line 285 "Gmsh.l"
+return tVolume;
+	YY_BREAK
 case 191:
 #line 288 "Gmsh.l"
 case 192:
 #line 289 "Gmsh.l"
 case 193:
+#line 290 "Gmsh.l"
+case 194:
 YY_RULE_SETUP
-#line 289 "Gmsh.l"
+#line 290 "Gmsh.l"
 { gmsh_yylval.d = atof((char *)gmsh_yytext); return tDOUBLE; }
 	YY_BREAK
-case 194:
+case 195:
 YY_RULE_SETUP
-#line 291 "Gmsh.l"
+#line 292 "Gmsh.l"
 { gmsh_yylval.c = strsave((char*)gmsh_yytext); return tSTRING; }
 	YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 293 "Gmsh.l"
+#line 294 "Gmsh.l"
 return gmsh_yytext[0];
 	YY_BREAK
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 295 "Gmsh.l"
+#line 296 "Gmsh.l"
 ECHO;
 	YY_BREAK
-#line 2353 "Gmsh.yy.cpp"
+#line 2360 "Gmsh.yy.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2641,7 +2648,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 974 )
+			if ( yy_current_state >= 978 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2669,11 +2676,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 974 )
+		if ( yy_current_state >= 978 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 973);
+	yy_is_jam = (yy_current_state == 977);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3343,7 +3350,7 @@ void gmsh_yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 295 "Gmsh.l"
+#line 296 "Gmsh.l"
 
 
 
diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi
index 40b5f462653127667eb2be70cddd25bc172a24aa..49c1e48349ff321e6b20389d3396cd19c339f8be 100644
--- a/doc/texinfo/gmsh.texi
+++ b/doc/texinfo/gmsh.texi
@@ -1430,7 +1430,8 @@ statement.
 @item Function @var{string}
 Begins the declaration of a user-defined function named @var{string}. The
 body of the function starts on the line after `@code{Function
-@var{string}}', and can contain any Gmsh command.
+@var{string}}', and can contain any Gmsh command. @code{Macro} is a
+synonym for @code{Function}.
 
 @item Return
 Ends the body of the current user-defined function. Function declarations