diff --git a/src/OpenFOAM/expressions/exprDriver/exprDriver.C b/src/OpenFOAM/expressions/exprDriver/exprDriver.C
index 6c37a88faafe17692814dde725b604778c8157b1..0af06ea570fc3de0ff237e512b58d7c985668004 100644
--- a/src/OpenFOAM/expressions/exprDriver/exprDriver.C
+++ b/src/OpenFOAM/expressions/exprDriver/exprDriver.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2010-2018 Bernhard Gschaider <bgschaid@hfd-research.com>
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -92,6 +92,7 @@ Foam::expressions::exprDriver::exprDriver
     result_(),
     variableStrings_(),
     variables_(),
+    arg1Value_(0),
     stashedTokenId_(0),
 
     // Controls
@@ -120,6 +121,7 @@ Foam::expressions::exprDriver::exprDriver
     result_(rhs.result_),
     variableStrings_(rhs.variableStrings_),
     variables_(rhs.variables_),
+    arg1Value_(rhs.arg1Value_),
     stashedTokenId_(0),
 
     debugScanner_(rhs.debugScanner_),
@@ -194,6 +196,18 @@ void Foam::expressions::exprDriver::clearVariables()
 }
 
 
+void Foam::expressions::exprDriver::setArgument(scalar val)
+{
+    arg1Value_ = val;
+}
+
+
+Foam::scalar Foam::expressions::exprDriver::argValue() const
+{
+    return arg1Value_;
+}
+
+
 void Foam::expressions::exprDriver::evaluateVariable
 (
     const word& varName,
diff --git a/src/OpenFOAM/expressions/exprDriver/exprDriver.H b/src/OpenFOAM/expressions/exprDriver/exprDriver.H
index 723d45a53d18a51bd33247b4e35a924391829414..d94a0a82cd6b7b371c507be03eb105e3bb828d13 100644
--- a/src/OpenFOAM/expressions/exprDriver/exprDriver.H
+++ b/src/OpenFOAM/expressions/exprDriver/exprDriver.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Original code Copyright (C) 2010-2018 Bernhard Gschaider
+    Copyright (C) 2010-2018 Bernhard Gschaider
     Copyright (C) 2019 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
@@ -79,7 +79,7 @@ class exprDriver
 {
 protected:
 
-    // Private Data
+    // Protected Data
 
     // Stored Data
 
@@ -95,6 +95,9 @@ protected:
         //- The variables table
         HashTable<exprResult> variables_;
 
+        //- Special-purpose scalar reference argument
+        scalar arg1Value_;
+
 
     // Controls, tracing etc.
 
@@ -123,8 +126,6 @@ protected:
         bool searchFiles_;
 
 
-protected:
-
     // Protected Member Functions
 
         //- Read an interpolation table
@@ -292,6 +293,14 @@ public:
         }
 
 
+    // Globals, Mesh Related
+
+        //- Set special-purpose scalar reference argument.
+        //  Typically available as \c arg() in an expression and
+        //  may corrspond to table index, time value etc.
+        scalar argValue() const;
+
+
     // General Controls
 
         //- Get "look-behind" parsing context (internal bookkeeping)
@@ -336,6 +345,11 @@ public:
         //- Clear temporary variables and resets from expression strings
         virtual void clearVariables();
 
+        //- Set special-purpose scalar reference argument.
+        //  Typically available as \c arg() in an expression and
+        //  may corrspond to table index, time value etc.
+        virtual void setArgument(const scalar val);
+
         //- True if named variable exists
         inline virtual bool hasVariable(const word& name) const;
 
diff --git a/src/OpenFOAM/expressions/fields/fieldExprLemonParser.h b/src/OpenFOAM/expressions/fields/fieldExprLemonParser.h
index ca96bf3f900775d3933ed74630883321c4393859..57702c282f4c824277b718f9f8e33870edb33d0b 100644
--- a/src/OpenFOAM/expressions/fields/fieldExprLemonParser.h
+++ b/src/OpenFOAM/expressions/fields/fieldExprLemonParser.h
@@ -25,66 +25,67 @@
 #define TOK_RPAREN                          25
 #define TOK_DEG_TO_RAD                      26
 #define TOK_RAD_TO_DEG                      27
-#define TOK_SCALAR_ID                       28
-#define TOK_MIN                             29
-#define TOK_COMMA                           30
-#define TOK_MAX                             31
-#define TOK_SUM                             32
-#define TOK_AVERAGE                         33
-#define TOK_EXP                             34
-#define TOK_LOG                             35
-#define TOK_LOG10                           36
-#define TOK_SQR                             37
-#define TOK_SQRT                            38
-#define TOK_CBRT                            39
-#define TOK_SIN                             40
-#define TOK_COS                             41
-#define TOK_TAN                             42
-#define TOK_ASIN                            43
-#define TOK_ACOS                            44
-#define TOK_ATAN                            45
-#define TOK_SINH                            46
-#define TOK_COSH                            47
-#define TOK_TANH                            48
-#define TOK_POW                             49
-#define TOK_ATAN2                           50
-#define TOK_POS                             51
-#define TOK_NEG                             52
-#define TOK_POS0                            53
-#define TOK_NEG0                            54
-#define TOK_SIGN                            55
-#define TOK_FLOOR                           56
-#define TOK_CEIL                            57
-#define TOK_ROUND                           58
-#define TOK_HYPOT                           59
-#define TOK_RAND                            60
-#define TOK_VECTOR_ID                       61
-#define TOK_SPH_TENSOR_ID                   62
-#define TOK_SYM_TENSOR_ID                   63
-#define TOK_UNIT_TENSOR                     64
-#define TOK_TENSOR_ID                       65
-#define TOK_LTRUE                           66
-#define TOK_LFALSE                          67
-#define TOK_BOOL                            68
-#define TOK_BOOL_ID                         69
-#define TOK_MAG                             70
-#define TOK_MAGSQR                          71
-#define TOK_VECTOR                          72
-#define TOK_TENSOR                          73
-#define TOK_SYM_TENSOR                      74
-#define TOK_SPH_TENSOR                      75
-#define TOK_CMPT_X                          76
-#define TOK_CMPT_Y                          77
-#define TOK_CMPT_Z                          78
-#define TOK_CMPT_XX                         79
-#define TOK_CMPT_XY                         80
-#define TOK_CMPT_XZ                         81
-#define TOK_CMPT_YX                         82
-#define TOK_CMPT_YY                         83
-#define TOK_CMPT_YZ                         84
-#define TOK_CMPT_ZX                         85
-#define TOK_CMPT_ZY                         86
-#define TOK_CMPT_ZZ                         87
-#define TOK_CMPT_II                         88
-#define TOK_TRANSPOSE                       89
-#define TOK_DIAG                            90
+#define TOK_ARG                             28
+#define TOK_SCALAR_ID                       29
+#define TOK_MIN                             30
+#define TOK_COMMA                           31
+#define TOK_MAX                             32
+#define TOK_SUM                             33
+#define TOK_AVERAGE                         34
+#define TOK_EXP                             35
+#define TOK_LOG                             36
+#define TOK_LOG10                           37
+#define TOK_SQR                             38
+#define TOK_SQRT                            39
+#define TOK_CBRT                            40
+#define TOK_SIN                             41
+#define TOK_COS                             42
+#define TOK_TAN                             43
+#define TOK_ASIN                            44
+#define TOK_ACOS                            45
+#define TOK_ATAN                            46
+#define TOK_SINH                            47
+#define TOK_COSH                            48
+#define TOK_TANH                            49
+#define TOK_POW                             50
+#define TOK_ATAN2                           51
+#define TOK_POS                             52
+#define TOK_NEG                             53
+#define TOK_POS0                            54
+#define TOK_NEG0                            55
+#define TOK_SIGN                            56
+#define TOK_FLOOR                           57
+#define TOK_CEIL                            58
+#define TOK_ROUND                           59
+#define TOK_HYPOT                           60
+#define TOK_RAND                            61
+#define TOK_VECTOR_ID                       62
+#define TOK_SPH_TENSOR_ID                   63
+#define TOK_SYM_TENSOR_ID                   64
+#define TOK_UNIT_TENSOR                     65
+#define TOK_TENSOR_ID                       66
+#define TOK_LTRUE                           67
+#define TOK_LFALSE                          68
+#define TOK_BOOL                            69
+#define TOK_BOOL_ID                         70
+#define TOK_MAG                             71
+#define TOK_MAGSQR                          72
+#define TOK_VECTOR                          73
+#define TOK_TENSOR                          74
+#define TOK_SYM_TENSOR                      75
+#define TOK_SPH_TENSOR                      76
+#define TOK_CMPT_X                          77
+#define TOK_CMPT_Y                          78
+#define TOK_CMPT_Z                          79
+#define TOK_CMPT_XX                         80
+#define TOK_CMPT_XY                         81
+#define TOK_CMPT_XZ                         82
+#define TOK_CMPT_YX                         83
+#define TOK_CMPT_YY                         84
+#define TOK_CMPT_YZ                         85
+#define TOK_CMPT_ZX                         86
+#define TOK_CMPT_ZY                         87
+#define TOK_CMPT_ZZ                         88
+#define TOK_CMPT_II                         89
+#define TOK_TRANSPOSE                       90
+#define TOK_DIAG                            91
diff --git a/src/OpenFOAM/expressions/fields/fieldExprLemonParser.lyy-m4 b/src/OpenFOAM/expressions/fields/fieldExprLemonParser.lyy-m4
index 485c74c59a814149803c4e472c9a13fff9e41b83..b5054395c5dadcd633217425c30a8e7bed928c11 100644
--- a/src/OpenFOAM/expressions/fields/fieldExprLemonParser.lyy-m4
+++ b/src/OpenFOAM/expressions/fields/fieldExprLemonParser.lyy-m4
@@ -164,6 +164,7 @@ svalue (lhs) ::= ZERO .             { lhs = Foam::Zero; }
 svalue (lhs) ::= PI LPAREN RPAREN . { lhs = Foam::constant::mathematical::pi; }
 svalue (lhs) ::= DEG_TO_RAD LPAREN RPAREN . { lhs = Foam::degToRad(); }
 svalue (lhs) ::= RAD_TO_DEG LPAREN RPAREN . { lhs = Foam::radToDeg(); }
+svalue (lhs) ::= ARG LPAREN RPAREN . { lhs = driver->argValue(); }
 dnl svalue (lhs) ::= TIME LPAREN RPAREN . { lhs = driver->timeValue(); }
 
 
diff --git a/src/OpenFOAM/expressions/fields/fieldExprScanner.cc b/src/OpenFOAM/expressions/fields/fieldExprScanner.cc
index da8256024a9478ff61fc06e1babf9c2fe33ca33c..4ed61751d4e54c24bffaace9a95dde0ddb2f5bc5 100644
--- a/src/OpenFOAM/expressions/fields/fieldExprScanner.cc
+++ b/src/OpenFOAM/expressions/fields/fieldExprScanner.cc
@@ -7,7 +7,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -171,7 +171,7 @@ static const int fieldExpr_error = 0;
 static const int fieldExpr_en_main = 11;
 
 
-#line 303 "fieldExprScanner.rl"
+#line 304 "fieldExprScanner.rl"
 
 
 
@@ -411,7 +411,7 @@ bool Foam::expressions::fieldExpr::scanner::process
 	act = 0;
 	}
 
-#line 533 "fieldExprScanner.rl"
+#line 534 "fieldExprScanner.rl"
    /* ^^^ FSM initialization here ^^^ */;
 
     
@@ -696,6 +696,9 @@ tr68:
 	{{p = ((te))-1;} EMIT_TOKEN(LFALSE); }
 	break;
 	case 67:
+	{{p = ((te))-1;} EMIT_TOKEN(ARG); }
+	break;
+	case 68:
 	{{p = ((te))-1;}
         driver_.parsePosition() = (ts-buf);
         dispatch_ident(driver_, scanTok, word(ts, te-ts, false));
@@ -705,43 +708,43 @@ tr68:
 	}
 	}
 	goto st11;
-tr82:
+tr84:
 #line 260 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(ATAN); }}
 	goto st11;
-tr97:
+tr99:
 #line 256 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(COS); }}
 	goto st11;
-tr114:
+tr116:
 #line 249 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(LOG); }}
 	goto st11;
-tr121:
+tr123:
 #line 265 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(MAG); }}
 	goto st11;
-tr128:
+tr130:
 #line 269 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(NEG); }}
 	goto st11;
-tr134:
+tr136:
 #line 268 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(POS); }}
 	goto st11;
-tr153:
+tr155:
 #line 255 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(SIN); }}
 	goto st11;
-tr169:
+tr171:
 #line 252 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(SQR); }}
 	goto st11;
-tr184:
+tr186:
 #line 257 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(TAN); }}
 	goto st11;
-tr190:
+tr192:
 #line 284 "fieldExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(TENSOR); }}
 	goto st11;
@@ -753,7 +756,7 @@ st11:
 case 11:
 #line 1 "NONE"
 	{ts = p;}
