[Templates-cvs] cvs commit: Template2/lib/Template Grammar.pm

cvs@template-toolkit.org cvs@template-toolkit.org


cvs         07/02/09 16:44:11

  Modified:    lib/Template Grammar.pm
  Log:
  rebuilt grammar to allow expressions as arguments
  
  Revision  Changes    Path
  2.26      +191 -153  Template2/lib/Template/Grammar.pm
  
  Index: Grammar.pm
  ===================================================================
  RCS file: /template-toolkit/Template2/lib/Template/Grammar.pm,v
  retrieving revision 2.25
  retrieving revision 2.26
  diff -u -r2.25 -r2.26
  --- Grammar.pm	2006/05/30 17:01:28	2.25
  +++ Grammar.pm	2007/02/09 16:44:11	2.26
  @@ -10,14 +10,14 @@
   #   Andy Wardley   <abw@wardley.org>
   #
   # COPYRIGHT
  -#   Copyright (C) 1996-2000 Andy Wardley.  All Rights Reserved.
  +#   Copyright (C) 1996-2006 Andy Wardley.  All Rights Reserved.
   #   Copyright (C) 1998-2000 Canon Research Centre Europe Ltd.
   #
   #   This module is free software; you can redistribute it and/or
   #   modify it under the same terms as Perl itself.
   #
   # REVISION
  -#   $Id: Grammar.pm,v 2.25 2006/05/30 17:01:28 abw Exp $
  +#   $Id: Grammar.pm,v 2.26 2007/02/09 16:44:11 abw Exp $
   #
   # IMPORTANT NOTE
   #   This module is constructed from the parser/Grammar.pm.skel file by
  @@ -34,6 +34,7 @@
   use warnings;
   
   our $VERSION  = 2.25;
  +
   my (@RESERVED, %CMPOP, $LEXTABLE, $RULES, $STATES);
   my ($factory, $rawstart);
   
  @@ -56,6 +57,7 @@
   # are not converted to their stringwise equivalents.  I added 'gt' et al, 
   # briefly for v2.04d and then took them out again in 2.04e.
   
  +
   %CMPOP = qw( 
       != ne
       == eq
  @@ -65,6 +67,9 @@
       <= <=
   );
   
  +#    eq eq  # add these lines to the above to 
  +#    lt lt  # enable the eq, lt and gt operators      
  +#    gt gt
   
   #========================================================================
   # Lexer Token Table
  @@ -160,10 +165,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -181,37 +186,37 @@
   		DEFAULT => -3,
   		GOTOS => {
   			'item' => 39,
  -			'node' => 23,
  -			'rawperl' => 59,
  -			'term' => 58,
   			'loop' => 4,
  -			'use' => 63,
  -			'expr' => 62,
   			'capture' => 42,
   			'statement' => 5,
   			'view' => 7,
   			'wrapper' => 46,
   			'atomexpr' => 48,
   			'chunk' => 11,
  -			'defblock' => 66,
   			'atomdir' => 12,
   			'anonblock' => 50,
   			'template' => 52,
  -			'sterm' => 68,
   			'defblockname' => 14,
  -			'filter' => 29,
   			'ident' => 16,
  +			'assign' => 19,
  +			'macro' => 20,
  +			'lterm' => 56,
  +			'node' => 23,
  +			'term' => 58,
  +			'rawperl' => 59,
  +			'expr' => 62,
  +			'use' => 63,
  +			'defblock' => 66,
  +			'filter' => 29,
  +			'sterm' => 68,
   			'perl' => 31,
  -			'setlist' => 70,
   			'chunks' => 33,
  -			'switch' => 34,
  +			'setlist' => 70,
   			'try' => 35,
  -			'assign' => 19,
  -			'block' => 72,
  +			'switch' => 34,
   			'directive' => 71,
  -			'macro' => 20,
  -			'condition' => 73,
  -			'lterm' => 56
  +			'block' => 72,
  +			'condition' => 73
   		}
   	},
   	{#State 1
  @@ -307,8 +312,8 @@
   			'node' => 23,
   			'ident' => 77,
   			'term' => 95,
  -			'list' => 92,
  -			'lterm' => 56
  +			'lterm' => 56,
  +			'list' => 92
   		}
   	},
   	{#State 10
  @@ -428,14 +433,14 @@
   			"\${" => 37
   		},
   		GOTOS => {
  -			'filepart' => 87,
   			'names' => 91,
  -			'nameargs' => 118,
  -			'filename' => 85,
   			'lvalue' => 112,
  -			'lnameargs' => 115,
   			'item' => 113,
  -			'name' => 82
  +			'name' => 82,
  +			'filepart' => 87,
  +			'filename' => 85,
  +			'nameargs' => 118,
  +			'lnameargs' => 115
   		}
   	},
   	{#State 26
  @@ -502,14 +507,14 @@
   			"\${" => 37
   		},
   		GOTOS => {
  -			'filepart' => 87,
   			'names' => 91,
  -			'nameargs' => 118,
  -			'filename' => 85,
   			'lvalue' => 112,
  -			'lnameargs' => 130,
   			'item' => 113,
  -			'name' => 82
  +			'name' => 82,
  +			'filepart' => 87,
  +			'filename' => 85,
  +			'nameargs' => 118,
  +			'lnameargs' => 130
   		}
   	},
   	{#State 33
  @@ -539,10 +544,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -804,13 +809,13 @@
   			"\${" => 37
   		},
   		GOTOS => {
  +			'expr' => 151,
   			'sterm' => 68,
   			'item' => 39,
  +			'assign' => 150,
   			'node' => 23,
   			'ident' => 149,
   			'term' => 58,
  -			'expr' => 151,
  -			'assign' => 150,
   			'lterm' => 56
   		}
   	},
  @@ -1015,10 +1020,10 @@
   	},
   	{#State 76
   		ACTIONS => {
  -			"\$" => 43,
   			'COMMA' => 171,
   			'LITERAL' => 75,
   			'IDENT' => 2,
  +			"\$" => 43,
   			"\${" => 37
   		},
   		DEFAULT => -30,
  @@ -1178,10 +1183,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -1329,13 +1334,13 @@
   			'atomexpr' => 48,
   			'atomdir' => 12,
   			'mdir' => 194,
  -			'sterm' => 68,
   			'filter' => 29,
  +			'sterm' => 68,
   			'ident' => 149,
   			'perl' => 31,
   			'setlist' => 70,
  -			'switch' => 34,
   			'try' => 35,
  +			'switch' => 34,
   			'assign' => 19,
   			'directive' => 196,
   			'condition' => 73,
  @@ -1393,13 +1398,13 @@
   			'atomexpr' => 48,
   			'atomdir' => 12,
   			'mdir' => 197,
  -			'sterm' => 68,
   			'filter' => 29,
  +			'sterm' => 68,
   			'ident' => 149,
   			'perl' => 31,
   			'setlist' => 70,
  -			'switch' => 34,
   			'try' => 35,
  +			'switch' => 34,
   			'assign' => 19,
   			'directive' => 196,
   			'condition' => 73,
  @@ -1549,13 +1554,13 @@
   	},
   	{#State 134
   		ACTIONS => {
  +			'DIV' => 159,
  +			'BINOP' => 161,
   			"+" => 157,
   			'CAT' => 163,
   			'CMPOP' => 164,
  -			'DIV' => 159,
   			'MOD' => 165,
  -			"/" => 166,
  -			'BINOP' => 161
  +			"/" => 166
   		},
   		DEFAULT => -142
   	},
  @@ -1676,14 +1681,14 @@
   			"\${" => 37
   		},
   		GOTOS => {
  -			'filepart' => 87,
   			'names' => 91,
  -			'nameargs' => 118,
  -			'filename' => 85,
   			'lvalue' => 112,
  -			'lnameargs' => 221,
   			'item' => 113,
  -			'name' => 82
  +			'name' => 82,
  +			'filepart' => 87,
  +			'filename' => 85,
  +			'nameargs' => 118,
  +			'lnameargs' => 221
   		}
   	},
   	{#State 144
  @@ -2107,10 +2112,10 @@
   	},
   	{#State 169
   		ACTIONS => {
  -			"\$" => 43,
   			'COMMA' => 171,
   			'LITERAL' => 75,
   			'IDENT' => 2,
  +			"\$" => 43,
   			"\${" => 37
   		},
   		DEFAULT => -31,
  @@ -2178,10 +2183,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -2288,8 +2293,7 @@
   	},
   	{#State 179
   		ACTIONS => {
  -			"{" => 30,
  -			'COMMA' => 258,
  +			'NOT' => 38,
   			'LITERAL' => 256,
   			'IDENT' => 2,
   			"\"" => 60,
  @@ -2297,16 +2301,20 @@
   			"[" => 9,
   			'NUMBER' => 26,
   			'REF' => 27,
  +			"{" => 30,
  +			'COMMA' => 258,
  +			"(" => 53,
   			"\${" => 37
   		},
   		DEFAULT => -163,
   		GOTOS => {
  +			'expr' => 257,
   			'sterm' => 68,
   			'item' => 254,
   			'param' => 255,
   			'node' => 23,
   			'ident' => 253,
  -			'term' => 257,
  +			'term' => 58,
   			'lterm' => 56
   		}
   	},
  @@ -2394,10 +2402,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -2415,37 +2423,37 @@
   		DEFAULT => -3,
   		GOTOS => {
   			'item' => 39,
  -			'node' => 23,
  -			'rawperl' => 59,
  -			'term' => 58,
   			'loop' => 4,
  -			'use' => 63,
  -			'expr' => 62,
   			'capture' => 42,
   			'statement' => 5,
   			'view' => 7,
   			'wrapper' => 46,
   			'atomexpr' => 48,
   			'chunk' => 11,
  -			'defblock' => 66,
   			'atomdir' => 12,
   			'anonblock' => 50,
   			'template' => 267,
  -			'sterm' => 68,
   			'defblockname' => 14,
  -			'filter' => 29,
   			'ident' => 16,
  +			'assign' => 19,
  +			'macro' => 20,
  +			'lterm' => 56,
  +			'node' => 23,
  +			'term' => 58,
  +			'rawperl' => 59,
  +			'expr' => 62,
  +			'use' => 63,
  +			'defblock' => 66,
  +			'filter' => 29,
  +			'sterm' => 68,
   			'perl' => 31,
  -			'setlist' => 70,
   			'chunks' => 33,
  -			'try' => 35,
  +			'setlist' => 70,
   			'switch' => 34,
  -			'assign' => 19,
  -			'block' => 72,
  +			'try' => 35,
   			'directive' => 71,
  -			'macro' => 20,
  -			'condition' => 73,
  -			'lterm' => 56
  +			'block' => 72,
  +			'condition' => 73
   		}
   	},
   	{#State 191
  @@ -2504,14 +2512,14 @@
   			"\${" => 37
   		},
   		GOTOS => {
  +			'expr' => 151,
   			'sterm' => 68,
   			'item' => 39,
  +			'assign' => 150,
   			'margs' => 270,
   			'node' => 23,
   			'ident' => 149,
   			'term' => 58,
  -			'expr' => 151,
  -			'assign' => 150,
   			'lterm' => 56
   		}
   	},
  @@ -2574,11 +2582,13 @@
   	},
   	{#State 202
   		ACTIONS => {
  +			'NOT' => 38,
   			"{" => 30,
   			'COMMA' => 258,
   			'LITERAL' => 256,
   			'IDENT' => 2,
   			"\"" => 60,
  +			"(" => 53,
   			"\$" => 43,
   			"[" => 9,
   			'NUMBER' => 26,
  @@ -2587,12 +2597,13 @@
   		},
   		DEFAULT => -64,
   		GOTOS => {
  +			'expr' => 257,
   			'sterm' => 68,
   			'item' => 254,
   			'param' => 255,
   			'node' => 23,
   			'ident' => 253,
  -			'term' => 257,
  +			'term' => 58,
   			'lterm' => 56
   		}
   	},
  @@ -2652,10 +2663,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -2748,10 +2759,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -2869,11 +2880,13 @@
   	},
   	{#State 216
   		ACTIONS => {
  +			'NOT' => 38,
   			"{" => 30,
   			'COMMA' => 258,
   			'LITERAL' => 256,
   			'IDENT' => 2,
   			"\"" => 60,
  +			"(" => 53,
   			"\$" => 43,
   			"[" => 9,
   			'NUMBER' => 26,
  @@ -2882,12 +2895,13 @@
   			"\${" => 37
   		},
   		GOTOS => {
  +			'expr' => 257,
   			'sterm' => 68,
   			'item' => 254,
   			'param' => 255,
   			'node' => 23,
   			'ident' => 253,
  -			'term' => 257,
  +			'term' => 58,
   			'lterm' => 56
   		}
   	},
  @@ -2918,10 +2932,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -2998,10 +3012,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -3138,10 +3152,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -3218,10 +3232,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -3335,20 +3349,20 @@
   	},
   	{#State 238
   		ACTIONS => {
  +			'DIV' => 159,
  +			'BINOP' => 161,
   			"+" => 157,
   			'CAT' => 163,
   			'CMPOP' => 164,
  -			'DIV' => 159,
   			'MOD' => 165,
  -			"/" => 166,
  -			'BINOP' => 161
  +			"/" => 166
   		},
   		DEFAULT => -140
   	},
   	{#State 239
   		ACTIONS => {
  -			"+" => 157,
   			'DIV' => 159,
  +			"+" => 157,
   			'MOD' => 165,
   			"/" => 166
   		},
  @@ -3356,34 +3370,34 @@
   	},
   	{#State 240
   		ACTIONS => {
  +			'DIV' => 159,
  +			'BINOP' => 161,
   			"+" => 157,
   			'CAT' => 163,
   			'CMPOP' => 164,
  -			'DIV' => 159,
   			'MOD' => 165,
  -			"/" => 166,
  -			'BINOP' => 161
  +			"/" => 166
   		},
   		DEFAULT => -141
   	},
   	{#State 241
   		ACTIONS => {
  +			'DIV' => 159,
  +			'BINOP' => 161,
   			"+" => 157,
   			'CMPOP' => 164,
  -			'DIV' => 159,
   			'MOD' => 165,
  -			"/" => 166,
  -			'BINOP' => 161
  +			"/" => 166
   		},
   		DEFAULT => -139
   	},
   	{#State 242
   		ACTIONS => {
  -			"+" => 157,
   			'DIV' => 159,
  +			'BINOP' => 161,
  +			"+" => 157,
   			'MOD' => 165,
  -			"/" => 166,
  -			'BINOP' => 161
  +			"/" => 166
   		},
   		DEFAULT => -138
   	},
  @@ -3433,8 +3447,7 @@
   	},
   	{#State 249
   		ACTIONS => {
  -			"{" => 30,
  -			'COMMA' => 258,
  +			'NOT' => 38,
   			'LITERAL' => 256,
   			'IDENT' => 2,
   			"\"" => 60,
  @@ -3442,16 +3455,20 @@
   			"[" => 9,
   			'NUMBER' => 26,
   			'REF' => 27,
  +			"{" => 30,
  +			'COMMA' => 258,
  +			"(" => 53,
   			"\${" => 37
   		},
   		DEFAULT => -162,
   		GOTOS => {
  +			'expr' => 257,
   			'sterm' => 68,
   			'item' => 254,
   			'param' => 255,
   			'node' => 23,
   			'ident' => 253,
  -			'term' => 257,
  +			'term' => 58,
   			'lterm' => 56
   		}
   	},
  @@ -3463,11 +3480,13 @@
   	},
   	{#State 252
   		ACTIONS => {
  +			'NOT' => 38,
   			"{" => 30,
   			'COMMA' => 258,
   			'LITERAL' => 256,
   			'IDENT' => 2,
   			"\"" => 60,
  +			"(" => 53,
   			"\$" => 43,
   			"[" => 9,
   			'NUMBER' => 26,
  @@ -3476,12 +3495,13 @@
   			"\${" => 37
   		},
   		GOTOS => {
  +			'expr' => 257,
   			'sterm' => 68,
   			'item' => 254,
   			'param' => 255,
   			'node' => 23,
   			'ident' => 253,
  -			'term' => 257,
  +			'term' => 58,
   			'lterm' => 56
   		}
   	},
  @@ -3509,6 +3529,18 @@
   		DEFAULT => -112
   	},
   	{#State 257
  +		ACTIONS => {
  +			"+" => 157,
  +			'CAT' => 163,
  +			'CMPOP' => 164,
  +			"?" => 158,
  +			'DIV' => 159,
  +			'MOD' => 165,
  +			"/" => 166,
  +			'AND' => 160,
  +			'BINOP' => 161,
  +			'OR' => 162
  +		},
   		DEFAULT => -152
   	},
   	{#State 258
  @@ -3588,10 +3620,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -3643,9 +3675,9 @@
   	},
   	{#State 269
   		ACTIONS => {
  -			'COMMA' => -96,
   			'IDENT' => -96,
  -			")" => -96
  +			")" => -96,
  +			'COMMA' => -96
   		},
   		DEFAULT => -130
   	},
  @@ -3695,10 +3727,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -3769,31 +3801,31 @@
   	},
   	{#State 278
   		ACTIONS => {
  +			'DIV' => 159,
  +			'AND' => 160,
  +			'BINOP' => 161,
  +			'OR' => 162,
   			"+" => 157,
   			'CAT' => 163,
   			'CMPOP' => 164,
   			"?" => 158,
  -			'DIV' => 159,
   			'MOD' => 165,
  -			"/" => 166,
  -			'AND' => 160,
  -			'BINOP' => 161,
  -			'OR' => 162
  +			"/" => 166
   		},
   		DEFAULT => -124
   	},
   	{#State 279
   		ACTIONS => {
  +			'DIV' => 159,
  +			'AND' => 160,
  +			'BINOP' => 161,
  +			'OR' => 162,
   			"+" => 157,
   			'CAT' => 163,
   			'CMPOP' => 164,
   			"?" => 158,
  -			'DIV' => 159,
   			'MOD' => 165,
  -			"/" => 166,
  -			'AND' => 160,
  -			'BINOP' => 161,
  -			'OR' => 162
  +			"/" => 166
   		},
   		DEFAULT => -123
   	},
  @@ -3824,10 +3856,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -3960,10 +3992,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -4101,10 +4133,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -4190,10 +4222,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -4315,13 +4347,13 @@
   			'atomexpr' => 48,
   			'atomdir' => 12,
   			'mdir' => 328,
  -			'sterm' => 68,
   			'filter' => 29,
  +			'sterm' => 68,
   			'ident' => 149,
   			'perl' => 31,
   			'setlist' => 70,
  -			'switch' => 34,
   			'try' => 35,
  +			'switch' => 34,
   			'assign' => 19,
   			'directive' => 196,
   			'condition' => 73,
  @@ -4333,11 +4365,13 @@
   	},
   	{#State 305
   		ACTIONS => {
  +			'NOT' => 38,
   			"{" => 30,
   			'COMMA' => 258,
   			'LITERAL' => 256,
   			'IDENT' => 2,
   			"\"" => 60,
  +			"(" => 53,
   			"\$" => 43,
   			"[" => 9,
   			'NUMBER' => 26,
  @@ -4346,22 +4380,25 @@
   		},
   		DEFAULT => -62,
   		GOTOS => {
  +			'expr' => 257,
   			'sterm' => 68,
   			'item' => 254,
   			'param' => 255,
   			'node' => 23,
   			'ident' => 253,
  -			'term' => 257,
  +			'term' => 58,
   			'lterm' => 56
   		}
   	},
   	{#State 306
   		ACTIONS => {
  +			'NOT' => 38,
   			"{" => 30,
   			'COMMA' => 258,
   			'LITERAL' => 256,
   			'IDENT' => 2,
   			"\"" => 60,
  +			"(" => 53,
   			"\$" => 43,
   			"[" => 9,
   			'NUMBER' => 26,
  @@ -4370,12 +4407,13 @@
   		},
   		DEFAULT => -63,
   		GOTOS => {
  +			'expr' => 257,
   			'sterm' => 68,
   			'item' => 254,
   			'param' => 255,
   			'node' => 23,
   			'ident' => 253,
  -			'term' => 257,
  +			'term' => 58,
   			'lterm' => 56
   		}
   	},
  @@ -4436,16 +4474,16 @@
   	},
   	{#State 316
   		ACTIONS => {
  +			'DIV' => 159,
  +			'AND' => 160,
  +			'BINOP' => 161,
  +			'OR' => 162,
   			"+" => 157,
   			'CAT' => 163,
   			'CMPOP' => 164,
   			"?" => 158,
  -			'DIV' => 159,
   			'MOD' => 165,
  -			"/" => 166,
  -			'AND' => 160,
  -			'BINOP' => 161,
  -			'OR' => 162
  +			"/" => 166
   		},
   		DEFAULT => -143
   	},
  @@ -4481,10 +4519,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -4597,10 +4635,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -4687,10 +4725,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -4785,10 +4823,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -4884,10 +4922,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -4990,10 +5028,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,
  @@ -5070,10 +5108,10 @@
   			'WRAPPER' => 55,
   			";" => -18,
   			'FOR' => 21,
  -			'NEXT' => 22,
   			'LITERAL' => 57,
  -			'TEXT' => 24,
  +			'NEXT' => 22,
   			"\"" => 60,
  +			'TEXT' => 24,
   			'PROCESS' => 61,
   			'RETURN' => 64,
   			'FILTER' => 25,