-#line 757 "fieldExprScanner.cc"
+#line 760 "fieldExprScanner.cc"
 	switch( (*p) ) {
 		case 32: goto st12;
 		case 33: goto st13;
@@ -778,19 +781,19 @@ case 11:
 		case 94: goto tr35;
 		case 95: goto st22;
 		case 97: goto st27;
-		case 98: goto st40;
-		case 99: goto st43;
-		case 100: goto st48;
-		case 101: goto st55;
-		case 102: goto st57;
-		case 108: goto st61;
-		case 109: goto st65;
-		case 110: goto st71;
-		case 112: goto st74;
-		case 114: goto st77;
-		case 115: goto st85;
-		case 116: goto st113;
-		case 118: goto st123;
+		case 98: goto st41;
+		case 99: goto st44;
+		case 100: goto st49;
+		case 101: goto st56;
+		case 102: goto st58;
+		case 108: goto st62;
+		case 109: goto st66;
+		case 110: goto st72;
+		case 112: goto st75;
+		case 114: goto st78;
+		case 115: goto st86;
+		case 116: goto st114;
+		case 118: goto st124;
 		case 124: goto st10;
 	}
 	if ( (*p) < 48 ) {
@@ -880,7 +883,7 @@ st16:
 	if ( ++p == pe )
 		goto _test_eof16;
 case 16:
-#line 884 "fieldExprScanner.cc"
+#line 887 "fieldExprScanner.cc"
 	switch( (*p) ) {
 		case 69: goto st5;
 		case 101: goto st5;
@@ -931,7 +934,7 @@ st19:
 	if ( ++p == pe )
 		goto _test_eof19;
 case 19:
-#line 935 "fieldExprScanner.cc"
+#line 938 "fieldExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr57;
 		case 69: goto st5;
@@ -982,7 +985,7 @@ tr67:
 #line 1 "NONE"
 	{te = p+1;}
 #line 189 "fieldExprScanner.rl"
-	{act = 67;}
+	{act = 68;}
 	goto st23;
 tr71:
 #line 1 "NONE"
@@ -990,175 +993,181 @@ tr71:
 #line 289 "fieldExprScanner.rl"
 	{act = 63;}
 	goto st23;
-tr77:
+tr78:
 #line 1 "NONE"
 	{te = p+1;}
 #line 259 "fieldExprScanner.rl"
 	{act = 40;}
 	goto st23;
 tr79:
+#line 1 "NONE"
+	{te = p+1;}
+#line 293 "fieldExprScanner.rl"
+	{act = 67;}
+	goto st23;
+tr81:
 #line 1 "NONE"
 	{te = p+1;}
 #line 258 "fieldExprScanner.rl"
 	{act = 39;}
 	goto st23;
-tr83:
+tr85:
 #line 1 "NONE"
 	{te = p+1;}
 #line 261 "fieldExprScanner.rl"
 	{act = 42;}
 	goto st23;
-tr88:
+tr90:
 #line 1 "NONE"
 	{te = p+1;}
 #line 277 "fieldExprScanner.rl"
 	{act = 55;}
 	goto st23;
-tr91:
+tr93:
 #line 1 "NONE"
 	{te = p+1;}
 #line 282 "fieldExprScanner.rl"
 	{act = 58;}
 	goto st23;
-tr95:
+tr97:
 #line 1 "NONE"
 	{te = p+1;}
 #line 254 "fieldExprScanner.rl"
 	{act = 35;}
 	goto st23;
-tr98:
+tr100:
 #line 1 "NONE"
 	{te = p+1;}
 #line 263 "fieldExprScanner.rl"
 	{act = 44;}
 	goto st23;
-tr105:
+tr107:
 #line 1 "NONE"
 	{te = p+1;}
 #line 246 "fieldExprScanner.rl"
 	{act = 27;}
 	goto st23;
-tr107:
+tr109:
 #line 1 "NONE"
 	{te = p+1;}
 #line 248 "fieldExprScanner.rl"
 	{act = 29;}
 	goto st23;
-tr111:
+tr113:
 #line 1 "NONE"
 	{te = p+1;}
 #line 291 "fieldExprScanner.rl"
 	{act = 65;}
 	goto st23;
-tr116:
+tr118:
 #line 1 "NONE"
 	{te = p+1;}
 #line 250 "fieldExprScanner.rl"
 	{act = 31;}
 	goto st23;
-tr120:
+tr122:
 #line 1 "NONE"
 	{te = p+1;}
 #line 276 "fieldExprScanner.rl"
 	{act = 54;}
 	goto st23;
-tr124:
+tr126:
 #line 1 "NONE"
 	{te = p+1;}
 #line 266 "fieldExprScanner.rl"
 	{act = 47;}
 	goto st23;
-tr125:
+tr127:
 #line 1 "NONE"
 	{te = p+1;}
 #line 275 "fieldExprScanner.rl"
 	{act = 53;}
 	goto st23;
-tr129:
+tr131:
 #line 1 "NONE"
 	{te = p+1;}
 #line 271 "fieldExprScanner.rl"
 	{act = 51;}
 	goto st23;
-tr130:
+tr132:
 #line 1 "NONE"
 	{te = p+1;}
 #line 245 "fieldExprScanner.rl"
 	{act = 26;}
 	goto st23;
-tr133:
+tr135:
 #line 1 "NONE"
 	{te = p+1;}
 #line 251 "fieldExprScanner.rl"
 	{act = 32;}
 	goto st23;
-tr135:
+tr137:
 #line 1 "NONE"
 	{te = p+1;}
 #line 270 "fieldExprScanner.rl"
 	{act = 50;}
 	goto st23;
-tr143:
+tr145:
 #line 1 "NONE"
 	{te = p+1;}
 #line 247 "fieldExprScanner.rl"
 	{act = 28;}
 	goto st23;
-tr144:
+tr146:
 #line 1 "NONE"
 	{te = p+1;}
 #line 279 "fieldExprScanner.rl"
 	{act = 57;}
 	goto st23;
-tr152:
+tr154:
 #line 1 "NONE"
 	{te = p+1;}
 #line 272 "fieldExprScanner.rl"
 	{act = 52;}
 	goto st23;
-tr154:
+tr156:
 #line 1 "NONE"
 	{te = p+1;}
 #line 262 "fieldExprScanner.rl"
 	{act = 43;}
 	goto st23;
-tr167:
+tr169:
 #line 1 "NONE"
 	{te = p+1;}
 #line 286 "fieldExprScanner.rl"
 	{act = 62;}
 	goto st23;
-tr170:
+tr172:
 #line 1 "NONE"
 	{te = p+1;}
 #line 253 "fieldExprScanner.rl"
 	{act = 34;}
 	goto st23;
-tr171:
+tr173:
 #line 1 "NONE"
 	{te = p+1;}
 #line 278 "fieldExprScanner.rl"
 	{act = 56;}
 	goto st23;
-tr179:
+tr181:
 #line 1 "NONE"
 	{te = p+1;}
 #line 285 "fieldExprScanner.rl"
 	{act = 61;}
 	goto st23;
-tr185:
+tr187:
 #line 1 "NONE"
 	{te = p+1;}
 #line 264 "fieldExprScanner.rl"
 	{act = 45;}
 	goto st23;
-tr193:
+tr195:
 #line 1 "NONE"
 	{te = p+1;}
 #line 290 "fieldExprScanner.rl"
 	{act = 64;}
 	goto st23;
-tr198:
+tr200:
 #line 1 "NONE"
 	{te = p+1;}
 #line 283 "fieldExprScanner.rl"
@@ -1168,7 +1177,7 @@ st23:
 	if ( ++p == pe )
 		goto _test_eof23;
 case 23:
-#line 1172 "fieldExprScanner.cc"
+#line 1181 "fieldExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
@@ -1244,9 +1253,10 @@ case 27:
 		case 46: goto tr67;
 		case 95: goto tr67;
 		case 99: goto st28;
-		case 115: goto st30;
-		case 116: goto st32;
-		case 118: goto st35;
+		case 114: goto st30;
+		case 115: goto st31;
+		case 116: goto st33;
+		case 118: goto st36;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1282,7 +1292,7 @@ case 29:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 115: goto tr77;
+		case 115: goto tr78;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1300,7 +1310,7 @@ case 30:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 105: goto st31;
+		case 103: goto tr79;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1318,7 +1328,7 @@ case 31:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 110: goto tr79;
+		case 105: goto st32;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1336,13 +1346,13 @@ case 32:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 97: goto st33;
+		case 110: goto tr81;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1354,13 +1364,13 @@ case 33:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 110: goto st34;
+		case 97: goto st34;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1371,8 +1381,8 @@ st34:
 case 34:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 50: goto tr83;
 		case 95: goto tr67;
+		case 110: goto st35;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1382,15 +1392,15 @@ case 34:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr82;
+	goto tr66;
 st35:
 	if ( ++p == pe )
 		goto _test_eof35;
 case 35:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 50: goto tr85;
 		case 95: goto tr67;
-		case 101: goto st36;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1400,7 +1410,7 @@ case 35:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr84;
 st36:
 	if ( ++p == pe )
 		goto _test_eof36;
@@ -1408,7 +1418,7 @@ case 36:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto st37;
+		case 101: goto st37;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1426,13 +1436,13 @@ case 37:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 97: goto st38;
+		case 114: goto st38;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1444,13 +1454,13 @@ case 38:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 103: goto st39;
+		case 97: goto st39;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1462,7 +1472,7 @@ case 39:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 101: goto tr88;
+		case 103: goto st40;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1480,7 +1490,7 @@ case 40:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 111: goto st41;
+		case 101: goto tr90;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1516,7 +1526,7 @@ case 42:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 108: goto tr91;
+		case 111: goto st43;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1534,8 +1544,7 @@ case 43:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 98: goto st44;
-		case 111: goto st46;
+		case 108: goto tr93;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1553,7 +1562,8 @@ case 44:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto st45;
+		case 98: goto st45;
+		case 111: goto st47;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1571,7 +1581,7 @@ case 45:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 116: goto tr95;
+		case 114: goto st46;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1589,7 +1599,7 @@ case 46:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 115: goto st47;
+		case 116: goto tr97;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1607,7 +1617,7 @@ case 47:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 104: goto tr98;
+		case 115: goto st48;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1617,7 +1627,7 @@ case 47:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr97;
+	goto tr66;
 st48:
 	if ( ++p == pe )
 		goto _test_eof48;
@@ -1625,7 +1635,7 @@ case 48:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 101: goto st49;
+		case 104: goto tr100;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1635,7 +1645,7 @@ case 48:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr99;
 st49:
 	if ( ++p == pe )
 		goto _test_eof49;
@@ -1643,7 +1653,7 @@ case 49:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 103: goto st50;
+		case 101: goto st50;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1660,8 +1670,8 @@ st50:
 case 50:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 84: goto st51;
 		case 95: goto tr67;
+		case 103: goto st51;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1678,8 +1688,8 @@ st51:
 case 51:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 84: goto st52;
 		case 95: goto tr67;
-		case 111: goto st52;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1696,8 +1706,8 @@ st52:
 case 52:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 82: goto st53;
 		case 95: goto tr67;
+		case 111: goto st53;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1714,14 +1724,14 @@ st53:
 case 53:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 82: goto st54;
 		case 95: goto tr67;
-		case 97: goto st54;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1733,13 +1743,13 @@ case 54:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 100: goto tr105;
+		case 97: goto st55;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1751,7 +1761,7 @@ case 55:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 120: goto st56;
+		case 100: goto tr107;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1769,7 +1779,7 @@ case 56:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 112: goto tr107;
+		case 120: goto st57;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1787,13 +1797,13 @@ case 57:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 97: goto st58;
+		case 112: goto tr109;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1805,13 +1815,13 @@ case 58:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 108: goto st59;
+		case 97: goto st59;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1823,7 +1833,7 @@ case 59:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 115: goto st60;
+		case 108: goto st60;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1841,7 +1851,7 @@ case 60:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 101: goto tr111;
+		case 115: goto st61;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1859,7 +1869,7 @@ case 61:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 111: goto st62;
+		case 101: goto tr113;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1877,7 +1887,7 @@ case 62:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 103: goto st63;
+		case 111: goto st63;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1894,8 +1904,8 @@ st63:
 case 63:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 49: goto st64;
 		case 95: goto tr67;
+		case 103: goto st64;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1905,40 +1915,39 @@ case 63:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr114;
+	goto tr66;
 st64:
 	if ( ++p == pe )
 		goto _test_eof64;
 case 64:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 48: goto tr116;
+		case 49: goto st65;
 		case 95: goto tr67;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr116;
 st65:
 	if ( ++p == pe )
 		goto _test_eof65;
 case 65:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 48: goto tr118;
 		case 95: goto tr67;
-		case 97: goto st66;
-		case 105: goto st70;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1950,14 +1959,14 @@ case 66:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 103: goto st67;
-		case 120: goto tr120;
+		case 97: goto st67;
+		case 105: goto st71;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -1968,8 +1977,9 @@ st67:
 case 67:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 83: goto st68;
 		case 95: goto tr67;
+		case 103: goto st68;
+		case 120: goto tr122;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1979,15 +1989,15 @@ case 67:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr121;
+	goto tr66;
 st68:
 	if ( ++p == pe )
 		goto _test_eof68;
 case 68:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 83: goto st69;
 		case 95: goto tr67;
-		case 113: goto st69;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1997,7 +2007,7 @@ case 68:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr123;
 st69:
 	if ( ++p == pe )
 		goto _test_eof69;
@@ -2005,7 +2015,7 @@ case 69:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto tr124;
+		case 113: goto st70;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2023,7 +2033,7 @@ case 70:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 110: goto tr125;
+		case 114: goto tr126;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2041,7 +2051,7 @@ case 71:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 101: goto st72;
+		case 110: goto tr127;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2059,7 +2069,7 @@ case 72:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 103: goto st73;
+		case 101: goto st73;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2076,37 +2086,36 @@ st73:
 case 73:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 48: goto tr129;
 		case 95: goto tr67;
+		case 103: goto st74;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr128;
+	goto tr66;
 st74:
 	if ( ++p == pe )
 		goto _test_eof74;
 case 74:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 48: goto tr131;
 		case 95: goto tr67;
-		case 105: goto tr130;
-		case 111: goto st75;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr130;
 st75:
 	if ( ++p == pe )
 		goto _test_eof75;
@@ -2114,8 +2123,8 @@ case 75:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 115: goto st76;
-		case 119: goto tr133;
+		case 105: goto tr132;
+		case 111: goto st76;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2132,36 +2141,37 @@ st76:
 case 76:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 48: goto tr135;
 		case 95: goto tr67;
+		case 115: goto st77;
+		case 119: goto tr135;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr134;
+	goto tr66;
 st77:
 	if ( ++p == pe )
 		goto _test_eof77;
 case 77:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 48: goto tr137;
 		case 95: goto tr67;
-		case 97: goto st78;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr136;
 st78:
 	if ( ++p == pe )
 		goto _test_eof78;
@@ -2169,14 +2179,13 @@ case 78:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 100: goto st79;
-		case 110: goto st84;
+		case 97: goto st79;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -2187,8 +2196,9 @@ st79:
 case 79:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 84: goto st80;
 		case 95: goto tr67;
+		case 100: goto st80;
+		case 110: goto st85;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2205,8 +2215,8 @@ st80:
 case 80:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 84: goto st81;
 		case 95: goto tr67;
-		case 111: goto st81;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2223,8 +2233,8 @@ st81:
 case 81:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 68: goto st82;
 		case 95: goto tr67;
+		case 111: goto st82;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2241,8 +2251,8 @@ st82:
 case 82:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 68: goto st83;
 		case 95: goto tr67;
-		case 101: goto st83;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2260,7 +2270,7 @@ case 83:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 103: goto tr143;
+		case 101: goto st84;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2278,7 +2288,7 @@ case 84:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 100: goto tr144;
+		case 103: goto tr145;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2296,11 +2306,7 @@ case 85:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 105: goto st86;
-		case 112: goto st89;
-		case 113: goto st102;
-		case 117: goto st104;
-		case 121: goto st105;
+		case 100: goto tr146;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2318,8 +2324,11 @@ case 86:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 103: goto st87;
-		case 110: goto st88;
+		case 105: goto st87;
+		case 112: goto st90;
+		case 113: goto st103;
+		case 117: goto st105;
+		case 121: goto st106;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2337,7 +2346,8 @@ case 87:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 110: goto tr152;
+		case 103: goto st88;
+		case 110: goto st89;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2355,7 +2365,7 @@ case 88:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 104: goto tr154;
+		case 110: goto tr154;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2365,7 +2375,7 @@ case 88:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr153;
+	goto tr66;
 st89:
 	if ( ++p == pe )
 		goto _test_eof89;
@@ -2373,7 +2383,7 @@ case 89:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 104: goto st90;
+		case 104: goto tr156;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2383,7 +2393,7 @@ case 89:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr155;
 st90:
 	if ( ++p == pe )
 		goto _test_eof90;
@@ -2391,7 +2401,7 @@ case 90:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 101: goto st91;
+		case 104: goto st91;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2409,7 +2419,7 @@ case 91:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto st92;
+		case 101: goto st92;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2427,7 +2437,7 @@ case 92:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 105: goto st93;
+		case 114: goto st93;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2445,7 +2455,7 @@ case 93:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 99: goto st94;
+		case 105: goto st94;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2463,13 +2473,13 @@ case 94:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 97: goto st95;
+		case 99: goto st95;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -2481,13 +2491,13 @@ case 95:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 108: goto st96;
+		case 97: goto st96;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -2498,8 +2508,8 @@ st96:
 case 96:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 84: goto st97;
 		case 95: goto tr67;
+		case 108: goto st97;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2516,8 +2526,8 @@ st97:
 case 97:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 84: goto st98;
 		case 95: goto tr67;
-		case 101: goto st98;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2535,7 +2545,7 @@ case 98:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 110: goto st99;
+		case 101: goto st99;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2553,7 +2563,7 @@ case 99:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 115: goto st100;
+		case 110: goto st100;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2571,7 +2581,7 @@ case 100:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 111: goto st101;
+		case 115: goto st101;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2589,7 +2599,7 @@ case 101:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto tr167;
+		case 111: goto st102;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2607,7 +2617,7 @@ case 102:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto st103;
+		case 114: goto tr169;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2625,7 +2635,7 @@ case 103:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 116: goto tr170;
+		case 114: goto st104;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2635,7 +2645,7 @@ case 103:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr169;
+	goto tr66;
 st104:
 	if ( ++p == pe )
 		goto _test_eof104;
@@ -2643,7 +2653,7 @@ case 104:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 109: goto tr171;
+		case 116: goto tr172;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2653,7 +2663,7 @@ case 104:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr171;
 st105:
 	if ( ++p == pe )
 		goto _test_eof105;
@@ -2661,7 +2671,7 @@ case 105:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 109: goto st106;
+		case 109: goto tr173;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2696,8 +2706,8 @@ st107:
 case 107:
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 84: goto st108;
 		case 95: goto tr67;
+		case 109: goto st108;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2714,8 +2724,8 @@ st108:
 case 108:
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 84: goto st109;
 		case 95: goto tr67;
-		case 101: goto st109;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2733,7 +2743,7 @@ case 109:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 110: goto st110;
+		case 101: goto st110;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2751,7 +2761,7 @@ case 110:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 115: goto st111;
+		case 110: goto st111;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2769,7 +2779,7 @@ case 111:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 111: goto st112;
+		case 115: goto st112;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2787,7 +2797,7 @@ case 112:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto tr179;
+		case 111: goto st113;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2805,15 +2815,13 @@ case 113:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 97: goto st114;
-		case 101: goto st116;
-		case 114: goto st121;
+		case 114: goto tr181;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -2825,13 +2833,15 @@ case 114:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 110: goto st115;
+		case 97: goto st115;
+		case 101: goto st117;
+		case 114: goto st122;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr67;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr67;
 	} else
 		goto tr67;
@@ -2843,7 +2853,7 @@ case 115:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 104: goto tr185;
+		case 110: goto st116;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2853,7 +2863,7 @@ case 115:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr184;
+	goto tr66;
 st116:
 	if ( ++p == pe )
 		goto _test_eof116;
@@ -2861,7 +2871,7 @@ case 116:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 110: goto st117;
+		case 104: goto tr187;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2871,7 +2881,7 @@ case 116:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr186;
 st117:
 	if ( ++p == pe )
 		goto _test_eof117;
@@ -2879,7 +2889,7 @@ case 117:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 115: goto st118;
+		case 110: goto st118;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2897,7 +2907,7 @@ case 118:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 111: goto st119;
+		case 115: goto st119;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2915,7 +2925,7 @@ case 119:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto tr189;
+		case 111: goto st120;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2926,19 +2936,14 @@ case 119:
 	} else
 		goto tr67;
 	goto tr66;
-tr189:
-#line 1 "NONE"
-	{te = p+1;}
-	goto st120;
 st120:
 	if ( ++p == pe )
 		goto _test_eof120;
 case 120:
-#line 2938 "fieldExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr67;
-		case 58: goto st8;
 		case 95: goto tr67;
+		case 114: goto tr191;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2948,29 +2953,20 @@ case 120:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr190;
-st8:
-	if ( ++p == pe )
-		goto _test_eof8;
-case 8:
-	if ( (*p) == 58 )
-		goto st9;
-	goto tr9;
-st9:
-	if ( ++p == pe )
-		goto _test_eof9;
-case 9:
-	if ( (*p) == 73 )
-		goto tr11;
-	goto tr9;
+	goto tr66;
+tr191:
+#line 1 "NONE"
+	{te = p+1;}
+	goto st121;
 st121:
 	if ( ++p == pe )
 		goto _test_eof121;
 case 121:
+#line 2966 "fieldExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr67;
+		case 58: goto st8;
 		case 95: goto tr67;
-		case 117: goto st122;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2980,7 +2976,21 @@ case 121:
 			goto tr67;
 	} else
 		goto tr67;
-	goto tr66;
+	goto tr192;
+st8:
+	if ( ++p == pe )
+		goto _test_eof8;
+case 8:
+	if ( (*p) == 58 )
+		goto st9;
+	goto tr9;
+st9:
+	if ( ++p == pe )
+		goto _test_eof9;
+case 9:
+	if ( (*p) == 73 )
+		goto tr11;
+	goto tr9;
 st122:
 	if ( ++p == pe )
 		goto _test_eof122;
@@ -2988,7 +2998,7 @@ case 122:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 101: goto tr193;
+		case 117: goto st123;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3006,7 +3016,7 @@ case 123:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 101: goto st124;
+		case 101: goto tr195;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3024,7 +3034,7 @@ case 124:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 99: goto st125;
+		case 101: goto st125;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3042,7 +3052,7 @@ case 125:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 116: goto st126;
+		case 99: goto st126;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3060,7 +3070,7 @@ case 126:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 111: goto st127;
+		case 116: goto st127;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3078,7 +3088,25 @@ case 127:
 	switch( (*p) ) {
 		case 46: goto tr67;
 		case 95: goto tr67;
-		case 114: goto tr198;
+		case 111: goto st128;
+	}
+	if ( (*p) < 65 ) {
+		if ( 48 <= (*p) && (*p) <= 57 )
+			goto tr67;
+	} else if ( (*p) > 90 ) {
+		if ( 97 <= (*p) && (*p) <= 122 )
+			goto tr67;
+	} else
+		goto tr67;
+	goto tr66;
+st128:
+	if ( ++p == pe )
+		goto _test_eof128;
+case 128:
+	switch( (*p) ) {
+		case 46: goto tr67;
+		case 95: goto tr67;
+		case 114: goto tr200;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3214,15 +3242,16 @@ case 10:
 	_test_eof118: cs = 118; goto _test_eof; 
 	_test_eof119: cs = 119; goto _test_eof; 
 	_test_eof120: cs = 120; goto _test_eof; 
+	_test_eof121: cs = 121; goto _test_eof; 
 	_test_eof8: cs = 8; goto _test_eof; 
 	_test_eof9: cs = 9; goto _test_eof; 
-	_test_eof121: cs = 121; goto _test_eof; 
 	_test_eof122: cs = 122; goto _test_eof; 
 	_test_eof123: cs = 123; goto _test_eof; 
 	_test_eof124: cs = 124; goto _test_eof; 
 	_test_eof125: cs = 125; goto _test_eof; 
 	_test_eof126: cs = 126; goto _test_eof; 
 	_test_eof127: cs = 127; goto _test_eof; 
+	_test_eof128: cs = 128; goto _test_eof; 
 	_test_eof10: cs = 10; goto _test_eof; 
 
 	_test_eof: {}
@@ -3253,8 +3282,8 @@ case 10:
 	case 31: goto tr66;
 	case 32: goto tr66;
 	case 33: goto tr66;
-	case 34: goto tr82;
-	case 35: goto tr66;
+	case 34: goto tr66;
+	case 35: goto tr84;
 	case 36: goto tr66;
 	case 37: goto tr66;
 	case 38: goto tr66;
@@ -3266,8 +3295,8 @@ case 10:
 	case 44: goto tr66;
 	case 45: goto tr66;
 	case 46: goto tr66;
-	case 47: goto tr97;
-	case 48: goto tr66;
+	case 47: goto tr66;
+	case 48: goto tr99;
 	case 49: goto tr66;
 	case 50: goto tr66;
 	case 51: goto tr66;
@@ -3282,21 +3311,21 @@ case 10:
 	case 60: goto tr66;
 	case 61: goto tr66;
 	case 62: goto tr66;
-	case 63: goto tr114;
-	case 64: goto tr66;
+	case 63: goto tr66;
+	case 64: goto tr116;
 	case 65: goto tr66;
 	case 66: goto tr66;
-	case 67: goto tr121;
-	case 68: goto tr66;
+	case 67: goto tr66;
+	case 68: goto tr123;
 	case 69: goto tr66;
 	case 70: goto tr66;
 	case 71: goto tr66;
 	case 72: goto tr66;
-	case 73: goto tr128;
-	case 74: goto tr66;
+	case 73: goto tr66;
+	case 74: goto tr130;
 	case 75: goto tr66;
-	case 76: goto tr134;
-	case 77: goto tr66;
+	case 76: goto tr66;
+	case 77: goto tr136;
 	case 78: goto tr66;
 	case 79: goto tr66;
 	case 80: goto tr66;
@@ -3307,8 +3336,8 @@ case 10:
 	case 85: goto tr66;
 	case 86: goto tr66;
 	case 87: goto tr66;
-	case 88: goto tr153;
-	case 89: goto tr66;
+	case 88: goto tr66;
+	case 89: goto tr155;
 	case 90: goto tr66;
 	case 91: goto tr66;
 	case 92: goto tr66;
@@ -3322,8 +3351,8 @@ case 10:
 	case 100: goto tr66;
 	case 101: goto tr66;
 	case 102: goto tr66;
-	case 103: goto tr169;
-	case 104: goto tr66;
+	case 103: goto tr66;
+	case 104: goto tr171;
 	case 105: goto tr66;
 	case 106: goto tr66;
 	case 107: goto tr66;
@@ -3334,28 +3363,29 @@ case 10:
 	case 112: goto tr66;
 	case 113: goto tr66;
 	case 114: goto tr66;
-	case 115: goto tr184;
-	case 116: goto tr66;
+	case 115: goto tr66;
+	case 116: goto tr186;
 	case 117: goto tr66;
 	case 118: goto tr66;
 	case 119: goto tr66;
-	case 120: goto tr190;
+	case 120: goto tr66;
+	case 121: goto tr192;
 	case 8: goto tr9;
 	case 9: goto tr9;
-	case 121: goto tr66;
 	case 122: goto tr66;
 	case 123: goto tr66;
 	case 124: goto tr66;
 	case 125: goto tr66;
 	case 126: goto tr66;
 	case 127: goto tr66;
+	case 128: goto tr66;
 	}
 	}
 
 	_out: {}
 	}
 
-#line 535 "fieldExprScanner.rl"
+#line 536 "fieldExprScanner.rl"
    /* ^^^ FSM execution here ^^^ */;
 
     if (0 == cs)
diff --git a/src/OpenFOAM/expressions/fields/fieldExprScanner.rl b/src/OpenFOAM/expressions/fields/fieldExprScanner.rl
index a1e8b3fe28f32550b2840f56da055fd706bfb2f5..2024cf1e6f70c9b6d904b25733f4b656c38fc96c 100644
--- a/src/OpenFOAM/expressions/fields/fieldExprScanner.rl
+++ b/src/OpenFOAM/expressions/fields/fieldExprScanner.rl
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -290,6 +290,7 @@ static int driverTokenType
     "true"      =>{ EMIT_TOKEN(LTRUE); };
     "false"     =>{ EMIT_TOKEN(LFALSE); };
     "tensor::I" =>{ EMIT_TOKEN(UNIT_TENSOR); };
+    "arg"       =>{ EMIT_TOKEN(ARG); };
 ##    "time"      =>{ EMIT_TOKEN(TIME); };
 
     ## Identifier (field, etc - error if unknown)
diff --git a/src/finiteVolume/expressions/base/fvExprDriver.H b/src/finiteVolume/expressions/base/fvExprDriver.H
index 016e9d055a3b295b8c1647cb2c201fa5c07086eb..dd1d5aec047d3eb3461f949b4e375dab3c99456d 100644
--- a/src/finiteVolume/expressions/base/fvExprDriver.H
+++ b/src/finiteVolume/expressions/base/fvExprDriver.H
@@ -5,8 +5,8 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Original code Copyright (C) 2010-2018 Bernhard Gschaider
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2010-2018 Bernhard Gschaider
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -99,7 +99,7 @@ class fvExprDriver
         static bool cacheSets_;
 
 
-    // Protected Data
+    // Private Data
 
     // Stored Data
 
@@ -431,7 +431,7 @@ public:
         virtual label pointSize() const = 0;
 
 
-    // Mesh Related
+    // Globals, Mesh Related
 
         //- The Time associated with the mesh
         const Time& runTime() const;
diff --git a/src/finiteVolume/expressions/fields/base/patchExprFieldBase.C b/src/finiteVolume/expressions/fields/base/patchExprFieldBase.C
index a00d9b115ddd053d7ec8a49bd77b819f9535da43..8056893f296ce9c51d61809e90eb9d8e7f45bc1c 100644
--- a/src/finiteVolume/expressions/fields/base/patchExprFieldBase.C
+++ b/src/finiteVolume/expressions/fields/base/patchExprFieldBase.C
@@ -5,8 +5,8 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Original code Copyright (C) 2011-2018 Bernhard Gschaider
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2011-2018 Bernhard Gschaider
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -53,6 +53,25 @@ Foam::expressions::patchExprFieldBase::getFvPatch(const facePointPatch& pp)
 }
 
 
+const Foam::fvPatch&
+Foam::expressions::patchExprFieldBase::getFvPatch(const polyPatch& pp)
+{
+    const polyMesh& pmesh = pp.boundaryMesh().mesh();
+
+    const fvMesh* meshptr = isA<fvMesh>(pmesh);
+
+    if (!meshptr)
+    {
+        FatalErrorInFunction
+            << "Poly patch not attached to a base fvMesh, "
+            << "cannot use patch expressions" << nl << endl
+            << exit(FatalError);
+    }
+
+    return meshptr->boundary()[pp.index()];
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::expressions::patchExprFieldBase::patchExprFieldBase()
@@ -82,9 +101,9 @@ Foam::expressions::patchExprFieldBase::patchExprFieldBase
     bool isPointVal
 )
 :
-    debug_(dict.lookupOrDefault("debug", false)),
+    debug_(dict.getOrDefault("debug", false)),
     allowGradient_(allowGradient),
-    evalOnConstruct_(dict.lookupOrDefault<bool>("evalOnConstruct", false)),
+    evalOnConstruct_(dict.getOrDefault<bool>("evalOnConstruct", false)),
     valueExpr_(),
     gradExpr_(),
     fracExpr_()
diff --git a/src/finiteVolume/expressions/fields/base/patchExprFieldBase.H b/src/finiteVolume/expressions/fields/base/patchExprFieldBase.H
index 5c802b10aa5e13952af01febf009fd4040472680..06529939bfd20c851017f1c0f4e40ec4e531f758 100644
--- a/src/finiteVolume/expressions/fields/base/patchExprFieldBase.H
+++ b/src/finiteVolume/expressions/fields/base/patchExprFieldBase.H
@@ -5,8 +5,8 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Original code Copyright (C) 2011-2018 Bernhard Gschaider
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2011-2018 Bernhard Gschaider
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -58,6 +58,7 @@ namespace Foam
 // Forward Declarations
 class facePointPatch;
 class fvPatch;
+class polyPatch;
 
 namespace expressions
 {
@@ -91,10 +92,13 @@ public:
        //- Find (guess) fvPatch from a pointPatch
        static const fvPatch& getFvPatch(const facePointPatch& fp);
 
+       //- Find (guess) fvPatch from a polyPatch
+       static const fvPatch& getFvPatch(const polyPatch& pp);
+
 
     // Constructors
 
-        //- Null constructor
+        //- Default construct
         patchExprFieldBase();
 
         //- Construct with specified gradient handling
diff --git a/src/finiteVolume/expressions/patch/patchExprLemonParser.h b/src/finiteVolume/expressions/patch/patchExprLemonParser.h
index 8a84326c4dd20a35dbfb0ef4cbf29d37b1eb8a67..f10e76fcb8c5c2142cf97b0b4c19408ec7948278 100644
--- a/src/finiteVolume/expressions/patch/patchExprLemonParser.h
+++ b/src/finiteVolume/expressions/patch/patchExprLemonParser.h
@@ -25,86 +25,87 @@
 #define TOK_RPAREN                          25
 #define TOK_DEG_TO_RAD                      26
 #define TOK_RAD_TO_DEG                      27
-#define TOK_TIME                            28
-#define TOK_SCALAR_ID                       29
-#define TOK_SSCALAR_ID                      30
-#define TOK_MIN                             31
-#define TOK_COMMA                           32
-#define TOK_MAX                             33
-#define TOK_SUM                             34
-#define TOK_AVERAGE                         35
-#define TOK_EXP                             36
-#define TOK_LOG                             37
-#define TOK_LOG10                           38
-#define TOK_SQR                             39
-#define TOK_SQRT                            40
-#define TOK_CBRT                            41
-#define TOK_SIN                             42
-#define TOK_COS                             43
-#define TOK_TAN                             44
-#define TOK_ASIN                            45
-#define TOK_ACOS                            46
-#define TOK_ATAN                            47
-#define TOK_SINH                            48
-#define TOK_COSH                            49
-#define TOK_TANH                            50
-#define TOK_POW                             51
-#define TOK_ATAN2                           52
-#define TOK_POS                             53
-#define TOK_NEG                             54
-#define TOK_POS0                            55
-#define TOK_NEG0                            56
-#define TOK_SIGN                            57
-#define TOK_FLOOR                           58
-#define TOK_CEIL                            59
-#define TOK_ROUND                           60
-#define TOK_HYPOT                           61
-#define TOK_RAND                            62
-#define TOK_VECTOR_ID                       63
-#define TOK_SVECTOR_ID                      64
-#define TOK_SPH_TENSOR_ID                   65
-#define TOK_SSPH_TENSOR_ID                  66
-#define TOK_SYM_TENSOR_ID                   67
-#define TOK_SSYM_TENSOR_ID                  68
-#define TOK_UNIT_TENSOR                     69
-#define TOK_TENSOR_ID                       70
-#define TOK_STENSOR_ID                      71
-#define TOK_LTRUE                           72
-#define TOK_LFALSE                          73
-#define TOK_BOOL                            74
-#define TOK_SBOOL_ID                        75
-#define TOK_FACE_AREA                       76
-#define TOK_FACE_EXPR                       77
-#define TOK_WEIGHT_AVERAGE                  78
-#define TOK_WEIGHT_SUM                      79
-#define TOK_POINT_EXPR                      80
-#define TOK_PSCALAR_ID                      81
-#define TOK_PVECTOR_ID                      82
-#define TOK_PSPH_TENSOR_ID                  83
-#define TOK_PSYM_TENSOR_ID                  84
-#define TOK_PTENSOR_ID                      85
-#define TOK_PBOOL_ID                        86
-#define TOK_POINTS                          87
-#define TOK_MAG                             88
-#define TOK_MAGSQR                          89
-#define TOK_VECTOR                          90
-#define TOK_TENSOR                          91
-#define TOK_SYM_TENSOR                      92
-#define TOK_SPH_TENSOR                      93
-#define TOK_CMPT_X                          94
-#define TOK_CMPT_Y                          95
-#define TOK_CMPT_Z                          96
-#define TOK_CMPT_XX                         97
-#define TOK_CMPT_XY                         98
-#define TOK_CMPT_XZ                         99
-#define TOK_CMPT_YX                        100
-#define TOK_CMPT_YY                        101
-#define TOK_CMPT_YZ                        102
-#define TOK_CMPT_ZX                        103
-#define TOK_CMPT_ZY                        104
-#define TOK_CMPT_ZZ                        105
-#define TOK_CMPT_II                        106
-#define TOK_TRANSPOSE                      107
-#define TOK_DIAG                           108
-#define TOK_POINT_TO_FACE                  109
-#define TOK_FACE_TO_POINT                  110
+#define TOK_ARG                             28
+#define TOK_TIME                            29
+#define TOK_SCALAR_ID                       30
+#define TOK_SSCALAR_ID                      31
+#define TOK_MIN                             32
+#define TOK_COMMA                           33
+#define TOK_MAX                             34
+#define TOK_SUM                             35
+#define TOK_AVERAGE                         36
+#define TOK_EXP                             37
+#define TOK_LOG                             38
+#define TOK_LOG10                           39
+#define TOK_SQR                             40
+#define TOK_SQRT                            41
+#define TOK_CBRT                            42
+#define TOK_SIN                             43
+#define TOK_COS                             44
+#define TOK_TAN                             45
+#define TOK_ASIN                            46
+#define TOK_ACOS                            47
+#define TOK_ATAN                            48
+#define TOK_SINH                            49
+#define TOK_COSH                            50
+#define TOK_TANH                            51
+#define TOK_POW                             52
+#define TOK_ATAN2                           53
+#define TOK_POS                             54
+#define TOK_NEG                             55
+#define TOK_POS0                            56
+#define TOK_NEG0                            57
+#define TOK_SIGN                            58
+#define TOK_FLOOR                           59
+#define TOK_CEIL                            60
+#define TOK_ROUND                           61
+#define TOK_HYPOT                           62
+#define TOK_RAND                            63
+#define TOK_VECTOR_ID                       64
+#define TOK_SVECTOR_ID                      65
+#define TOK_SPH_TENSOR_ID                   66
+#define TOK_SSPH_TENSOR_ID                  67
+#define TOK_SYM_TENSOR_ID                   68
+#define TOK_SSYM_TENSOR_ID                  69
+#define TOK_UNIT_TENSOR                     70
+#define TOK_TENSOR_ID                       71
+#define TOK_STENSOR_ID                      72
+#define TOK_LTRUE                           73
+#define TOK_LFALSE                          74
+#define TOK_BOOL                            75
+#define TOK_SBOOL_ID                        76
+#define TOK_FACE_AREA                       77
+#define TOK_FACE_EXPR                       78
+#define TOK_WEIGHT_AVERAGE                  79
+#define TOK_WEIGHT_SUM                      80
+#define TOK_POINT_EXPR                      81
+#define TOK_PSCALAR_ID                      82
+#define TOK_PVECTOR_ID                      83
+#define TOK_PSPH_TENSOR_ID                  84
+#define TOK_PSYM_TENSOR_ID                  85
+#define TOK_PTENSOR_ID                      86
+#define TOK_PBOOL_ID                        87
+#define TOK_POINTS                          88
+#define TOK_MAG                             89
+#define TOK_MAGSQR                          90
+#define TOK_VECTOR                          91
+#define TOK_TENSOR                          92
+#define TOK_SYM_TENSOR                      93
+#define TOK_SPH_TENSOR                      94
+#define TOK_CMPT_X                          95
+#define TOK_CMPT_Y                          96
+#define TOK_CMPT_Z                          97
+#define TOK_CMPT_XX                         98
+#define TOK_CMPT_XY                         99
+#define TOK_CMPT_XZ                        100
+#define TOK_CMPT_YX                        101
+#define TOK_CMPT_YY                        102
+#define TOK_CMPT_YZ                        103
+#define TOK_CMPT_ZX                        104
+#define TOK_CMPT_ZY                        105
+#define TOK_CMPT_ZZ                        106
+#define TOK_CMPT_II                        107
+#define TOK_TRANSPOSE                      108
+#define TOK_DIAG                           109
+#define TOK_POINT_TO_FACE                  110
+#define TOK_FACE_TO_POINT                  111
diff --git a/src/finiteVolume/expressions/patch/patchExprLemonParser.lyy-m4 b/src/finiteVolume/expressions/patch/patchExprLemonParser.lyy-m4
index 6080db3477e2435f7fa31139a828de75b17afc0f..57a9e5eb63978b90941c0c7e3d256c77d3ed8461 100644
--- a/src/finiteVolume/expressions/patch/patchExprLemonParser.lyy-m4
+++ b/src/finiteVolume/expressions/patch/patchExprLemonParser.lyy-m4
@@ -118,6 +118,7 @@ svalue (lhs) ::= ZERO .             { lhs = Foam::Zero; }
 svalue (lhs) ::= PI LPAREN RPAREN . { lhs = Foam::constant::mathematical::pi; }
 svalue (lhs) ::= DEG_TO_RAD LPAREN RPAREN . { lhs = Foam::degToRad(); }
 svalue (lhs) ::= RAD_TO_DEG LPAREN RPAREN . { lhs = Foam::radToDeg(); }
+svalue (lhs) ::= ARG LPAREN RPAREN .  { lhs = driver->argValue(); }
 svalue (lhs) ::= TIME LPAREN RPAREN . { lhs = driver->timeValue(); }
 
 
diff --git a/src/finiteVolume/expressions/patch/patchExprScanner.cc b/src/finiteVolume/expressions/patch/patchExprScanner.cc
index c78ac70e72effb481ddf68208656303bb507bc0f..7650f62338db5d034a1072501062c99ef57ee648 100644
--- a/src/finiteVolume/expressions/patch/patchExprScanner.cc
+++ b/src/finiteVolume/expressions/patch/patchExprScanner.cc
@@ -7,7 +7,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -295,7 +295,7 @@ static const int patchExpr_error = 0;
 static const int patchExpr_en_main = 11;
 
 
-#line 429 "patchExprScanner.rl"
+#line 430 "patchExprScanner.rl"
 
 
 
@@ -535,7 +535,7 @@ bool Foam::expressions::patchExpr::scanner::process
 	act = 0;
 	}
 
-#line 659 "patchExprScanner.rl"
+#line 660 "patchExprScanner.rl"
    /* ^^^ FSM initialization here ^^^ */;
 
     
@@ -826,9 +826,12 @@ tr69:
 	{{p = ((te))-1;} EMIT_TOKEN(LFALSE); }
 	break;
 	case 69:
-	{{p = ((te))-1;} EMIT_TOKEN(TIME); }
+	{{p = ((te))-1;} EMIT_TOKEN(ARG); }
 	break;
 	case 70:
+	{{p = ((te))-1;} EMIT_TOKEN(TIME); }
+	break;
+	case 71:
 	{{p = ((te))-1;}
         driver_.parsePosition() = (ts-buf);
         dispatch_ident(driver_, scanTok, word(ts, te-ts, false));
@@ -838,43 +841,43 @@ tr69:
 	}
 	}
 	goto st11;
-tr83:
+tr85:
 #line 384 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(ATAN); }}
 	goto st11;
-tr98:
+tr100:
 #line 380 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(COS); }}
 	goto st11;
-tr115:
+tr117:
 #line 373 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(LOG); }}
 	goto st11;
-tr122:
+tr124:
 #line 389 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(MAG); }}
 	goto st11;
-tr129:
+tr131:
 #line 393 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(NEG); }}
 	goto st11;
-tr135:
+tr137:
 #line 392 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(POS); }}
 	goto st11;
-tr154:
+tr156:
 #line 379 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(SIN); }}
 	goto st11;
-tr170:
+tr172:
 #line 376 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(SQR); }}
 	goto st11;
-tr186:
+tr188:
 #line 381 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(TAN); }}
 	goto st11;
-tr192:
+tr194:
 #line 410 "patchExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(TENSOR); }}
 	goto st11;
@@ -886,7 +889,7 @@ st11:
 case 11:
 #line 1 "NONE"
 	{ts = p;}
-#line 890 "patchExprScanner.cc"
+#line 893 "patchExprScanner.cc"
 	switch( (*p) ) {
 		case 32: goto st12;
 		case 33: goto st13;
@@ -911,20 +914,20 @@ case 11:
 		case 94: goto tr35;
 		case 95: goto st22;
 		case 97: goto st27;
-		case 98: goto st40;
-		case 99: goto st43;
-		case 100: goto st48;
-		case 101: goto st55;
-		case 102: goto st57;
-		case 108: goto st61;
-		case 109: goto st65;
-		case 110: goto st71;
-		case 112: goto st74;
-		case 114: goto st77;
-		case 115: goto st85;
-		case 116: goto st113;
-		case 118: goto st125;
-		case 119: goto st130;
+		case 98: goto st41;
+		case 99: goto st44;
+		case 100: goto st49;
+		case 101: goto st56;
+		case 102: goto st58;
+		case 108: goto st62;
+		case 109: goto st66;
+		case 110: goto st72;
+		case 112: goto st75;
+		case 114: goto st78;
+		case 115: goto st86;
+		case 116: goto st114;
+		case 118: goto st126;
+		case 119: goto st131;
 		case 124: goto st10;
 	}
 	if ( (*p) < 48 ) {
@@ -1014,7 +1017,7 @@ st16:
 	if ( ++p == pe )
 		goto _test_eof16;
 case 16:
-#line 1018 "patchExprScanner.cc"
+#line 1021 "patchExprScanner.cc"
 	switch( (*p) ) {
 		case 69: goto st5;
 		case 101: goto st5;
@@ -1065,7 +1068,7 @@ st19:
 	if ( ++p == pe )
 		goto _test_eof19;
 case 19:
-#line 1069 "patchExprScanner.cc"
+#line 1072 "patchExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr58;
 		case 69: goto st5;
@@ -1116,7 +1119,7 @@ tr68:
 #line 1 "NONE"
 	{te = p+1;}
 #line 313 "patchExprScanner.rl"
-	{act = 70;}
+	{act = 71;}
 	goto st23;
 tr72:
 #line 1 "NONE"
@@ -1124,193 +1127,199 @@ tr72:
 #line 415 "patchExprScanner.rl"
 	{act = 65;}
 	goto st23;
-tr78:
+tr79:
 #line 1 "NONE"
 	{te = p+1;}
 #line 383 "patchExprScanner.rl"
 	{act = 40;}
 	goto st23;
 tr80:
+#line 1 "NONE"
+	{te = p+1;}
+#line 419 "patchExprScanner.rl"
+	{act = 69;}
+	goto st23;
+tr82:
 #line 1 "NONE"
 	{te = p+1;}
 #line 382 "patchExprScanner.rl"
 	{act = 39;}
 	goto st23;
-tr84:
+tr86:
 #line 1 "NONE"
 	{te = p+1;}
 #line 385 "patchExprScanner.rl"
 	{act = 42;}
 	goto st23;
-tr89:
+tr91:
 #line 1 "NONE"
 	{te = p+1;}
 #line 401 "patchExprScanner.rl"
 	{act = 55;}
 	goto st23;
-tr92:
+tr94:
 #line 1 "NONE"
 	{te = p+1;}
 #line 408 "patchExprScanner.rl"
 	{act = 60;}
 	goto st23;
-tr96:
+tr98:
 #line 1 "NONE"
 	{te = p+1;}
 #line 378 "patchExprScanner.rl"
 	{act = 35;}
 	goto st23;
-tr99:
+tr101:
 #line 1 "NONE"
 	{te = p+1;}
 #line 387 "patchExprScanner.rl"
 	{act = 44;}
 	goto st23;
-tr106:
+tr108:
 #line 1 "NONE"
 	{te = p+1;}
 #line 370 "patchExprScanner.rl"
 	{act = 27;}
 	goto st23;
-tr108:
+tr110:
 #line 1 "NONE"
 	{te = p+1;}
 #line 372 "patchExprScanner.rl"
 	{act = 29;}
 	goto st23;
-tr112:
+tr114:
 #line 1 "NONE"
 	{te = p+1;}
 #line 417 "patchExprScanner.rl"
 	{act = 67;}
 	goto st23;
-tr117:
+tr119:
 #line 1 "NONE"
 	{te = p+1;}
 #line 374 "patchExprScanner.rl"
 	{act = 31;}
 	goto st23;
-tr121:
+tr123:
 #line 1 "NONE"
 	{te = p+1;}
 #line 400 "patchExprScanner.rl"
 	{act = 54;}
 	goto st23;
-tr125:
+tr127:
 #line 1 "NONE"
 	{te = p+1;}
 #line 390 "patchExprScanner.rl"
 	{act = 47;}
 	goto st23;
-tr126:
+tr128:
 #line 1 "NONE"
 	{te = p+1;}
 #line 399 "patchExprScanner.rl"
 	{act = 53;}
 	goto st23;
-tr130:
+tr132:
 #line 1 "NONE"
 	{te = p+1;}
 #line 395 "patchExprScanner.rl"
 	{act = 51;}
 	goto st23;
-tr131:
+tr133:
 #line 1 "NONE"
 	{te = p+1;}
 #line 369 "patchExprScanner.rl"
 	{act = 26;}
 	goto st23;
-tr134:
+tr136:
 #line 1 "NONE"
 	{te = p+1;}
 #line 375 "patchExprScanner.rl"
 	{act = 32;}
 	goto st23;
-tr136:
+tr138:
 #line 1 "NONE"
 	{te = p+1;}
 #line 394 "patchExprScanner.rl"
 	{act = 50;}
 	goto st23;
-tr144:
+tr146:
 #line 1 "NONE"
 	{te = p+1;}
 #line 371 "patchExprScanner.rl"
 	{act = 28;}
 	goto st23;
-tr145:
+tr147:
 #line 1 "NONE"
 	{te = p+1;}
 #line 405 "patchExprScanner.rl"
 	{act = 59;}
 	goto st23;
-tr153:
+tr155:
 #line 1 "NONE"
 	{te = p+1;}
 #line 396 "patchExprScanner.rl"
 	{act = 52;}
 	goto st23;
-tr155:
+tr157:
 #line 1 "NONE"
 	{te = p+1;}
 #line 386 "patchExprScanner.rl"
 	{act = 43;}
 	goto st23;
-tr168:
+tr170:
 #line 1 "NONE"
 	{te = p+1;}
 #line 412 "patchExprScanner.rl"
 	{act = 64;}
 	goto st23;
-tr171:
+tr173:
 #line 1 "NONE"
 	{te = p+1;}
 #line 377 "patchExprScanner.rl"
 	{act = 34;}
 	goto st23;
-tr172:
+tr174:
 #line 1 "NONE"
 	{te = p+1;}
 #line 402 "patchExprScanner.rl"
 	{act = 56;}
 	goto st23;
-tr180:
+tr182:
 #line 1 "NONE"
 	{te = p+1;}
 #line 411 "patchExprScanner.rl"
 	{act = 63;}
 	goto st23;
-tr187:
+tr189:
 #line 1 "NONE"
 	{te = p+1;}
 #line 388 "patchExprScanner.rl"
 	{act = 45;}
 	goto st23;
-tr195:
+tr197:
 #line 1 "NONE"
 	{te = p+1;}
-#line 419 "patchExprScanner.rl"
-	{act = 69;}
+#line 420 "patchExprScanner.rl"
+	{act = 70;}
 	goto st23;
-tr197:
+tr199:
 #line 1 "NONE"
 	{te = p+1;}
 #line 416 "patchExprScanner.rl"
 	{act = 66;}
 	goto st23;
-tr202:
+tr204:
 #line 1 "NONE"
 	{te = p+1;}
 #line 409 "patchExprScanner.rl"
 	{act = 61;}
 	goto st23;
-tr215:
+tr217:
 #line 1 "NONE"
 	{te = p+1;}
 #line 403 "patchExprScanner.rl"
 	{act = 57;}
 	goto st23;
-tr217:
+tr219:
 #line 1 "NONE"
 	{te = p+1;}
 #line 404 "patchExprScanner.rl"
@@ -1320,7 +1329,7 @@ st23:
 	if ( ++p == pe )
 		goto _test_eof23;
 case 23:
-#line 1324 "patchExprScanner.cc"
+#line 1333 "patchExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
@@ -1396,9 +1405,10 @@ case 27:
 		case 46: goto tr68;
 		case 95: goto tr68;
 		case 99: goto st28;
-		case 115: goto st30;
-		case 116: goto st32;
-		case 118: goto st35;
+		case 114: goto st30;
+		case 115: goto st31;
+		case 116: goto st33;
+		case 118: goto st36;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1434,7 +1444,7 @@ case 29:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto tr78;
+		case 115: goto tr79;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1452,7 +1462,7 @@ case 30:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 105: goto st31;
+		case 103: goto tr80;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1470,7 +1480,7 @@ case 31:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto tr80;
+		case 105: goto st32;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1488,13 +1498,13 @@ case 32:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st33;
+		case 110: goto tr82;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1506,13 +1516,13 @@ case 33:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st34;
+		case 97: goto st34;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1523,8 +1533,8 @@ st34:
 case 34:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 50: goto tr84;
 		case 95: goto tr68;
+		case 110: goto st35;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1534,15 +1544,15 @@ case 34:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr83;
+	goto tr67;
 st35:
 	if ( ++p == pe )
 		goto _test_eof35;
 case 35:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 50: goto tr86;
 		case 95: goto tr68;
-		case 101: goto st36;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1552,7 +1562,7 @@ case 35:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr85;
 st36:
 	if ( ++p == pe )
 		goto _test_eof36;
@@ -1560,7 +1570,7 @@ case 36:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st37;
+		case 101: goto st37;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1578,13 +1588,13 @@ case 37:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st38;
+		case 114: goto st38;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1596,13 +1606,13 @@ case 38:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st39;
+		case 97: goto st39;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1614,7 +1624,7 @@ case 39:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr89;
+		case 103: goto st40;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1632,7 +1642,7 @@ case 40:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st41;
+		case 101: goto tr91;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1668,7 +1678,7 @@ case 42:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 108: goto tr92;
+		case 111: goto st43;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1686,8 +1696,7 @@ case 43:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 98: goto st44;
-		case 111: goto st46;
+		case 108: goto tr94;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1705,7 +1714,8 @@ case 44:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st45;
+		case 98: goto st45;
+		case 111: goto st47;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1723,7 +1733,7 @@ case 45:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 116: goto tr96;
+		case 114: goto st46;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1741,7 +1751,7 @@ case 46:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st47;
+		case 116: goto tr98;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1759,7 +1769,7 @@ case 47:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto tr99;
+		case 115: goto st48;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1769,7 +1779,7 @@ case 47:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr98;
+	goto tr67;
 st48:
 	if ( ++p == pe )
 		goto _test_eof48;
@@ -1777,7 +1787,7 @@ case 48:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st49;
+		case 104: goto tr101;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1787,7 +1797,7 @@ case 48:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr100;
 st49:
 	if ( ++p == pe )
 		goto _test_eof49;
@@ -1795,7 +1805,7 @@ case 49:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st50;
+		case 101: goto st50;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1812,8 +1822,8 @@ st50:
 case 50:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 84: goto st51;
 		case 95: goto tr68;
+		case 103: goto st51;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1830,8 +1840,8 @@ st51:
 case 51:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 84: goto st52;
 		case 95: goto tr68;
-		case 111: goto st52;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1848,8 +1858,8 @@ st52:
 case 52:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 82: goto st53;
 		case 95: goto tr68;
+		case 111: goto st53;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1866,14 +1876,14 @@ st53:
 case 53:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 82: goto st54;
 		case 95: goto tr68;
-		case 97: goto st54;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1885,13 +1895,13 @@ case 54:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 100: goto tr106;
+		case 97: goto st55;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1903,7 +1913,7 @@ case 55:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 120: goto st56;
+		case 100: goto tr108;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1921,7 +1931,7 @@ case 56:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 112: goto tr108;
+		case 120: goto st57;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1939,13 +1949,13 @@ case 57:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st58;
+		case 112: goto tr110;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1957,13 +1967,13 @@ case 58:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 108: goto st59;
+		case 97: goto st59;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1975,7 +1985,7 @@ case 59:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st60;
+		case 108: goto st60;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1993,7 +2003,7 @@ case 60:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr112;
+		case 115: goto st61;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2011,7 +2021,7 @@ case 61:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st62;
+		case 101: goto tr114;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2029,7 +2039,7 @@ case 62:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st63;
+		case 111: goto st63;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2046,8 +2056,8 @@ st63:
 case 63:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 49: goto st64;
 		case 95: goto tr68;
+		case 103: goto st64;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2057,40 +2067,39 @@ case 63:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr115;
+	goto tr67;
 st64:
 	if ( ++p == pe )
 		goto _test_eof64;
 case 64:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 48: goto tr117;
+		case 49: goto st65;
 		case 95: goto tr68;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr117;
 st65:
 	if ( ++p == pe )
 		goto _test_eof65;
 case 65:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 48: goto tr119;
 		case 95: goto tr68;
-		case 97: goto st66;
-		case 105: goto st70;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2102,14 +2111,14 @@ case 66:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st67;
-		case 120: goto tr121;
+		case 97: goto st67;
+		case 105: goto st71;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2120,8 +2129,9 @@ st67:
 case 67:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 83: goto st68;
 		case 95: goto tr68;
+		case 103: goto st68;
+		case 120: goto tr123;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2131,15 +2141,15 @@ case 67:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr122;
+	goto tr67;
 st68:
 	if ( ++p == pe )
 		goto _test_eof68;
 case 68:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 83: goto st69;
 		case 95: goto tr68;
-		case 113: goto st69;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2149,7 +2159,7 @@ case 68:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr124;
 st69:
 	if ( ++p == pe )
 		goto _test_eof69;
@@ -2157,7 +2167,7 @@ case 69:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr125;
+		case 113: goto st70;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2175,7 +2185,7 @@ case 70:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto tr126;
+		case 114: goto tr127;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2193,7 +2203,7 @@ case 71:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st72;
+		case 110: goto tr128;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2211,7 +2221,7 @@ case 72:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st73;
+		case 101: goto st73;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2228,37 +2238,36 @@ st73:
 case 73:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 48: goto tr130;
 		case 95: goto tr68;
+		case 103: goto st74;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr129;
+	goto tr67;
 st74:
 	if ( ++p == pe )
 		goto _test_eof74;
 case 74:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 48: goto tr132;
 		case 95: goto tr68;
-		case 105: goto tr131;
-		case 111: goto st75;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr131;
 st75:
 	if ( ++p == pe )
 		goto _test_eof75;
@@ -2266,8 +2275,8 @@ case 75:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st76;
-		case 119: goto tr134;
+		case 105: goto tr133;
+		case 111: goto st76;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2284,36 +2293,37 @@ st76:
 case 76:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 48: goto tr136;
 		case 95: goto tr68;
+		case 115: goto st77;
+		case 119: goto tr136;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr135;
+	goto tr67;
 st77:
 	if ( ++p == pe )
 		goto _test_eof77;
 case 77:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 48: goto tr138;
 		case 95: goto tr68;
-		case 97: goto st78;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr137;
 st78:
 	if ( ++p == pe )
 		goto _test_eof78;
@@ -2321,14 +2331,13 @@ case 78:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 100: goto st79;
-		case 110: goto st84;
+		case 97: goto st79;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2339,8 +2348,9 @@ st79:
 case 79:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 84: goto st80;
 		case 95: goto tr68;
+		case 100: goto st80;
+		case 110: goto st85;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2357,8 +2367,8 @@ st80:
 case 80:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 84: goto st81;
 		case 95: goto tr68;
-		case 111: goto st81;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2375,8 +2385,8 @@ st81:
 case 81:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 68: goto st82;
 		case 95: goto tr68;
+		case 111: goto st82;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2393,8 +2403,8 @@ st82:
 case 82:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 68: goto st83;
 		case 95: goto tr68;
-		case 101: goto st83;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2412,7 +2422,7 @@ case 83:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto tr144;
+		case 101: goto st84;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2430,7 +2440,7 @@ case 84:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 100: goto tr145;
+		case 103: goto tr146;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2448,11 +2458,7 @@ case 85:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 105: goto st86;
-		case 112: goto st89;
-		case 113: goto st102;
-		case 117: goto st104;
-		case 121: goto st105;
+		case 100: goto tr147;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2470,8 +2476,11 @@ case 86:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st87;
-		case 110: goto st88;
+		case 105: goto st87;
+		case 112: goto st90;
+		case 113: goto st103;
+		case 117: goto st105;
+		case 121: goto st106;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2489,7 +2498,8 @@ case 87:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto tr153;
+		case 103: goto st88;
+		case 110: goto st89;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2507,7 +2517,7 @@ case 88:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto tr155;
+		case 110: goto tr155;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2517,7 +2527,7 @@ case 88:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr154;
+	goto tr67;
 st89:
 	if ( ++p == pe )
 		goto _test_eof89;
@@ -2525,7 +2535,7 @@ case 89:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto st90;
+		case 104: goto tr157;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2535,7 +2545,7 @@ case 89:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr156;
 st90:
 	if ( ++p == pe )
 		goto _test_eof90;
@@ -2543,7 +2553,7 @@ case 90:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st91;
+		case 104: goto st91;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2561,7 +2571,7 @@ case 91:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st92;
+		case 101: goto st92;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2579,7 +2589,7 @@ case 92:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 105: goto st93;
+		case 114: goto st93;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2597,7 +2607,7 @@ case 93:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 99: goto st94;
+		case 105: goto st94;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2615,13 +2625,13 @@ case 94:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st95;
+		case 99: goto st95;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2633,13 +2643,13 @@ case 95:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 108: goto st96;
+		case 97: goto st96;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2650,8 +2660,8 @@ st96:
 case 96:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 84: goto st97;
 		case 95: goto tr68;
+		case 108: goto st97;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2668,8 +2678,8 @@ st97:
 case 97:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 84: goto st98;
 		case 95: goto tr68;
-		case 101: goto st98;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2687,7 +2697,7 @@ case 98:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st99;
+		case 101: goto st99;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2705,7 +2715,7 @@ case 99:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st100;
+		case 110: goto st100;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2723,7 +2733,7 @@ case 100:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st101;
+		case 115: goto st101;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2741,7 +2751,7 @@ case 101:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr168;
+		case 111: goto st102;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2759,7 +2769,7 @@ case 102:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st103;
+		case 114: goto tr170;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2777,7 +2787,7 @@ case 103:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 116: goto tr171;
+		case 114: goto st104;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2787,7 +2797,7 @@ case 103:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr170;
+	goto tr67;
 st104:
 	if ( ++p == pe )
 		goto _test_eof104;
@@ -2795,7 +2805,7 @@ case 104:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 109: goto tr172;
+		case 116: goto tr173;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2805,7 +2815,7 @@ case 104:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr172;
 st105:
 	if ( ++p == pe )
 		goto _test_eof105;
@@ -2813,7 +2823,7 @@ case 105:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 109: goto st106;
+		case 109: goto tr174;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2848,8 +2858,8 @@ st107:
 case 107:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 84: goto st108;
 		case 95: goto tr68;
+		case 109: goto st108;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2866,8 +2876,8 @@ st108:
 case 108:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 84: goto st109;
 		case 95: goto tr68;
-		case 101: goto st109;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2885,7 +2895,7 @@ case 109:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st110;
+		case 101: goto st110;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2903,7 +2913,7 @@ case 110:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st111;
+		case 110: goto st111;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2921,7 +2931,7 @@ case 111:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st112;
+		case 115: goto st112;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2939,7 +2949,7 @@ case 112:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr180;
+		case 111: goto st113;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2957,16 +2967,13 @@ case 113:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st114;
-		case 101: goto st116;
-		case 105: goto st121;
-		case 114: goto st123;
+		case 114: goto tr182;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2978,13 +2985,16 @@ case 114:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st115;
+		case 97: goto st115;
+		case 101: goto st117;
+		case 105: goto st122;
+		case 114: goto st124;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2996,7 +3006,7 @@ case 115:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto tr187;
+		case 110: goto st116;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3006,7 +3016,7 @@ case 115:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr186;
+	goto tr67;
 st116:
 	if ( ++p == pe )
 		goto _test_eof116;
@@ -3014,7 +3024,7 @@ case 116:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st117;
+		case 104: goto tr189;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3024,7 +3034,7 @@ case 116:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr188;
 st117:
 	if ( ++p == pe )
 		goto _test_eof117;
@@ -3032,7 +3042,7 @@ case 117:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st118;
+		case 110: goto st118;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3050,7 +3060,7 @@ case 118:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st119;
+		case 115: goto st119;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3068,7 +3078,7 @@ case 119:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr191;
+		case 111: goto st120;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3079,19 +3089,14 @@ case 119:
 	} else
 		goto tr68;
 	goto tr67;
-tr191:
-#line 1 "NONE"
-	{te = p+1;}
-	goto st120;
 st120:
 	if ( ++p == pe )
 		goto _test_eof120;
 case 120:
-#line 3091 "patchExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 58: goto st8;
 		case 95: goto tr68;
+		case 114: goto tr193;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3101,29 +3106,20 @@ case 120:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr192;
-st8:
-	if ( ++p == pe )
-		goto _test_eof8;
-case 8:
-	if ( (*p) == 58 )
-		goto st9;
-	goto tr9;
-st9:
-	if ( ++p == pe )
-		goto _test_eof9;
-case 9:
-	if ( (*p) == 73 )
-		goto tr11;
-	goto tr9;
+	goto tr67;
+tr193:
+#line 1 "NONE"
+	{te = p+1;}
+	goto st121;
 st121:
 	if ( ++p == pe )
 		goto _test_eof121;
 case 121:
+#line 3119 "patchExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 58: goto st8;
 		case 95: goto tr68;
-		case 109: goto st122;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3133,7 +3129,21 @@ case 121:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr194;
+st8:
+	if ( ++p == pe )
+		goto _test_eof8;
+case 8:
+	if ( (*p) == 58 )
+		goto st9;
+	goto tr9;
+st9:
+	if ( ++p == pe )
+		goto _test_eof9;
+case 9:
+	if ( (*p) == 73 )
+		goto tr11;
+	goto tr9;
 st122:
 	if ( ++p == pe )
 		goto _test_eof122;
@@ -3141,7 +3151,7 @@ case 122:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr195;
+		case 109: goto st123;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3159,7 +3169,7 @@ case 123:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 117: goto st124;
+		case 101: goto tr197;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3177,7 +3187,7 @@ case 124:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr197;
+		case 117: goto st125;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3195,7 +3205,7 @@ case 125:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st126;
+		case 101: goto tr199;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3213,7 +3223,7 @@ case 126:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 99: goto st127;
+		case 101: goto st127;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3231,7 +3241,7 @@ case 127:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 116: goto st128;
+		case 99: goto st128;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3249,7 +3259,7 @@ case 128:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st129;
+		case 116: goto st129;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3267,7 +3277,7 @@ case 129:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr202;
+		case 111: goto st130;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3285,7 +3295,7 @@ case 130:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st131;
+		case 114: goto tr204;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3303,7 +3313,7 @@ case 131:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 105: goto st132;
+		case 101: goto st132;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3321,7 +3331,7 @@ case 132:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st133;
+		case 105: goto st133;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3339,7 +3349,7 @@ case 133:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto st134;
+		case 103: goto st134;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3357,7 +3367,7 @@ case 134:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 116: goto st135;
+		case 104: goto st135;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3374,11 +3384,10 @@ st135:
 case 135:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 65: goto st136;
-		case 83: goto st142;
 		case 95: goto tr68;
+		case 116: goto st136;
 	}
-	if ( (*p) < 66 ) {
+	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
@@ -3393,10 +3402,11 @@ st136:
 case 136:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 65: goto st137;
+		case 83: goto st143;
 		case 95: goto tr68;
-		case 118: goto st137;
 	}
-	if ( (*p) < 65 ) {
+	if ( (*p) < 66 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
@@ -3412,7 +3422,7 @@ case 137:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st138;
+		case 118: goto st138;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3430,7 +3440,7 @@ case 138:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st139;
+		case 101: goto st139;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3448,13 +3458,13 @@ case 139:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st140;
+		case 114: goto st140;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -3466,13 +3476,13 @@ case 140:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st141;
+		case 97: goto st141;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -3484,7 +3494,7 @@ case 141:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr215;
+		case 103: goto st142;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3502,7 +3512,7 @@ case 142:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 117: goto st143;
+		case 101: goto tr217;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3520,7 +3530,25 @@ case 143:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 109: goto tr217;
+		case 117: goto st144;
+	}
+	if ( (*p) < 65 ) {
+		if ( 48 <= (*p) && (*p) <= 57 )
+			goto tr68;
+	} else if ( (*p) > 90 ) {
+		if ( 97 <= (*p) && (*p) <= 122 )
+			goto tr68;
+	} else
+		goto tr68;
+	goto tr67;
+st144:
+	if ( ++p == pe )
+		goto _test_eof144;
+case 144:
+	switch( (*p) ) {
+		case 46: goto tr68;
+		case 95: goto tr68;
+		case 109: goto tr219;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3656,9 +3684,9 @@ case 10:
 	_test_eof118: cs = 118; goto _test_eof; 
 	_test_eof119: cs = 119; goto _test_eof; 
 	_test_eof120: cs = 120; goto _test_eof; 
+	_test_eof121: cs = 121; goto _test_eof; 
 	_test_eof8: cs = 8; goto _test_eof; 
 	_test_eof9: cs = 9; goto _test_eof; 
-	_test_eof121: cs = 121; goto _test_eof; 
 	_test_eof122: cs = 122; goto _test_eof; 
 	_test_eof123: cs = 123; goto _test_eof; 
 	_test_eof124: cs = 124; goto _test_eof; 
@@ -3681,6 +3709,7 @@ case 10:
 	_test_eof141: cs = 141; goto _test_eof; 
 	_test_eof142: cs = 142; goto _test_eof; 
 	_test_eof143: cs = 143; goto _test_eof; 
+	_test_eof144: cs = 144; goto _test_eof; 
 	_test_eof10: cs = 10; goto _test_eof; 
 
 	_test_eof: {}
@@ -3711,8 +3740,8 @@ case 10:
 	case 31: goto tr67;
 	case 32: goto tr67;
 	case 33: goto tr67;
-	case 34: goto tr83;
-	case 35: goto tr67;
+	case 34: goto tr67;
+	case 35: goto tr85;
 	case 36: goto tr67;
 	case 37: goto tr67;
 	case 38: goto tr67;
@@ -3724,8 +3753,8 @@ case 10:
 	case 44: goto tr67;
 	case 45: goto tr67;
 	case 46: goto tr67;
-	case 47: goto tr98;
-	case 48: goto tr67;
+	case 47: goto tr67;
+	case 48: goto tr100;
 	case 49: goto tr67;
 	case 50: goto tr67;
 	case 51: goto tr67;
@@ -3740,21 +3769,21 @@ case 10:
 	case 60: goto tr67;
 	case 61: goto tr67;
 	case 62: goto tr67;
-	case 63: goto tr115;
-	case 64: goto tr67;
+	case 63: goto tr67;
+	case 64: goto tr117;
 	case 65: goto tr67;
 	case 66: goto tr67;
-	case 67: goto tr122;
-	case 68: goto tr67;
+	case 67: goto tr67;
+	case 68: goto tr124;
 	case 69: goto tr67;
 	case 70: goto tr67;
 	case 71: goto tr67;
 	case 72: goto tr67;
-	case 73: goto tr129;
-	case 74: goto tr67;
+	case 73: goto tr67;
+	case 74: goto tr131;
 	case 75: goto tr67;
-	case 76: goto tr135;
-	case 77: goto tr67;
+	case 76: goto tr67;
+	case 77: goto tr137;
 	case 78: goto tr67;
 	case 79: goto tr67;
 	case 80: goto tr67;
@@ -3765,8 +3794,8 @@ case 10:
 	case 85: goto tr67;
 	case 86: goto tr67;
 	case 87: goto tr67;
-	case 88: goto tr154;
-	case 89: goto tr67;
+	case 88: goto tr67;
+	case 89: goto tr156;
 	case 90: goto tr67;
 	case 91: goto tr67;
 	case 92: goto tr67;
@@ -3780,8 +3809,8 @@ case 10:
 	case 100: goto tr67;
 	case 101: goto tr67;
 	case 102: goto tr67;
-	case 103: goto tr170;
-	case 104: goto tr67;
+	case 103: goto tr67;
+	case 104: goto tr172;
 	case 105: goto tr67;
 	case 106: goto tr67;
 	case 107: goto tr67;
@@ -3792,15 +3821,15 @@ case 10:
 	case 112: goto tr67;
 	case 113: goto tr67;
 	case 114: goto tr67;
-	case 115: goto tr186;
-	case 116: goto tr67;
+	case 115: goto tr67;
+	case 116: goto tr188;
 	case 117: goto tr67;
 	case 118: goto tr67;
 	case 119: goto tr67;
-	case 120: goto tr192;
+	case 120: goto tr67;
+	case 121: goto tr194;
 	case 8: goto tr9;
 	case 9: goto tr9;
-	case 121: goto tr67;
 	case 122: goto tr67;
 	case 123: goto tr67;
 	case 124: goto tr67;
@@ -3823,13 +3852,14 @@ case 10:
 	case 141: goto tr67;
 	case 142: goto tr67;
 	case 143: goto tr67;
+	case 144: goto tr67;
 	}
 	}
 
 	_out: {}
 	}
 
-#line 661 "patchExprScanner.rl"
+#line 662 "patchExprScanner.rl"
    /* ^^^ FSM execution here ^^^ */;
 
     if (0 == cs)
diff --git a/src/finiteVolume/expressions/patch/patchExprScanner.rl b/src/finiteVolume/expressions/patch/patchExprScanner.rl
index 84b5f3b0a333bcef98456acafc6a3552175b9425..87b4b3c600529fc9660f830d30e4fc0ffe48e7a8 100644
--- a/src/finiteVolume/expressions/patch/patchExprScanner.rl
+++ b/src/finiteVolume/expressions/patch/patchExprScanner.rl
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -416,6 +416,7 @@ static int driverTokenType
     "true"      =>{ EMIT_TOKEN(LTRUE); };
     "false"     =>{ EMIT_TOKEN(LFALSE); };
     "tensor::I" =>{ EMIT_TOKEN(UNIT_TENSOR); };
+    "arg"       =>{ EMIT_TOKEN(ARG); };
     "time"      =>{ EMIT_TOKEN(TIME); };
 
     ## Identifier (field, etc - error if unknown)
diff --git a/src/finiteVolume/expressions/volume/volumeExprLemonParser.h b/src/finiteVolume/expressions/volume/volumeExprLemonParser.h
index 2cca6cd8082bb5e0c70b23a4967b85c74db2dd1c..2e2ec7653fcc4c28e5a8cc397799f23e016bd5c7 100644
--- a/src/finiteVolume/expressions/volume/volumeExprLemonParser.h
+++ b/src/finiteVolume/expressions/volume/volumeExprLemonParser.h
@@ -25,95 +25,96 @@
 #define TOK_RPAREN                          25
 #define TOK_DEG_TO_RAD                      26
 #define TOK_RAD_TO_DEG                      27
-#define TOK_TIME                            28
-#define TOK_SCALAR_ID                       29
-#define TOK_MIN                             30
-#define TOK_COMMA                           31
-#define TOK_MAX                             32
-#define TOK_SUM                             33
-#define TOK_AVERAGE                         34
-#define TOK_EXP                             35
-#define TOK_LOG                             36
-#define TOK_LOG10                           37
-#define TOK_SQR                             38
-#define TOK_SQRT                            39
-#define TOK_CBRT                            40
-#define TOK_SIN                             41
-#define TOK_COS                             42
-#define TOK_TAN                             43
-#define TOK_ASIN                            44
-#define TOK_ACOS                            45
-#define TOK_ATAN                            46
-#define TOK_SINH                            47
-#define TOK_COSH                            48
-#define TOK_TANH                            49
-#define TOK_POW                             50
-#define TOK_ATAN2                           51
-#define TOK_POS                             52
-#define TOK_NEG                             53
-#define TOK_POS0                            54
-#define TOK_NEG0                            55
-#define TOK_SIGN                            56
-#define TOK_FLOOR                           57
-#define TOK_CEIL                            58
-#define TOK_ROUND                           59
-#define TOK_HYPOT                           60
-#define TOK_RAND                            61
-#define TOK_VECTOR_ID                       62
-#define TOK_SPH_TENSOR_ID                   63
-#define TOK_SYM_TENSOR_ID                   64
-#define TOK_UNIT_TENSOR                     65
-#define TOK_TENSOR_ID                       66
-#define TOK_LTRUE                           67
-#define TOK_LFALSE                          68
-#define TOK_BOOL                            69
-#define TOK_CSET                            70
-#define TOK_IDENTIFIER                      71
-#define TOK_CZONE                           72
-#define TOK_CELL_VOLUME                     73
-#define TOK_WEIGHT_AVERAGE                  74
-#define TOK_WEIGHT_SUM                      75
-#define TOK_FACE_EXPR                       76
-#define TOK_SSCALAR_ID                      77
-#define TOK_SVECTOR_ID                      78
-#define TOK_SSPH_TENSOR_ID                  79
-#define TOK_SSYM_TENSOR_ID                  80
-#define TOK_STENSOR_ID                      81
-#define TOK_FSET                            82
-#define TOK_FZONE                           83
-#define TOK_FACE_AREA                       84
-#define TOK_FACE_CENTRE                     85
-#define TOK_POINT_EXPR                      86
-#define TOK_PSCALAR_ID                      87
-#define TOK_PVECTOR_ID                      88
-#define TOK_PSPH_TENSOR_ID                  89
-#define TOK_PSYM_TENSOR_ID                  90
-#define TOK_PTENSOR_ID                      91
-#define TOK_PSET                            92
-#define TOK_PZONE                           93
-#define TOK_POINTS                          94
-#define TOK_MAG                             95
-#define TOK_MAGSQR                          96
-#define TOK_VECTOR                          97
-#define TOK_TENSOR                          98
-#define TOK_SYM_TENSOR                      99
-#define TOK_SPH_TENSOR                     100
-#define TOK_CMPT_X                         101
-#define TOK_CMPT_Y                         102
-#define TOK_CMPT_Z                         103
-#define TOK_CMPT_XX                        104
-#define TOK_CMPT_XY                        105
-#define TOK_CMPT_XZ                        106
-#define TOK_CMPT_YX                        107
-#define TOK_CMPT_YY                        108
-#define TOK_CMPT_YZ                        109
-#define TOK_CMPT_ZX                        110
-#define TOK_CMPT_ZY                        111
-#define TOK_CMPT_ZZ                        112
-#define TOK_CMPT_II                        113
-#define TOK_TRANSPOSE                      114
-#define TOK_DIAG                           115
-#define TOK_POINT_TO_CELL                  116
-#define TOK_RECONSTRUCT                    117
-#define TOK_CELL_TO_FACE                   118
-#define TOK_CELL_TO_POINT                  119
+#define TOK_ARG                             28
+#define TOK_TIME                            29
+#define TOK_SCALAR_ID                       30
+#define TOK_MIN                             31
+#define TOK_COMMA                           32
+#define TOK_MAX                             33
+#define TOK_SUM                             34
+#define TOK_AVERAGE                         35
+#define TOK_EXP                             36
+#define TOK_LOG                             37
+#define TOK_LOG10                           38
+#define TOK_SQR                             39
+#define TOK_SQRT                            40
+#define TOK_CBRT                            41
+#define TOK_SIN                             42
+#define TOK_COS                             43
+#define TOK_TAN                             44
+#define TOK_ASIN                            45
+#define TOK_ACOS                            46
+#define TOK_ATAN                            47
+#define TOK_SINH                            48
+#define TOK_COSH                            49
+#define TOK_TANH                            50
+#define TOK_POW                             51
+#define TOK_ATAN2                           52
+#define TOK_POS                             53
+#define TOK_NEG                             54
+#define TOK_POS0                            55
+#define TOK_NEG0                            56
+#define TOK_SIGN                            57
+#define TOK_FLOOR                           58
+#define TOK_CEIL                            59
+#define TOK_ROUND                           60
+#define TOK_HYPOT                           61
+#define TOK_RAND                            62
+#define TOK_VECTOR_ID                       63
+#define TOK_SPH_TENSOR_ID                   64
+#define TOK_SYM_TENSOR_ID                   65
+#define TOK_UNIT_TENSOR                     66
+#define TOK_TENSOR_ID                       67
+#define TOK_LTRUE                           68
+#define TOK_LFALSE                          69
+#define TOK_BOOL                            70
+#define TOK_CSET                            71
+#define TOK_IDENTIFIER                      72
+#define TOK_CZONE                           73
+#define TOK_CELL_VOLUME                     74
+#define TOK_WEIGHT_AVERAGE                  75
+#define TOK_WEIGHT_SUM                      76
+#define TOK_FACE_EXPR                       77
+#define TOK_SSCALAR_ID                      78
+#define TOK_SVECTOR_ID                      79
+#define TOK_SSPH_TENSOR_ID                  80
+#define TOK_SSYM_TENSOR_ID                  81
+#define TOK_STENSOR_ID                      82
+#define TOK_FSET                            83
+#define TOK_FZONE                           84
+#define TOK_FACE_AREA                       85
+#define TOK_FACE_CENTRE                     86
+#define TOK_POINT_EXPR                      87
+#define TOK_PSCALAR_ID                      88
+#define TOK_PVECTOR_ID                      89
+#define TOK_PSPH_TENSOR_ID                  90
+#define TOK_PSYM_TENSOR_ID                  91
+#define TOK_PTENSOR_ID                      92
+#define TOK_PSET                            93
+#define TOK_PZONE                           94
+#define TOK_POINTS                          95
+#define TOK_MAG                             96
+#define TOK_MAGSQR                          97
+#define TOK_VECTOR                          98
+#define TOK_TENSOR                          99
+#define TOK_SYM_TENSOR                     100
+#define TOK_SPH_TENSOR                     101
+#define TOK_CMPT_X                         102
+#define TOK_CMPT_Y                         103
+#define TOK_CMPT_Z                         104
+#define TOK_CMPT_XX                        105
+#define TOK_CMPT_XY                        106
+#define TOK_CMPT_XZ                        107
+#define TOK_CMPT_YX                        108
+#define TOK_CMPT_YY                        109
+#define TOK_CMPT_YZ                        110
+#define TOK_CMPT_ZX                        111
+#define TOK_CMPT_ZY                        112
+#define TOK_CMPT_ZZ                        113
+#define TOK_CMPT_II                        114
+#define TOK_TRANSPOSE                      115
+#define TOK_DIAG                           116
+#define TOK_POINT_TO_CELL                  117
+#define TOK_RECONSTRUCT                    118
+#define TOK_CELL_TO_FACE                   119
+#define TOK_CELL_TO_POINT                  120
diff --git a/src/finiteVolume/expressions/volume/volumeExprLemonParser.lyy-m4 b/src/finiteVolume/expressions/volume/volumeExprLemonParser.lyy-m4
index bc9638fac40aef68f2cf247bf2fe7904d35a2811..57a1f2144dc4508afbb7c34e87cf133371aa0ecf 100644
--- a/src/finiteVolume/expressions/volume/volumeExprLemonParser.lyy-m4
+++ b/src/finiteVolume/expressions/volume/volumeExprLemonParser.lyy-m4
@@ -158,6 +158,7 @@ svalue (lhs) ::= ZERO .             { lhs = Foam::Zero; }
 svalue (lhs) ::= PI LPAREN RPAREN . { lhs = Foam::constant::mathematical::pi; }
 svalue (lhs) ::= DEG_TO_RAD LPAREN RPAREN . { lhs = Foam::degToRad(); }
 svalue (lhs) ::= RAD_TO_DEG LPAREN RPAREN . { lhs = Foam::radToDeg(); }
+svalue (lhs) ::= ARG LPAREN RPAREN .  { lhs = driver->argValue(); }
 svalue (lhs) ::= TIME LPAREN RPAREN . { lhs = driver->timeValue(); }
 
 
diff --git a/src/finiteVolume/expressions/volume/volumeExprScanner.cc b/src/finiteVolume/expressions/volume/volumeExprScanner.cc
index 91e6d01ad7e9d3efdccbaf4f59430b1ac41ec721..aafaa94ae9aee4ecc669bc65fadb65b5f2ab0efe 100644
--- a/src/finiteVolume/expressions/volume/volumeExprScanner.cc
+++ b/src/finiteVolume/expressions/volume/volumeExprScanner.cc
@@ -7,7 +7,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -324,7 +324,7 @@ static const int volumeExpr_error = 0;
 static const int volumeExpr_en_main = 11;
 
 
-#line 458 "volumeExprScanner.rl"
+#line 459 "volumeExprScanner.rl"
 
 
 
@@ -564,7 +564,7 @@ bool Foam::expressions::volumeExpr::scanner::process
 	act = 0;
 	}
 
-#line 688 "volumeExprScanner.rl"
+#line 689 "volumeExprScanner.rl"
    /* ^^^ FSM initialization here ^^^ */;
 
     
@@ -855,9 +855,12 @@ tr69:
 	{{p = ((te))-1;} EMIT_TOKEN(LFALSE); }
 	break;
 	case 69:
-	{{p = ((te))-1;} EMIT_TOKEN(TIME); }
+	{{p = ((te))-1;} EMIT_TOKEN(ARG); }
 	break;
 	case 70:
+	{{p = ((te))-1;} EMIT_TOKEN(TIME); }
+	break;
+	case 71:
 	{{p = ((te))-1;}
         driver_.parsePosition() = (ts-buf);
         dispatch_ident(driver_, scanTok, word(ts, te-ts, false));
@@ -867,43 +870,43 @@ tr69:
 	}
 	}
 	goto st11;
-tr83:
+tr85:
 #line 413 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(ATAN); }}
 	goto st11;
-tr98:
+tr100:
 #line 409 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(COS); }}
 	goto st11;
-tr115:
+tr117:
 #line 402 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(LOG); }}
 	goto st11;
-tr122:
+tr124:
 #line 418 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(MAG); }}
 	goto st11;
-tr129:
+tr131:
 #line 422 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(NEG); }}
 	goto st11;
-tr135:
+tr137:
 #line 421 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(POS); }}
 	goto st11;
-tr154:
+tr156:
 #line 408 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(SIN); }}
 	goto st11;
-tr170:
+tr172:
 #line 405 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(SQR); }}
 	goto st11;
-tr186:
+tr188:
 #line 410 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(TAN); }}
 	goto st11;
-tr192:
+tr194:
 #line 439 "volumeExprScanner.rl"
 	{te = p;p--;{ EMIT_TOKEN(TENSOR); }}
 	goto st11;
@@ -915,7 +918,7 @@ st11:
 case 11:
 #line 1 "NONE"
 	{ts = p;}
-#line 919 "volumeExprScanner.cc"
+#line 922 "volumeExprScanner.cc"
 	switch( (*p) ) {
 		case 32: goto st12;
 		case 33: goto st13;
@@ -940,20 +943,20 @@ case 11:
 		case 94: goto tr35;
 		case 95: goto st22;
 		case 97: goto st27;
-		case 98: goto st40;
-		case 99: goto st43;
-		case 100: goto st48;
-		case 101: goto st55;
-		case 102: goto st57;
-		case 108: goto st61;
-		case 109: goto st65;
-		case 110: goto st71;
-		case 112: goto st74;
-		case 114: goto st77;
-		case 115: goto st85;
-		case 116: goto st113;
-		case 118: goto st125;
-		case 119: goto st130;
+		case 98: goto st41;
+		case 99: goto st44;
+		case 100: goto st49;
+		case 101: goto st56;
+		case 102: goto st58;
+		case 108: goto st62;
+		case 109: goto st66;
+		case 110: goto st72;
+		case 112: goto st75;
+		case 114: goto st78;
+		case 115: goto st86;
+		case 116: goto st114;
+		case 118: goto st126;
+		case 119: goto st131;
 		case 124: goto st10;
 	}
 	if ( (*p) < 48 ) {
@@ -1043,7 +1046,7 @@ st16:
 	if ( ++p == pe )
 		goto _test_eof16;
 case 16:
-#line 1047 "volumeExprScanner.cc"
+#line 1050 "volumeExprScanner.cc"
 	switch( (*p) ) {
 		case 69: goto st5;
 		case 101: goto st5;
@@ -1094,7 +1097,7 @@ st19:
 	if ( ++p == pe )
 		goto _test_eof19;
 case 19:
-#line 1098 "volumeExprScanner.cc"
+#line 1101 "volumeExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr58;
 		case 69: goto st5;
@@ -1145,7 +1148,7 @@ tr68:
 #line 1 "NONE"
 	{te = p+1;}
 #line 342 "volumeExprScanner.rl"
-	{act = 70;}
+	{act = 71;}
 	goto st23;
 tr72:
 #line 1 "NONE"
@@ -1153,193 +1156,199 @@ tr72:
 #line 444 "volumeExprScanner.rl"
 	{act = 65;}
 	goto st23;
-tr78:
+tr79:
 #line 1 "NONE"
 	{te = p+1;}
 #line 412 "volumeExprScanner.rl"
 	{act = 40;}
 	goto st23;
 tr80:
+#line 1 "NONE"
+	{te = p+1;}
+#line 448 "volumeExprScanner.rl"
+	{act = 69;}
+	goto st23;
+tr82:
 #line 1 "NONE"
 	{te = p+1;}
 #line 411 "volumeExprScanner.rl"
 	{act = 39;}
 	goto st23;
-tr84:
+tr86:
 #line 1 "NONE"
 	{te = p+1;}
 #line 414 "volumeExprScanner.rl"
 	{act = 42;}
 	goto st23;
-tr89:
+tr91:
 #line 1 "NONE"
 	{te = p+1;}
 #line 430 "volumeExprScanner.rl"
 	{act = 55;}
 	goto st23;
-tr92:
+tr94:
 #line 1 "NONE"
 	{te = p+1;}
 #line 437 "volumeExprScanner.rl"
 	{act = 60;}
 	goto st23;
-tr96:
+tr98:
 #line 1 "NONE"
 	{te = p+1;}
 #line 407 "volumeExprScanner.rl"
 	{act = 35;}
 	goto st23;
-tr99:
+tr101:
 #line 1 "NONE"
 	{te = p+1;}
 #line 416 "volumeExprScanner.rl"
 	{act = 44;}
 	goto st23;
-tr106:
+tr108:
 #line 1 "NONE"
 	{te = p+1;}
 #line 399 "volumeExprScanner.rl"
 	{act = 27;}
 	goto st23;
-tr108:
+tr110:
 #line 1 "NONE"
 	{te = p+1;}
 #line 401 "volumeExprScanner.rl"
 	{act = 29;}
 	goto st23;
-tr112:
+tr114:
 #line 1 "NONE"
 	{te = p+1;}
 #line 446 "volumeExprScanner.rl"
 	{act = 67;}
 	goto st23;
-tr117:
+tr119:
 #line 1 "NONE"
 	{te = p+1;}
 #line 403 "volumeExprScanner.rl"
 	{act = 31;}
 	goto st23;
-tr121:
+tr123:
 #line 1 "NONE"
 	{te = p+1;}
 #line 429 "volumeExprScanner.rl"
 	{act = 54;}
 	goto st23;
-tr125:
+tr127:
 #line 1 "NONE"
 	{te = p+1;}
 #line 419 "volumeExprScanner.rl"
 	{act = 47;}
 	goto st23;
-tr126:
+tr128:
 #line 1 "NONE"
 	{te = p+1;}
 #line 428 "volumeExprScanner.rl"
 	{act = 53;}
 	goto st23;
-tr130:
+tr132:
 #line 1 "NONE"
 	{te = p+1;}
 #line 424 "volumeExprScanner.rl"
 	{act = 51;}
 	goto st23;
-tr131:
+tr133:
 #line 1 "NONE"
 	{te = p+1;}
 #line 398 "volumeExprScanner.rl"
 	{act = 26;}
 	goto st23;
-tr134:
+tr136:
 #line 1 "NONE"
 	{te = p+1;}
 #line 404 "volumeExprScanner.rl"
 	{act = 32;}
 	goto st23;
-tr136:
+tr138:
 #line 1 "NONE"
 	{te = p+1;}
 #line 423 "volumeExprScanner.rl"
 	{act = 50;}
 	goto st23;
-tr144:
+tr146:
 #line 1 "NONE"
 	{te = p+1;}
 #line 400 "volumeExprScanner.rl"
 	{act = 28;}
 	goto st23;
-tr145:
+tr147:
 #line 1 "NONE"
 	{te = p+1;}
 #line 434 "volumeExprScanner.rl"
 	{act = 59;}
 	goto st23;
-tr153:
+tr155:
 #line 1 "NONE"
 	{te = p+1;}
 #line 425 "volumeExprScanner.rl"
 	{act = 52;}
 	goto st23;
-tr155:
+tr157:
 #line 1 "NONE"
 	{te = p+1;}
 #line 415 "volumeExprScanner.rl"
 	{act = 43;}
 	goto st23;
-tr168:
+tr170:
 #line 1 "NONE"
 	{te = p+1;}
 #line 441 "volumeExprScanner.rl"
 	{act = 64;}
 	goto st23;
-tr171:
+tr173:
 #line 1 "NONE"
 	{te = p+1;}
 #line 406 "volumeExprScanner.rl"
 	{act = 34;}
 	goto st23;
-tr172:
+tr174:
 #line 1 "NONE"
 	{te = p+1;}
 #line 431 "volumeExprScanner.rl"
 	{act = 56;}
 	goto st23;
-tr180:
+tr182:
 #line 1 "NONE"
 	{te = p+1;}
 #line 440 "volumeExprScanner.rl"
 	{act = 63;}
 	goto st23;
-tr187:
+tr189:
 #line 1 "NONE"
 	{te = p+1;}
 #line 417 "volumeExprScanner.rl"
 	{act = 45;}
 	goto st23;
-tr195:
+tr197:
 #line 1 "NONE"
 	{te = p+1;}
-#line 448 "volumeExprScanner.rl"
-	{act = 69;}
+#line 449 "volumeExprScanner.rl"
+	{act = 70;}
 	goto st23;
-tr197:
+tr199:
 #line 1 "NONE"
 	{te = p+1;}
 #line 445 "volumeExprScanner.rl"
 	{act = 66;}
 	goto st23;
-tr202:
+tr204:
 #line 1 "NONE"
 	{te = p+1;}
 #line 438 "volumeExprScanner.rl"
 	{act = 61;}
 	goto st23;
-tr215:
+tr217:
 #line 1 "NONE"
 	{te = p+1;}
 #line 432 "volumeExprScanner.rl"
 	{act = 57;}
 	goto st23;
-tr217:
+tr219:
 #line 1 "NONE"
 	{te = p+1;}
 #line 433 "volumeExprScanner.rl"
@@ -1349,7 +1358,7 @@ st23:
 	if ( ++p == pe )
 		goto _test_eof23;
 case 23:
-#line 1353 "volumeExprScanner.cc"
+#line 1362 "volumeExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
@@ -1425,9 +1434,10 @@ case 27:
 		case 46: goto tr68;
 		case 95: goto tr68;
 		case 99: goto st28;
-		case 115: goto st30;
-		case 116: goto st32;
-		case 118: goto st35;
+		case 114: goto st30;
+		case 115: goto st31;
+		case 116: goto st33;
+		case 118: goto st36;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1463,7 +1473,7 @@ case 29:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto tr78;
+		case 115: goto tr79;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1481,7 +1491,7 @@ case 30:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 105: goto st31;
+		case 103: goto tr80;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1499,7 +1509,7 @@ case 31:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto tr80;
+		case 105: goto st32;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1517,13 +1527,13 @@ case 32:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st33;
+		case 110: goto tr82;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1535,13 +1545,13 @@ case 33:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st34;
+		case 97: goto st34;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1552,8 +1562,8 @@ st34:
 case 34:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 50: goto tr84;
 		case 95: goto tr68;
+		case 110: goto st35;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1563,15 +1573,15 @@ case 34:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr83;
+	goto tr67;
 st35:
 	if ( ++p == pe )
 		goto _test_eof35;
 case 35:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 50: goto tr86;
 		case 95: goto tr68;
-		case 101: goto st36;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1581,7 +1591,7 @@ case 35:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr85;
 st36:
 	if ( ++p == pe )
 		goto _test_eof36;
@@ -1589,7 +1599,7 @@ case 36:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st37;
+		case 101: goto st37;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1607,13 +1617,13 @@ case 37:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st38;
+		case 114: goto st38;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1625,13 +1635,13 @@ case 38:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st39;
+		case 97: goto st39;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1643,7 +1653,7 @@ case 39:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr89;
+		case 103: goto st40;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1661,7 +1671,7 @@ case 40:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st41;
+		case 101: goto tr91;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1697,7 +1707,7 @@ case 42:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 108: goto tr92;
+		case 111: goto st43;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1715,8 +1725,7 @@ case 43:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 98: goto st44;
-		case 111: goto st46;
+		case 108: goto tr94;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1734,7 +1743,8 @@ case 44:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st45;
+		case 98: goto st45;
+		case 111: goto st47;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1752,7 +1762,7 @@ case 45:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 116: goto tr96;
+		case 114: goto st46;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1770,7 +1780,7 @@ case 46:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st47;
+		case 116: goto tr98;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1788,7 +1798,7 @@ case 47:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto tr99;
+		case 115: goto st48;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1798,7 +1808,7 @@ case 47:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr98;
+	goto tr67;
 st48:
 	if ( ++p == pe )
 		goto _test_eof48;
@@ -1806,7 +1816,7 @@ case 48:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st49;
+		case 104: goto tr101;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1816,7 +1826,7 @@ case 48:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr100;
 st49:
 	if ( ++p == pe )
 		goto _test_eof49;
@@ -1824,7 +1834,7 @@ case 49:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st50;
+		case 101: goto st50;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1841,8 +1851,8 @@ st50:
 case 50:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 84: goto st51;
 		case 95: goto tr68;
+		case 103: goto st51;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1859,8 +1869,8 @@ st51:
 case 51:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 84: goto st52;
 		case 95: goto tr68;
-		case 111: goto st52;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1877,8 +1887,8 @@ st52:
 case 52:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 82: goto st53;
 		case 95: goto tr68;
+		case 111: goto st53;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1895,14 +1905,14 @@ st53:
 case 53:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 82: goto st54;
 		case 95: goto tr68;
-		case 97: goto st54;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1914,13 +1924,13 @@ case 54:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 100: goto tr106;
+		case 97: goto st55;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1932,7 +1942,7 @@ case 55:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 120: goto st56;
+		case 100: goto tr108;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1950,7 +1960,7 @@ case 56:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 112: goto tr108;
+		case 120: goto st57;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -1968,13 +1978,13 @@ case 57:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st58;
+		case 112: goto tr110;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -1986,13 +1996,13 @@ case 58:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 108: goto st59;
+		case 97: goto st59;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2004,7 +2014,7 @@ case 59:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st60;
+		case 108: goto st60;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2022,7 +2032,7 @@ case 60:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr112;
+		case 115: goto st61;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2040,7 +2050,7 @@ case 61:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st62;
+		case 101: goto tr114;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2058,7 +2068,7 @@ case 62:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st63;
+		case 111: goto st63;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2075,8 +2085,8 @@ st63:
 case 63:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 49: goto st64;
 		case 95: goto tr68;
+		case 103: goto st64;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2086,40 +2096,39 @@ case 63:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr115;
+	goto tr67;
 st64:
 	if ( ++p == pe )
 		goto _test_eof64;
 case 64:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 48: goto tr117;
+		case 49: goto st65;
 		case 95: goto tr68;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr117;
 st65:
 	if ( ++p == pe )
 		goto _test_eof65;
 case 65:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 48: goto tr119;
 		case 95: goto tr68;
-		case 97: goto st66;
-		case 105: goto st70;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2131,14 +2140,14 @@ case 66:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st67;
-		case 120: goto tr121;
+		case 97: goto st67;
+		case 105: goto st71;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2149,8 +2158,9 @@ st67:
 case 67:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 83: goto st68;
 		case 95: goto tr68;
+		case 103: goto st68;
+		case 120: goto tr123;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2160,15 +2170,15 @@ case 67:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr122;
+	goto tr67;
 st68:
 	if ( ++p == pe )
 		goto _test_eof68;
 case 68:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 83: goto st69;
 		case 95: goto tr68;
-		case 113: goto st69;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2178,7 +2188,7 @@ case 68:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr124;
 st69:
 	if ( ++p == pe )
 		goto _test_eof69;
@@ -2186,7 +2196,7 @@ case 69:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr125;
+		case 113: goto st70;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2204,7 +2214,7 @@ case 70:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto tr126;
+		case 114: goto tr127;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2222,7 +2232,7 @@ case 71:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st72;
+		case 110: goto tr128;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2240,7 +2250,7 @@ case 72:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st73;
+		case 101: goto st73;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2257,37 +2267,36 @@ st73:
 case 73:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 48: goto tr130;
 		case 95: goto tr68;
+		case 103: goto st74;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr129;
+	goto tr67;
 st74:
 	if ( ++p == pe )
 		goto _test_eof74;
 case 74:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 48: goto tr132;
 		case 95: goto tr68;
-		case 105: goto tr131;
-		case 111: goto st75;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr131;
 st75:
 	if ( ++p == pe )
 		goto _test_eof75;
@@ -2295,8 +2304,8 @@ case 75:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st76;
-		case 119: goto tr134;
+		case 105: goto tr133;
+		case 111: goto st76;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2313,36 +2322,37 @@ st76:
 case 76:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 48: goto tr136;
 		case 95: goto tr68;
+		case 115: goto st77;
+		case 119: goto tr136;
 	}
 	if ( (*p) < 65 ) {
-		if ( 49 <= (*p) && (*p) <= 57 )
+		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
 		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr135;
+	goto tr67;
 st77:
 	if ( ++p == pe )
 		goto _test_eof77;
 case 77:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 48: goto tr138;
 		case 95: goto tr68;
-		case 97: goto st78;
 	}
 	if ( (*p) < 65 ) {
-		if ( 48 <= (*p) && (*p) <= 57 )
+		if ( 49 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr137;
 st78:
 	if ( ++p == pe )
 		goto _test_eof78;
@@ -2350,14 +2360,13 @@ case 78:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 100: goto st79;
-		case 110: goto st84;
+		case 97: goto st79;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2368,8 +2377,9 @@ st79:
 case 79:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 84: goto st80;
 		case 95: goto tr68;
+		case 100: goto st80;
+		case 110: goto st85;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2386,8 +2396,8 @@ st80:
 case 80:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 84: goto st81;
 		case 95: goto tr68;
-		case 111: goto st81;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2404,8 +2414,8 @@ st81:
 case 81:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 68: goto st82;
 		case 95: goto tr68;
+		case 111: goto st82;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2422,8 +2432,8 @@ st82:
 case 82:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 68: goto st83;
 		case 95: goto tr68;
-		case 101: goto st83;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2441,7 +2451,7 @@ case 83:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto tr144;
+		case 101: goto st84;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2459,7 +2469,7 @@ case 84:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 100: goto tr145;
+		case 103: goto tr146;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2477,11 +2487,7 @@ case 85:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 105: goto st86;
-		case 112: goto st89;
-		case 113: goto st102;
-		case 117: goto st104;
-		case 121: goto st105;
+		case 100: goto tr147;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2499,8 +2505,11 @@ case 86:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st87;
-		case 110: goto st88;
+		case 105: goto st87;
+		case 112: goto st90;
+		case 113: goto st103;
+		case 117: goto st105;
+		case 121: goto st106;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2518,7 +2527,8 @@ case 87:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto tr153;
+		case 103: goto st88;
+		case 110: goto st89;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2536,7 +2546,7 @@ case 88:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto tr155;
+		case 110: goto tr155;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2546,7 +2556,7 @@ case 88:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr154;
+	goto tr67;
 st89:
 	if ( ++p == pe )
 		goto _test_eof89;
@@ -2554,7 +2564,7 @@ case 89:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto st90;
+		case 104: goto tr157;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2564,7 +2574,7 @@ case 89:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr156;
 st90:
 	if ( ++p == pe )
 		goto _test_eof90;
@@ -2572,7 +2582,7 @@ case 90:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st91;
+		case 104: goto st91;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2590,7 +2600,7 @@ case 91:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st92;
+		case 101: goto st92;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2608,7 +2618,7 @@ case 92:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 105: goto st93;
+		case 114: goto st93;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2626,7 +2636,7 @@ case 93:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 99: goto st94;
+		case 105: goto st94;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2644,13 +2654,13 @@ case 94:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st95;
+		case 99: goto st95;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2662,13 +2672,13 @@ case 95:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 108: goto st96;
+		case 97: goto st96;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -2679,8 +2689,8 @@ st96:
 case 96:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 84: goto st97;
 		case 95: goto tr68;
+		case 108: goto st97;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2697,8 +2707,8 @@ st97:
 case 97:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 84: goto st98;
 		case 95: goto tr68;
-		case 101: goto st98;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2716,7 +2726,7 @@ case 98:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st99;
+		case 101: goto st99;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2734,7 +2744,7 @@ case 99:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st100;
+		case 110: goto st100;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2752,7 +2762,7 @@ case 100:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st101;
+		case 115: goto st101;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2770,7 +2780,7 @@ case 101:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr168;
+		case 111: goto st102;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2788,7 +2798,7 @@ case 102:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st103;
+		case 114: goto tr170;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2806,7 +2816,7 @@ case 103:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 116: goto tr171;
+		case 114: goto st104;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2816,7 +2826,7 @@ case 103:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr170;
+	goto tr67;
 st104:
 	if ( ++p == pe )
 		goto _test_eof104;
@@ -2824,7 +2834,7 @@ case 104:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 109: goto tr172;
+		case 116: goto tr173;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2834,7 +2844,7 @@ case 104:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr172;
 st105:
 	if ( ++p == pe )
 		goto _test_eof105;
@@ -2842,7 +2852,7 @@ case 105:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 109: goto st106;
+		case 109: goto tr174;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2877,8 +2887,8 @@ st107:
 case 107:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 84: goto st108;
 		case 95: goto tr68;
+		case 109: goto st108;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2895,8 +2905,8 @@ st108:
 case 108:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 84: goto st109;
 		case 95: goto tr68;
-		case 101: goto st109;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2914,7 +2924,7 @@ case 109:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st110;
+		case 101: goto st110;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2932,7 +2942,7 @@ case 110:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st111;
+		case 110: goto st111;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2950,7 +2960,7 @@ case 111:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st112;
+		case 115: goto st112;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2968,7 +2978,7 @@ case 112:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr180;
+		case 111: goto st113;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -2986,16 +2996,13 @@ case 113:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st114;
-		case 101: goto st116;
-		case 105: goto st121;
-		case 114: goto st123;
+		case 114: goto tr182;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -3007,13 +3014,16 @@ case 114:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st115;
+		case 97: goto st115;
+		case 101: goto st117;
+		case 105: goto st122;
+		case 114: goto st124;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -3025,7 +3035,7 @@ case 115:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto tr187;
+		case 110: goto st116;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3035,7 +3045,7 @@ case 115:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr186;
+	goto tr67;
 st116:
 	if ( ++p == pe )
 		goto _test_eof116;
@@ -3043,7 +3053,7 @@ case 116:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 110: goto st117;
+		case 104: goto tr189;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3053,7 +3063,7 @@ case 116:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr188;
 st117:
 	if ( ++p == pe )
 		goto _test_eof117;
@@ -3061,7 +3071,7 @@ case 117:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 115: goto st118;
+		case 110: goto st118;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3079,7 +3089,7 @@ case 118:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st119;
+		case 115: goto st119;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3097,7 +3107,7 @@ case 119:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr191;
+		case 111: goto st120;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3108,19 +3118,14 @@ case 119:
 	} else
 		goto tr68;
 	goto tr67;
-tr191:
-#line 1 "NONE"
-	{te = p+1;}
-	goto st120;
 st120:
 	if ( ++p == pe )
 		goto _test_eof120;
 case 120:
-#line 3120 "volumeExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 58: goto st8;
 		case 95: goto tr68;
+		case 114: goto tr193;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3130,29 +3135,20 @@ case 120:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr192;
-st8:
-	if ( ++p == pe )
-		goto _test_eof8;
-case 8:
-	if ( (*p) == 58 )
-		goto st9;
-	goto tr9;
-st9:
-	if ( ++p == pe )
-		goto _test_eof9;
-case 9:
-	if ( (*p) == 73 )
-		goto tr11;
-	goto tr9;
+	goto tr67;
+tr193:
+#line 1 "NONE"
+	{te = p+1;}
+	goto st121;
 st121:
 	if ( ++p == pe )
 		goto _test_eof121;
 case 121:
+#line 3148 "volumeExprScanner.cc"
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 58: goto st8;
 		case 95: goto tr68;
-		case 109: goto st122;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3162,7 +3158,21 @@ case 121:
 			goto tr68;
 	} else
 		goto tr68;
-	goto tr67;
+	goto tr194;
+st8:
+	if ( ++p == pe )
+		goto _test_eof8;
+case 8:
+	if ( (*p) == 58 )
+		goto st9;
+	goto tr9;
+st9:
+	if ( ++p == pe )
+		goto _test_eof9;
+case 9:
+	if ( (*p) == 73 )
+		goto tr11;
+	goto tr9;
 st122:
 	if ( ++p == pe )
 		goto _test_eof122;
@@ -3170,7 +3180,7 @@ case 122:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr195;
+		case 109: goto st123;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3188,7 +3198,7 @@ case 123:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 117: goto st124;
+		case 101: goto tr197;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3206,7 +3216,7 @@ case 124:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr197;
+		case 117: goto st125;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3224,7 +3234,7 @@ case 125:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st126;
+		case 101: goto tr199;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3242,7 +3252,7 @@ case 126:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 99: goto st127;
+		case 101: goto st127;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3260,7 +3270,7 @@ case 127:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 116: goto st128;
+		case 99: goto st128;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3278,7 +3288,7 @@ case 128:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 111: goto st129;
+		case 116: goto st129;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3296,7 +3306,7 @@ case 129:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto tr202;
+		case 111: goto st130;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3314,7 +3324,7 @@ case 130:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st131;
+		case 114: goto tr204;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3332,7 +3342,7 @@ case 131:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 105: goto st132;
+		case 101: goto st132;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3350,7 +3360,7 @@ case 132:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st133;
+		case 105: goto st133;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3368,7 +3378,7 @@ case 133:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 104: goto st134;
+		case 103: goto st134;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3386,7 +3396,7 @@ case 134:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 116: goto st135;
+		case 104: goto st135;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3403,11 +3413,10 @@ st135:
 case 135:
 	switch( (*p) ) {
 		case 46: goto tr68;
-		case 65: goto st136;
-		case 83: goto st142;
 		case 95: goto tr68;
+		case 116: goto st136;
 	}
-	if ( (*p) < 66 ) {
+	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
@@ -3422,10 +3431,11 @@ st136:
 case 136:
 	switch( (*p) ) {
 		case 46: goto tr68;
+		case 65: goto st137;
+		case 83: goto st143;
 		case 95: goto tr68;
-		case 118: goto st137;
 	}
-	if ( (*p) < 65 ) {
+	if ( (*p) < 66 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
@@ -3441,7 +3451,7 @@ case 137:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto st138;
+		case 118: goto st138;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3459,7 +3469,7 @@ case 138:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 114: goto st139;
+		case 101: goto st139;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3477,13 +3487,13 @@ case 139:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 97: goto st140;
+		case 114: goto st140;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 98 <= (*p) && (*p) <= 122 )
+		if ( 97 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -3495,13 +3505,13 @@ case 140:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 103: goto st141;
+		case 97: goto st141;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
 			goto tr68;
 	} else if ( (*p) > 90 ) {
-		if ( 97 <= (*p) && (*p) <= 122 )
+		if ( 98 <= (*p) && (*p) <= 122 )
 			goto tr68;
 	} else
 		goto tr68;
@@ -3513,7 +3523,7 @@ case 141:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 101: goto tr215;
+		case 103: goto st142;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3531,7 +3541,7 @@ case 142:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 117: goto st143;
+		case 101: goto tr217;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3549,7 +3559,25 @@ case 143:
 	switch( (*p) ) {
 		case 46: goto tr68;
 		case 95: goto tr68;
-		case 109: goto tr217;
+		case 117: goto st144;
+	}
+	if ( (*p) < 65 ) {
+		if ( 48 <= (*p) && (*p) <= 57 )
+			goto tr68;
+	} else if ( (*p) > 90 ) {
+		if ( 97 <= (*p) && (*p) <= 122 )
+			goto tr68;
+	} else
+		goto tr68;
+	goto tr67;
+st144:
+	if ( ++p == pe )
+		goto _test_eof144;
+case 144:
+	switch( (*p) ) {
+		case 46: goto tr68;
+		case 95: goto tr68;
+		case 109: goto tr219;
 	}
 	if ( (*p) < 65 ) {
 		if ( 48 <= (*p) && (*p) <= 57 )
@@ -3685,9 +3713,9 @@ case 10:
 	_test_eof118: cs = 118; goto _test_eof; 
 	_test_eof119: cs = 119; goto _test_eof; 
 	_test_eof120: cs = 120; goto _test_eof; 
+	_test_eof121: cs = 121; goto _test_eof; 
 	_test_eof8: cs = 8; goto _test_eof; 
 	_test_eof9: cs = 9; goto _test_eof; 
-	_test_eof121: cs = 121; goto _test_eof; 
 	_test_eof122: cs = 122; goto _test_eof; 
 	_test_eof123: cs = 123; goto _test_eof; 
 	_test_eof124: cs = 124; goto _test_eof; 
@@ -3710,6 +3738,7 @@ case 10:
 	_test_eof141: cs = 141; goto _test_eof; 
 	_test_eof142: cs = 142; goto _test_eof; 
 	_test_eof143: cs = 143; goto _test_eof; 
+	_test_eof144: cs = 144; goto _test_eof; 
 	_test_eof10: cs = 10; goto _test_eof; 
 
 	_test_eof: {}
@@ -3740,8 +3769,8 @@ case 10:
 	case 31: goto tr67;
 	case 32: goto tr67;
 	case 33: goto tr67;
-	case 34: goto tr83;
-	case 35: goto tr67;
+	case 34: goto tr67;
+	case 35: goto tr85;
 	case 36: goto tr67;
 	case 37: goto tr67;
 	case 38: goto tr67;
@@ -3753,8 +3782,8 @@ case 10:
 	case 44: goto tr67;
 	case 45: goto tr67;
 	case 46: goto tr67;
-	case 47: goto tr98;
-	case 48: goto tr67;
+	case 47: goto tr67;
+	case 48: goto tr100;
 	case 49: goto tr67;
 	case 50: goto tr67;
 	case 51: goto tr67;
@@ -3769,21 +3798,21 @@ case 10:
 	case 60: goto tr67;
 	case 61: goto tr67;
 	case 62: goto tr67;
-	case 63: goto tr115;
-	case 64: goto tr67;
+	case 63: goto tr67;
+	case 64: goto tr117;
 	case 65: goto tr67;
 	case 66: goto tr67;
-	case 67: goto tr122;
-	case 68: goto tr67;
+	case 67: goto tr67;
+	case 68: goto tr124;
 	case 69: goto tr67;
 	case 70: goto tr67;
 	case 71: goto tr67;
 	case 72: goto tr67;
-	case 73: goto tr129;
-	case 74: goto tr67;
+	case 73: goto tr67;
+	case 74: goto tr131;
 	case 75: goto tr67;
-	case 76: goto tr135;
-	case 77: goto tr67;
+	case 76: goto tr67;
+	case 77: goto tr137;
 	case 78: goto tr67;
 	case 79: goto tr67;
 	case 80: goto tr67;
@@ -3794,8 +3823,8 @@ case 10:
 	case 85: goto tr67;
 	case 86: goto tr67;
 	case 87: goto tr67;
-	case 88: goto tr154;
-	case 89: goto tr67;
+	case 88: goto tr67;
+	case 89: goto tr156;
 	case 90: goto tr67;
 	case 91: goto tr67;
 	case 92: goto tr67;
@@ -3809,8 +3838,8 @@ case 10:
 	case 100: goto tr67;
 	case 101: goto tr67;
 	case 102: goto tr67;
-	case 103: goto tr170;
-	case 104: goto tr67;
+	case 103: goto tr67;
+	case 104: goto tr172;
 	case 105: goto tr67;
 	case 106: goto tr67;
 	case 107: goto tr67;
@@ -3821,15 +3850,15 @@ case 10:
 	case 112: goto tr67;
 	case 113: goto tr67;
 	case 114: goto tr67;
-	case 115: goto tr186;
-	case 116: goto tr67;
+	case 115: goto tr67;
+	case 116: goto tr188;
 	case 117: goto tr67;
 	case 118: goto tr67;
 	case 119: goto tr67;
-	case 120: goto tr192;
+	case 120: goto tr67;
+	case 121: goto tr194;
 	case 8: goto tr9;
 	case 9: goto tr9;
-	case 121: goto tr67;
 	case 122: goto tr67;
 	case 123: goto tr67;
 	case 124: goto tr67;
@@ -3852,13 +3881,14 @@ case 10:
 	case 141: goto tr67;
 	case 142: goto tr67;
 	case 143: goto tr67;
+	case 144: goto tr67;
 	}
 	}
 
 	_out: {}
 	}
 
-#line 690 "volumeExprScanner.rl"
+#line 691 "volumeExprScanner.rl"
    /* ^^^ FSM execution here ^^^ */;
 
     if (0 == cs)
diff --git a/src/finiteVolume/expressions/volume/volumeExprScanner.rl b/src/finiteVolume/expressions/volume/volumeExprScanner.rl
index d20c43c7c37c68d81d7b1e828bfad2120342c5ed..13cba251bdb964676cb10afd67ad4ff71d0b6d13 100644
--- a/src/finiteVolume/expressions/volume/volumeExprScanner.rl
+++ b/src/finiteVolume/expressions/volume/volumeExprScanner.rl
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -445,6 +445,7 @@ static int driverTokenType
     "true"      =>{ EMIT_TOKEN(LTRUE); };
     "false"     =>{ EMIT_TOKEN(LFALSE); };
     "tensor::I" =>{ EMIT_TOKEN(UNIT_TENSOR); };
+    "arg"       =>{ EMIT_TOKEN(ARG); };
     "time"      =>{ EMIT_TOKEN(TIME); };
 
     ## Identifier (field, etc - error if unknown)