Server : Apache System : Linux host44.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64 User : vapecompany ( 2719) PHP Version : 7.4.33 Disable Function : NONE Directory : /proc/thread-self/root/usr/local/lib64/perl5/Template/ |
Upload File : |
#============================================================= -*-Perl-*- # # Template::Grammar # # DESCRIPTION # Grammar file for the Template Toolkit language containing token # definitions and parser state/rules tables generated by Parse::Yapp. # # AUTHOR # Andy Wardley <abw@wardley.org> # # COPYRIGHT # Copyright (C) 1996-2022 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. # # IMPORTANT NOTE # This module is constructed from the parser/Grammar.pm.skel file by # running the parser/yc script. You only need to do this if # you # have modified the grammar in the parser/Parser.yp file and need # # to-recompile it. See the README in the 'parser' directory for # more information (sub-directory of the Template distribution). # #======================================================================== package Template::Grammar; use strict; use warnings; our $VERSION = '3.100'; my (@RESERVED, %CMPOP, $LEXTABLE, $RULES, $STATES); my ($factory, $rawstart); #======================================================================== # Reserved words, comparison and binary operators #======================================================================== BEGIN { @RESERVED = qw( GET CALL SET DEFAULT INSERT INCLUDE PROCESS WRAPPER BLOCK END USE PLUGIN FILTER MACRO PERL RAWPERL TO STEP AND OR NOT DIV MOD IF UNLESS ELSE ELSIF FOR NEXT WHILE SWITCH CASE META IN TRY THROW CATCH FINAL LAST RETURN STOP CLEAR VIEW DEBUG ); # for historical reasons, != and == are converted to ne and eq to perform # stringwise comparison (mainly because it doesn't generate "non-numerical # comparison" warnings which != and == can) but the others (e.g. < > <= >=) # 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 < < > > >= >= <= <= ); # eq eq # add these lines to the above to # lt lt # enable the eq, lt and gt operators # gt gt #======================================================================== # Lexer Token Table #======================================================================== # lookup table used by lexer is initialised with special-cases $LEXTABLE = { 'FOREACH' => 'FOR', 'BREAK' => 'LAST', '&&' => 'AND', '||' => 'OR', '!' => 'NOT', '|' => 'FILTER', '.' => 'DOT', '_' => 'CAT', '..' => 'TO', # ':' => 'MACRO', '=' => 'ASSIGN', '=>' => 'ASSIGN', # '->' => 'ARROW', ',' => 'COMMA', '\\' => 'REF', 'and' => 'AND', # explicitly specified so that qw( and or 'or' => 'OR', # not ) can always be used in lower case, 'not' => 'NOT', # regardless of ANYCASE flag 'mod' => 'MOD', 'div' => 'DIV', }; # localise the temporary variables needed to complete lexer table { my @tokens = qw< ( ) [ ] { } ${ $ + / ; : ? >; my @cmpop = keys %CMPOP; my @binop = qw( - * % ); # '+' and '/' above, in @tokens # fill lexer table, slice by slice, with reserved words and operators @$LEXTABLE{ @RESERVED, @cmpop, @binop, @tokens } = ( @RESERVED, ('CMPOP') x @cmpop, ('BINOP') x @binop, @tokens ); } } # --- END BEGIN #======================================================================== # CLASS METHODS #======================================================================== sub new { my $class = shift; bless { LEXTABLE => $LEXTABLE, STATES => $STATES, RULES => $RULES, }, $class; } # update method to set package-scoped $factory lexical sub install_factory { my ($self, $new_factory) = @_; $factory = $new_factory; } BEGIN { #======================================================================== # States #======================================================================== $STATES = [ {#State 0 ACTIONS => { 'INSERT' => 66, 'TRY' => 67, 'FILTER' => 68, 'WHILE' => 60, 'USE' => 59, "(" => 61, "{" => 62, 'PERL' => 46, "\"" => 47, "\$" => 48, 'SET' => 52, 'META' => 53, 'NEXT' => 49, 'IF' => 34, 'INCLUDE' => 43, 'RAWPERL' => 44, 'THROW' => 38, 'STOP' => 39, "[" => 41, 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26, 'GET' => 27, 'LITERAL' => 31, 'BLOCK' => 32, 'FOR' => 30, 'LAST' => 14, 'DEBUG' => 16, 'REF' => 17, 'NOT' => 12, 'IDENT' => 13, 'WRAPPER' => 19, 'CLEAR' => 20, 'RETURN' => 22, "\${" => 21, ";" => -18, 'TEXT' => 7, 'CALL' => 8, 'MACRO' => 10, 'UNLESS' => 9, 'DEFAULT' => 2, 'PROCESS' => 4 }, DEFAULT => -3, GOTOS => { 'loop' => 45, 'statement' => 11, 'template' => 54, 'atomdir' => 6, 'directive' => 51, 'defblockname' => 50, 'atomexpr' => 35, 'setlist' => 37, 'rawperl' => 3, 'sterm' => 36, 'block' => 1, 'lterm' => 42, 'try' => 5, 'view' => 40, 'ident' => 24, 'condition' => 33, 'perl' => 73, 'anonblock' => 28, 'macro' => 70, 'filter' => 69, 'use' => 72, 'chunk' => 71, 'item' => 29, 'node' => 57, 'term' => 15, 'wrapper' => 56, 'capture' => 55, 'assign' => 18, 'expr' => 58, 'chunks' => 63, 'defblock' => 65, 'switch' => 64 } }, {#State 1 DEFAULT => -1 }, {#State 2 ACTIONS => { 'IDENT' => 13, 'LITERAL' => 75, "\${" => 21, "\$" => 48 }, GOTOS => { 'item' => 29, 'ident' => 74, 'assign' => 18, 'node' => 57, 'setlist' => 76 } }, {#State 3 DEFAULT => -15 }, {#State 4 ACTIONS => { "\$" => 79, "\"" => 80, 'LITERAL' => 82, 'FILENAME' => 81, 'IDENT' => 84, 'NUMBER' => 83 }, GOTOS => { 'names' => 78, 'name' => 86, 'filename' => 87, 'filepart' => 77, 'nameargs' => 85 } }, {#State 5 DEFAULT => -24 }, {#State 6 ACTIONS => { ";" => -20 }, DEFAULT => -27 }, {#State 7 DEFAULT => -6 }, {#State 8 ACTIONS => { 'REF' => 17, 'NOT' => 12, 'IDENT' => 13, "\${" => 21, "[" => 41, "{" => 62, "(" => 61, "\$" => 48, "\"" => 47, 'NUMBER' => 23, 'LITERAL' => 89 }, GOTOS => { 'ident' => 88, 'node' => 57, 'term' => 15, 'sterm' => 36, 'item' => 29, 'expr' => 90, 'lterm' => 42 } }, {#State 9 ACTIONS => { 'LITERAL' => 89, "\${" => 21, "(" => 61, "{" => 62, "[" => 41, "\"" => 47, "\$" => 48, 'REF' => 17, 'NUMBER' => 23, 'NOT' => 12, 'IDENT' => 13 }, GOTOS => { 'expr' => 91, 'ident' => 88, 'item' => 29, 'lterm' => 42, 'term' => 15, 'sterm' => 36, 'node' => 57 } }, {#State 10 ACTIONS => { 'IDENT' => 92 } }, {#State 11 ACTIONS => { ";" => 93 } }, {#State 12 ACTIONS => { "(" => 61, "{" => 62, "[" => 41, 'LITERAL' => 89, "\${" => 21, 'NUMBER' => 23, 'IDENT' => 13, 'NOT' => 12, "\"" => 47, 'REF' => 17, "\$" => 48 }, GOTOS => { 'lterm' => 42, 'sterm' => 36, 'term' => 15, 'node' => 57, 'expr' => 94, 'ident' => 88, 'item' => 29 } }, {#State 13 DEFAULT => -130 }, {#State 14 DEFAULT => -39 }, {#State 15 DEFAULT => -146 }, {#State 16 ACTIONS => { "\$" => 79, "\"" => 80, 'LITERAL' => 82, 'FILENAME' => 81, 'IDENT' => 84, 'NUMBER' => 83 }, GOTOS => { 'names' => 78, 'filename' => 87, 'name' => 86, 'filepart' => 77, 'nameargs' => 95 } }, {#State 17 ACTIONS => { 'IDENT' => 13, "\${" => 21, "\$" => 48 }, GOTOS => { 'item' => 29, 'ident' => 96, 'node' => 57 } }, {#State 18 DEFAULT => -149 }, {#State 19 ACTIONS => { 'LITERAL' => 82, "\$" => 79, "\"" => 80, 'IDENT' => 84, 'NUMBER' => 83, 'FILENAME' => 81 }, GOTOS => { 'filename' => 87, 'name' => 86, 'names' => 78, 'nameargs' => 97, 'filepart' => 77 } }, {#State 20 DEFAULT => -38 }, {#State 21 ACTIONS => { 'NUMBER' => 23, 'IDENT' => 13, "\"" => 47, "\$" => 48, 'REF' => 17, 'LITERAL' => 89, "\${" => 21 }, GOTOS => { 'ident' => 88, 'item' => 29, 'sterm' => 98, 'node' => 57 } }, {#State 22 DEFAULT => -36 }, {#State 23 DEFAULT => -113 }, {#State 24 ACTIONS => { 'ASSIGN' => 99, 'DOT' => 100 }, DEFAULT => -109 }, {#State 25 ACTIONS => { 'FILENAME' => 81, 'IDENT' => 84, 'NUMBER' => 83, "\$" => 79, "\"" => 80, 'LITERAL' => 82 }, GOTOS => { 'name' => 86, 'filename' => 87, 'names' => 78, 'nameargs' => 101, 'filepart' => 77 } }, {#State 26 ACTIONS => { 'IDENT' => 13, 'NOT' => 12, 'REF' => 17, "{" => 62, "[" => 41, "(" => 61, "\${" => 21, 'NUMBER' => 23, "\$" => 48, "\"" => 47, 'LITERAL' => 89 }, GOTOS => { 'lterm' => 42, 'node' => 57, 'term' => 15, 'sterm' => 36, 'ident' => 88, 'expr' => 102, 'item' => 29 } }, {#State 27 ACTIONS => { 'LITERAL' => 89, "\"" => 47, "\$" => 48, 'NUMBER' => 23, "\${" => 21, "(" => 61, "{" => 62, "[" => 41, 'REF' => 17, 'NOT' => 12, 'IDENT' => 13 }, GOTOS => { 'sterm' => 36, 'term' => 15, 'node' => 57, 'lterm' => 42, 'item' => 29, 'expr' => 103, 'ident' => 88 } }, {#State 28 DEFAULT => -10 }, {#State 29 ACTIONS => { "(" => 104 }, DEFAULT => -128 }, {#State 30 ACTIONS => { 'NUMBER' => 23, 'IDENT' => 107, "\"" => 47, "\$" => 48, 'REF' => 17, "[" => 41, "{" => 62, 'LITERAL' => 89, "\${" => 21 }, GOTOS => { 'sterm' => 36, 'term' => 106, 'node' => 57, 'loopvar' => 105, 'lterm' => 42, 'item' => 29, 'ident' => 88 } }, {#State 31 ACTIONS => { 'ASSIGN' => 108 }, DEFAULT => -112 }, {#State 32 ACTIONS => { 'LITERAL' => 110, 'NUMBER' => 83, 'IDENT' => 109, 'FILENAME' => 81 }, DEFAULT => -87, GOTOS => { 'blockname' => 112, 'filepart' => 77, 'filename' => 114, 'blockargs' => 111, 'meta' => 113, 'metadata' => 115 } }, {#State 33 DEFAULT => -21 }, {#State 34 ACTIONS => { 'LITERAL' => 89, "\${" => 21, "(" => 61, "[" => 41, "{" => 62, "\"" => 47, "\$" => 48, 'REF' => 17, 'NUMBER' => 23, 'NOT' => 12, 'IDENT' => 13 }, GOTOS => { 'lterm' => 42, 'sterm' => 36, 'term' => 15, 'node' => 57, 'expr' => 116, 'ident' => 88, 'item' => 29 } }, {#State 35 ACTIONS => { 'IF' => 122, 'WRAPPER' => 117, 'FOR' => 118, 'UNLESS' => 119, 'FILTER' => 121, 'WHILE' => 120 } }, {#State 36 DEFAULT => -104 }, {#State 37 ACTIONS => { "\$" => 48, 'IDENT' => 13, 'COMMA' => 124, 'LITERAL' => 75, "\${" => 21 }, DEFAULT => -19, GOTOS => { 'node' => 57, 'assign' => 123, 'ident' => 74, 'item' => 29 } }, {#State 38 ACTIONS => { 'LITERAL' => 82, "\$" => 79, "\"" => 80, 'IDENT' => 84, 'NUMBER' => 83, 'FILENAME' => 81 }, GOTOS => { 'names' => 78, 'filename' => 87, 'name' => 86, 'filepart' => 77, 'nameargs' => 125 } }, {#State 39 DEFAULT => -37 }, {#State 40 DEFAULT => -14 }, {#State 41 ACTIONS => { "\${" => 21, 'LITERAL' => 89, "{" => 62, "[" => 41, "\$" => 48, 'REF' => 17, "\"" => 47, 'IDENT' => 13, 'NUMBER' => 23, "]" => 126 }, GOTOS => { 'term' => 127, 'sterm' => 128, 'node' => 57, 'ident' => 88, 'lterm' => 42, 'range' => 130, 'list' => 129, 'item' => 29 } }, {#State 42 DEFAULT => -103 }, {#State 43 ACTIONS => { 'FILENAME' => 81, 'IDENT' => 84, 'NUMBER' => 83, "\$" => 79, "\"" => 80, 'LITERAL' => 82 }, GOTOS => { 'nameargs' => 131, 'filepart' => 77, 'name' => 86, 'filename' => 87, 'names' => 78 } }, {#State 44 DEFAULT => -78, GOTOS => { '@5-1' => 132 } }, {#State 45 DEFAULT => -23 }, {#State 46 ACTIONS => { ";" => 133 } }, {#State 47 DEFAULT => -176, GOTOS => { 'quoted' => 134 } }, {#State 48 ACTIONS => { 'IDENT' => 135 } }, {#State 49 DEFAULT => -40 }, {#State 50 ACTIONS => { 'IDENT' => 136 }, DEFAULT => -87, GOTOS => { 'metadata' => 115, 'blockargs' => 137, 'meta' => 113 } }, {#State 51 DEFAULT => -8 }, {#State 52 ACTIONS => { 'LITERAL' => 75, "\${" => 21, "\$" => 48, 'IDENT' => 13 }, GOTOS => { 'node' => 57, 'setlist' => 138, 'item' => 29, 'assign' => 18, 'ident' => 74 } }, {#State 53 ACTIONS => { 'IDENT' => 136 }, GOTOS => { 'meta' => 113, 'metadata' => 139 } }, {#State 54 ACTIONS => { '' => 140 } }, {#State 55 DEFAULT => -11 }, {#State 56 DEFAULT => -42 }, {#State 57 DEFAULT => -127 }, {#State 58 ACTIONS => { 'CAT' => 147, 'AND' => 149, 'CMPOP' => 148, "+" => 150, 'MOD' => 141, 'BINOP' => 145, "/" => 144, ";" => -16, "?" => 142, 'OR' => 143, 'DIV' => 146 }, DEFAULT => -26 }, {#State 59 ACTIONS => { "\$" => 151, "\"" => 152, "\${" => 21, 'LITERAL' => 155, 'FILENAME' => 81, 'IDENT' => 157, 'NUMBER' => 83 }, GOTOS => { 'item' => 156, 'filepart' => 77, 'names' => 78, 'nameargs' => 158, 'lvalue' => 154, 'lnameargs' => 153, 'name' => 86, 'filename' => 87 } }, {#State 60 ACTIONS => { "(" => 61, "[" => 41, "{" => 62, 'LITERAL' => 89, "\${" => 21, 'NUMBER' => 23, 'NOT' => 12, 'IDENT' => 13, "\"" => 47, 'REF' => 17, "\$" => 48 }, GOTOS => { 'item' => 29, 'ident' => 88, 'expr' => 159, 'node' => 57, 'term' => 15, 'sterm' => 36, 'lterm' => 42 } }, {#State 61 ACTIONS => { "\"" => 47, "\$" => 48, 'REF' => 17, 'NUMBER' => 23, 'NOT' => 12, 'IDENT' => 13, 'LITERAL' => 31, "\${" => 21, "(" => 61, "[" => 41, "{" => 62 }, GOTOS => { 'item' => 29, 'assign' => 161, 'expr' => 160, 'lterm' => 42, 'ident' => 162, 'node' => 57, 'sterm' => 36, 'term' => 15 } }, {#State 62 ACTIONS => { "\$" => 48, 'LITERAL' => 163, "\${" => 21, 'IDENT' => 13 }, DEFAULT => -119, GOTOS => { 'item' => 165, 'params' => 167, 'param' => 164, 'hash' => 166 } }, {#State 63 ACTIONS => { "\"" => 47, "\$" => 48, 'PERL' => 46, 'META' => 53, 'SET' => 52, 'NEXT' => 49, 'IF' => 34, 'INCLUDE' => 43, 'RAWPERL' => 44, "[" => 41, 'THROW' => 38, 'STOP' => 39, 'INSERT' => 66, 'TRY' => 67, 'FILTER' => 68, "(" => 61, "{" => 62, 'WHILE' => 60, 'USE' => 59, ";" => -18, 'CALL' => 8, 'TEXT' => 7, 'UNLESS' => 9, 'MACRO' => 10, 'DEFAULT' => 2, 'PROCESS' => 4, 'GET' => 27, 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26, 'LITERAL' => 31, 'BLOCK' => 32, 'FOR' => 30, 'REF' => 17, 'DEBUG' => 16, 'LAST' => 14, 'NOT' => 12, 'IDENT' => 13, 'WRAPPER' => 19, "\${" => 21, 'RETURN' => 22, 'CLEAR' => 20 }, DEFAULT => -2, GOTOS => { 'term' => 15, 'node' => 57, 'wrapper' => 56, 'capture' => 55, 'expr' => 58, 'assign' => 18, 'switch' => 64, 'defblock' => 65, 'ident' => 24, 'condition' => 33, 'perl' => 73, 'filter' => 69, 'anonblock' => 28, 'macro' => 70, 'item' => 29, 'chunk' => 168, 'use' => 72, 'atomexpr' => 35, 'sterm' => 36, 'rawperl' => 3, 'setlist' => 37, 'lterm' => 42, 'view' => 40, 'try' => 5, 'loop' => 45, 'statement' => 11, 'atomdir' => 6, 'defblockname' => 50, 'directive' => 51 } }, {#State 64 DEFAULT => -22 }, {#State 65 DEFAULT => -9 }, {#State 66 ACTIONS => { 'FILENAME' => 81, 'NUMBER' => 83, 'IDENT' => 84, "\"" => 80, "\$" => 79, 'LITERAL' => 82 }, GOTOS => { 'nameargs' => 169, 'filepart' => 77, 'filename' => 87, 'name' => 86, 'names' => 78 } }, {#State 67 ACTIONS => { ";" => 170 } }, {#State 68 ACTIONS => { "\$" => 151, "\"" => 152, "\${" => 21, 'LITERAL' => 155, 'FILENAME' => 81, 'IDENT' => 157, 'NUMBER' => 83 }, GOTOS => { 'filename' => 87, 'name' => 86, 'lnameargs' => 171, 'lvalue' => 154, 'nameargs' => 158, 'names' => 78, 'filepart' => 77, 'item' => 156 } }, {#State 69 DEFAULT => -43 }, {#State 70 DEFAULT => -12 }, {#State 71 DEFAULT => -5 }, {#State 72 DEFAULT => -13 }, {#State 73 DEFAULT => -25 }, {#State 74 ACTIONS => { 'ASSIGN' => 172, 'DOT' => 100 } }, {#State 75 ACTIONS => { 'ASSIGN' => 108 } }, {#State 76 ACTIONS => { "\$" => 48, 'COMMA' => 124, 'LITERAL' => 75, 'IDENT' => 13, "\${" => 21 }, DEFAULT => -31, GOTOS => { 'node' => 57, 'ident' => 74, 'assign' => 123, 'item' => 29 } }, {#State 77 DEFAULT => -171 }, {#State 78 ACTIONS => { "(" => 173, "+" => 175 }, DEFAULT => -156, GOTOS => { 'args' => 174 } }, {#State 79 ACTIONS => { 'IDENT' => 13, "\${" => 21, "\$" => 48 }, GOTOS => { 'node' => 57, 'ident' => 176, 'item' => 29 } }, {#State 80 DEFAULT => -176, GOTOS => { 'quoted' => 177 } }, {#State 81 DEFAULT => -172 }, {#State 82 DEFAULT => -169 }, {#State 83 DEFAULT => -174 }, {#State 84 DEFAULT => -173 }, {#State 85 DEFAULT => -34 }, {#State 86 DEFAULT => -166 }, {#State 87 ACTIONS => { 'DOT' => 178 }, DEFAULT => -168 }, {#State 88 ACTIONS => { 'DOT' => 100 }, DEFAULT => -109 }, {#State 89 DEFAULT => -112 }, {#State 90 ACTIONS => { 'MOD' => 141, 'BINOP' => 145, "/" => 144, "?" => 142, 'OR' => 143, 'DIV' => 146, 'CAT' => 147, 'AND' => 149, 'CMPOP' => 148, "+" => 150 }, DEFAULT => -29 }, {#State 91 ACTIONS => { "+" => 150, 'CMPOP' => 148, 'AND' => 149, 'CAT' => 147, 'DIV' => 146, 'OR' => 143, "?" => 142, ";" => 179, "/" => 144, 'BINOP' => 145, 'MOD' => 141 } }, {#State 92 ACTIONS => { 'NEXT' => 49, 'CALL' => 8, 'UNLESS' => 9, 'SET' => 52, 'PERL' => 46, "\"" => 47, "\$" => 48, 'THROW' => 38, 'STOP' => 39, 'PROCESS' => 4, "[" => 41, 'INCLUDE' => 43, 'IF' => 34, 'DEFAULT' => 2, 'FILTER' => 68, 'FOR' => 30, 'BLOCK' => 180, 'LITERAL' => 31, 'NUMBER' => 23, 'INSERT' => 66, 'TRY' => 67, 'SWITCH' => 26, 'GET' => 27, 'WHILE' => 60, "(" => 183, "{" => 62, 'WRAPPER' => 19, 'RETURN' => 22, 'CLEAR' => 20, "\${" => 21, 'IDENT' => 13, 'NOT' => 12, 'LAST' => 14, 'DEBUG' => 16, 'REF' => 17 }, GOTOS => { 'atomexpr' => 35, 'node' => 57, 'setlist' => 37, 'term' => 15, 'sterm' => 36, 'wrapper' => 56, 'lterm' => 42, 'assign' => 18, 'expr' => 182, 'try' => 5, 'switch' => 64, 'ident' => 162, 'mdir' => 181, 'loop' => 45, 'perl' => 73, 'condition' => 33, 'atomdir' => 6, 'filter' => 69, 'directive' => 184, 'item' => 29 } }, {#State 93 DEFAULT => -7 }, {#State 94 ACTIONS => { 'MOD' => 141, "/" => 144, 'BINOP' => 145, 'DIV' => 146, 'CMPOP' => 148, 'CAT' => 147, "+" => 150 }, DEFAULT => -142 }, {#State 95 DEFAULT => -41 }, {#State 96 ACTIONS => { 'DOT' => 100 }, DEFAULT => -110 }, {#State 97 ACTIONS => { ";" => 185 } }, {#State 98 ACTIONS => { "}" => 186 } }, {#State 99 ACTIONS => { 'INSERT' => 66, 'NUMBER' => 23, 'TRY' => 67, 'SWITCH' => 26, 'GET' => 27, 'FILTER' => 68, 'FOR' => 30, 'BLOCK' => 180, 'LITERAL' => 31, 'NOT' => 12, 'IDENT' => 13, 'LAST' => 14, 'REF' => 17, 'DEBUG' => 16, 'WHILE' => 60, "(" => 61, "{" => 62, 'WRAPPER' => 19, 'CLEAR' => 20, "\${" => 21, 'RETURN' => 22, 'PERL' => 46, "\"" => 47, "\$" => 48, 'NEXT' => 49, 'CALL' => 8, 'UNLESS' => 9, 'SET' => 52, 'IF' => 34, 'DEFAULT' => 2, 'THROW' => 38, 'STOP' => 39, 'PROCESS' => 4, "[" => 41, 'INCLUDE' => 43 }, GOTOS => { 'ident' => 162, 'mdir' => 188, 'loop' => 45, 'condition' => 33, 'perl' => 73, 'filter' => 69, 'atomdir' => 6, 'item' => 29, 'directive' => 184, 'atomexpr' => 35, 'sterm' => 36, 'term' => 15, 'setlist' => 37, 'node' => 57, 'wrapper' => 56, 'lterm' => 42, 'expr' => 187, 'assign' => 18, 'try' => 5, 'switch' => 64 } }, {#State 100 ACTIONS => { "\${" => 21, "\$" => 48, 'NUMBER' => 190, 'IDENT' => 13 }, GOTOS => { 'node' => 189, 'item' => 29 } }, {#State 101 ACTIONS => { ";" => 191 } }, {#State 102 ACTIONS => { "/" => 144, 'CMPOP' => 148, 'BINOP' => 145, 'AND' => 149, 'MOD' => 141, 'CAT' => 147, 'DIV' => 146, 'OR' => 143, "+" => 150, "?" => 142, ";" => 192 } }, {#State 103 ACTIONS => { 'BINOP' => 145, "/" => 144, 'MOD' => 141, 'OR' => 143, 'DIV' => 146, "?" => 142, 'AND' => 149, 'CMPOP' => 148, 'CAT' => 147, "+" => 150 }, DEFAULT => -28 }, {#State 104 DEFAULT => -156, GOTOS => { 'args' => 193 } }, {#State 105 ACTIONS => { ";" => 194 } }, {#State 106 DEFAULT => -156, GOTOS => { 'args' => 195 } }, {#State 107 ACTIONS => { 'IN' => 197, 'ASSIGN' => 196 }, DEFAULT => -130 }, {#State 108 ACTIONS => { 'IDENT' => 13, 'NOT' => 12, 'NUMBER' => 23, "\$" => 48, 'REF' => 17, "\"" => 47, "[" => 41, "{" => 62, "(" => 61, "\${" => 21, 'LITERAL' => 89 }, GOTOS => { 'item' => 29, 'ident' => 88, 'expr' => 198, 'node' => 57, 'sterm' => 36, 'term' => 15, 'lterm' => 42 } }, {#State 109 ACTIONS => { 'ASSIGN' => 199 }, DEFAULT => -173 }, {#State 110 DEFAULT => -85 }, {#State 111 ACTIONS => { ";" => 200 } }, {#State 112 DEFAULT => -83 }, {#State 113 DEFAULT => -99 }, {#State 114 ACTIONS => { 'DOT' => 178 }, DEFAULT => -84 }, {#State 115 ACTIONS => { 'IDENT' => 136, 'COMMA' => 201 }, DEFAULT => -86, GOTOS => { 'meta' => 202 } }, {#State 116 ACTIONS => { 'BINOP' => 145, "/" => 144, 'MOD' => 141, 'OR' => 143, 'DIV' => 146, ";" => 203, "?" => 142, 'AND' => 149, 'CMPOP' => 148, 'CAT' => 147, "+" => 150 } }, {#State 117 ACTIONS => { 'FILENAME' => 81, 'IDENT' => 84, 'NUMBER' => 83, "\$" => 79, "\"" => 80, 'LITERAL' => 82 }, GOTOS => { 'filepart' => 77, 'nameargs' => 204, 'names' => 78, 'name' => 86, 'filename' => 87 } }, {#State 118 ACTIONS => { "\"" => 47, "\$" => 48, 'REF' => 17, 'NUMBER' => 23, 'IDENT' => 107, 'LITERAL' => 89, "\${" => 21, "{" => 62, "[" => 41 }, GOTOS => { 'loopvar' => 205, 'lterm' => 42, 'term' => 106, 'sterm' => 36, 'node' => 57, 'ident' => 88, 'item' => 29 } }, {#State 119 ACTIONS => { "\"" => 47, "\$" => 48, 'NUMBER' => 23, 'LITERAL' => 89, 'REF' => 17, 'NOT' => 12, 'IDENT' => 13, "\${" => 21, "(" => 61, "{" => 62, "[" => 41 }, GOTOS => { 'lterm' => 42, 'expr' => 206, 'item' => 29, 'node' => 57, 'term' => 15, 'sterm' => 36, 'ident' => 88 } }, {#State 120 ACTIONS => { "(" => 61, "{" => 62, "[" => 41, 'LITERAL' => 89, "\${" => 21, 'NUMBER' => 23, 'NOT' => 12, 'IDENT' => 13, "\"" => 47, "\$" => 48, 'REF' => 17 }, GOTOS => { 'item' => 29, 'expr' => 207, 'ident' => 88, 'sterm' => 36, 'term' => 15, 'node' => 57, 'lterm' => 42 } }, {#State 121 ACTIONS => { "\"" => 152, "\$" => 151, 'LITERAL' => 155, "\${" => 21, 'FILENAME' => 81, 'NUMBER' => 83, 'IDENT' => 157 }, GOTOS => { 'lvalue' => 154, 'lnameargs' => 208, 'nameargs' => 158, 'filename' => 87, 'name' => 86, 'filepart' => 77, 'item' => 156, 'names' => 78 } }, {#State 122 ACTIONS => { "[" => 41, "{" => 62, "(" => 61, "\${" => 21, 'LITERAL' => 89, 'IDENT' => 13, 'NOT' => 12, 'NUMBER' => 23, 'REF' => 17, "\$" => 48, "\"" => 47 }, GOTOS => { 'lterm' => 42, 'item' => 29, 'expr' => 209, 'term' => 15, 'sterm' => 36, 'node' => 57, 'ident' => 88 } }, {#State 123 DEFAULT => -147 }, {#State 124 DEFAULT => -148 }, {#State 125 DEFAULT => -35 }, {#State 126 DEFAULT => -107 }, {#State 127 DEFAULT => -116 }, {#State 128 ACTIONS => { 'TO' => 210 }, DEFAULT => -104 }, {#State 129 ACTIONS => { 'COMMA' => 211, 'LITERAL' => 89, "\"" => 47, "\$" => 48, 'NUMBER' => 23, "\${" => 21, "{" => 62, "[" => 41, 'REF' => 17, "]" => 212, 'IDENT' => 13 }, GOTOS => { 'ident' => 88, 'item' => 29, 'lterm' => 42, 'sterm' => 36, 'term' => 213, 'node' => 57 } }, {#State 130 ACTIONS => { "]" => 214 } }, {#State 131 DEFAULT => -33 }, {#State 132 ACTIONS => { ";" => 215 } }, {#State 133 DEFAULT => -76, GOTOS => { '@4-2' => 216 } }, {#State 134 ACTIONS => { "\$" => 48, "\"" => 221, ";" => 220, "\${" => 21, 'TEXT' => 219, 'IDENT' => 13 }, GOTOS => { 'node' => 57, 'quotable' => 218, 'item' => 29, 'ident' => 217 } }, {#State 135 DEFAULT => -132 }, {#State 136 ACTIONS => { 'ASSIGN' => 199 } }, {#State 137 ACTIONS => { ";" => 222 } }, {#State 138 ACTIONS => { 'LITERAL' => 75, 'COMMA' => 124, "\$" => 48, "\${" => 21, 'IDENT' => 13 }, DEFAULT => -30, GOTOS => { 'node' => 57, 'ident' => 74, 'assign' => 123, 'item' => 29 } }, {#State 139 ACTIONS => { 'IDENT' => 136, 'COMMA' => 201 }, DEFAULT => -17, GOTOS => { 'meta' => 202 } }, {#State 140 DEFAULT => 0 }, {#State 141 ACTIONS => { 'NOT' => 12, 'IDENT' => 13, 'NUMBER' => 23, "\$" => 48, 'REF' => 17, "\"" => 47, "[" => 41, "{" => 62, "(" => 61, "\${" => 21, 'LITERAL' => 89 }, GOTOS => { 'item' => 29, 'expr' => 223, 'ident' => 88, 'sterm' => 36, 'term' => 15, 'node' => 57, 'lterm' => 42 } }, {#State 142 ACTIONS => { 'LITERAL' => 89, 'NUMBER' => 23, "\$" => 48, "\"" => 47, "[" => 41, "{" => 62, "(" => 61, "\${" => 21, 'IDENT' => 13, 'NOT' => 12, 'REF' => 17 }, GOTOS => { 'node' => 57, 'term' => 15, 'sterm' => 36, 'ident' => 88, 'lterm' => 42, 'item' => 29, 'expr' => 224 } }, {#State 143 ACTIONS => { 'NOT' => 12, 'IDENT' => 13, 'REF' => 17, "(" => 61, "[" => 41, "{" => 62, "\${" => 21, 'NUMBER' => 23, "\"" => 47, "\$" => 48, 'LITERAL' => 89 }, GOTOS => { 'lterm' => 42, 'expr' => 225, 'item' => 29, 'node' => 57, 'term' => 15, 'sterm' => 36, 'ident' => 88 } }, {#State 144 ACTIONS => { "\$" => 48, 'REF' => 17, "\"" => 47, 'IDENT' => 13, 'NOT' => 12, 'NUMBER' => 23, "\${" => 21, 'LITERAL' => 89, "[" => 41, "{" => 62, "(" => 61 }, GOTOS => { 'ident' => 88, 'node' => 57, 'term' => 15, 'sterm' => 36, 'expr' => 226, 'item' => 29, 'lterm' => 42 } }, {#State 145 ACTIONS => { "\$" => 48, "\"" => 47, 'NUMBER' => 23, 'LITERAL' => 89, 'REF' => 17, 'IDENT' => 13, 'NOT' => 12, "\${" => 21, "[" => 41, "{" => 62, "(" => 61 }, GOTOS => { 'item' => 29, 'ident' => 88, 'expr' => 227, 'node' => 57, 'term' => 15, 'sterm' => 36, 'lterm' => 42 } }, {#State 146 ACTIONS => { 'LITERAL' => 89, 'NUMBER' => 23, "\$" => 48, "\"" => 47, "{" => 62, "[" => 41, "(" => 61, "\${" => 21, 'NOT' => 12, 'IDENT' => 13, 'REF' => 17 }, GOTOS => { 'node' => 57, 'sterm' => 36, 'term' => 15, 'lterm' => 42, 'item' => 29, 'ident' => 88, 'expr' => 228 } }, {#State 147 ACTIONS => { 'REF' => 17, "\$" => 48, "\"" => 47, 'IDENT' => 13, 'NOT' => 12, 'NUMBER' => 23, "\${" => 21, 'LITERAL' => 89, "[" => 41, "{" => 62, "(" => 61 }, GOTOS => { 'expr' => 229, 'item' => 29, 'lterm' => 42, 'ident' => 88, 'node' => 57, 'sterm' => 36, 'term' => 15 } }, {#State 148 ACTIONS => { 'NUMBER' => 23, "\$" => 48, "\"" => 47, 'LITERAL' => 89, 'NOT' => 12, 'IDENT' => 13, 'REF' => 17, "{" => 62, "[" => 41, "(" => 61, "\${" => 21 }, GOTOS => { 'ident' => 88, 'node' => 57, 'term' => 15, 'sterm' => 36, 'expr' => 230, 'item' => 29, 'lterm' => 42 } }, {#State 149 ACTIONS => { 'LITERAL' => 89, 'NUMBER' => 23, "\"" => 47, "\$" => 48, "(" => 61, "{" => 62, "[" => 41, "\${" => 21, 'IDENT' => 13, 'NOT' => 12, 'REF' => 17 }, GOTOS => { 'lterm' => 42, 'item' => 29, 'expr' => 231, 'node' => 57, 'sterm' => 36, 'term' => 15, 'ident' => 88 } }, {#State 150 ACTIONS => { "\${" => 21, "(" => 61, "{" => 62, "[" => 41, 'REF' => 17, 'IDENT' => 13, 'NOT' => 12, 'LITERAL' => 89, "\"" => 47, "\$" => 48, 'NUMBER' => 23 }, GOTOS => { 'lterm' => 42, 'sterm' => 36, 'term' => 15, 'node' => 57, 'expr' => 232, 'ident' => 88, 'item' => 29 } }, {#State 151 ACTIONS => { "\${" => 21, "\$" => 48, 'IDENT' => 233 }, GOTOS => { 'ident' => 176, 'item' => 29, 'node' => 57 } }, {#State 152 DEFAULT => -176, GOTOS => { 'quoted' => 234 } }, {#State 153 DEFAULT => -73 }, {#State 154 ACTIONS => { 'ASSIGN' => 235 } }, {#State 155 ACTIONS => { 'ASSIGN' => -161 }, DEFAULT => -169 }, {#State 156 DEFAULT => -159 }, {#State 157 ACTIONS => { 'ASSIGN' => -130 }, DEFAULT => -173 }, {#State 158 DEFAULT => -158 }, {#State 159 ACTIONS => { ";" => 236, "?" => 142, "+" => 150, 'OR' => 143, 'DIV' => 146, 'CAT' => 147, 'MOD' => 141, 'AND' => 149, 'BINOP' => 145, 'CMPOP' => 148, "/" => 144 } }, {#State 160 ACTIONS => { 'OR' => 143, 'DIV' => 146, ")" => 237, "?" => 142, 'BINOP' => 145, "/" => 144, 'MOD' => 141, "+" => 150, 'AND' => 149, 'CMPOP' => 148, 'CAT' => 147 } }, {#State 161 ACTIONS => { ")" => 238 } }, {#State 162 ACTIONS => { 'DOT' => 100, 'ASSIGN' => 172 }, DEFAULT => -109 }, {#State 163 ACTIONS => { 'ASSIGN' => 239 } }, {#State 164 DEFAULT => -122 }, {#State 165 ACTIONS => { 'ASSIGN' => 240 } }, {#State 166 ACTIONS => { "}" => 241 } }, {#State 167 ACTIONS => { "\${" => 21, 'LITERAL' => 163, 'COMMA' => 243, 'IDENT' => 13, "\$" => 48 }, DEFAULT => -118, GOTOS => { 'param' => 242, 'item' => 165 } }, {#State 168 DEFAULT => -4 }, {#State 169 DEFAULT => -32 }, {#State 170 ACTIONS => { "\"" => 47, "\$" => 48, 'PERL' => 46, 'META' => 53, 'SET' => 52, 'NEXT' => 49, 'IF' => 34, 'INCLUDE' => 43, 'RAWPERL' => 44, "[" => 41, 'THROW' => 38, 'STOP' => 39, 'INSERT' => 66, 'TRY' => 67, 'FILTER' => 68, "(" => 61, "{" => 62, 'WHILE' => 60, 'USE' => 59, ";" => -18, 'TEXT' => 7, 'CALL' => 8, 'UNLESS' => 9, 'MACRO' => 10, 'DEFAULT' => 2, 'PROCESS' => 4, 'GET' => 27, 'NUMBER' => 23, 'SWITCH' => 26, 'VIEW' => 25, 'BLOCK' => 32, 'LITERAL' => 31, 'FOR' => 30, 'DEBUG' => 16, 'REF' => 17, 'LAST' => 14, 'NOT' => 12, 'IDENT' => 13, 'WRAPPER' => 19, 'CLEAR' => 20, 'RETURN' => 22, "\${" => 21 }, DEFAULT => -3, GOTOS => { 'expr' => 58, 'assign' => 18, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'capture' => 55, 'wrapper' => 56, 'term' => 15, 'node' => 57, 'filter' => 69, 'macro' => 70, 'anonblock' => 28, 'item' => 29, 'chunk' => 71, 'use' => 72, 'perl' => 73, 'condition' => 33, 'ident' => 24, 'view' => 40, 'try' => 5, 'lterm' => 42, 'block' => 244, 'atomexpr' => 35, 'sterm' => 36, 'rawperl' => 3, 'setlist' => 37, 'atomdir' => 6, 'defblockname' => 50, 'directive' => 51, 'statement' => 11, 'loop' => 45 } }, {#State 171 ACTIONS => { ";" => 245 } }, {#State 172 ACTIONS => { "\"" => 47, 'REF' => 17, "\$" => 48, 'NUMBER' => 23, 'NOT' => 12, 'IDENT' => 13, 'LITERAL' => 89, "\${" => 21, "(" => 61, "{" => 62, "[" => 41 }, GOTOS => { 'term' => 15, 'sterm' => 36, 'node' => 57, 'lterm' => 42, 'item' => 29, 'expr' => 246, 'ident' => 88 } }, {#State 173 DEFAULT => -156, GOTOS => { 'args' => 247 } }, {#State 174 ACTIONS => { "\${" => 21, "[" => 41, "{" => 62, "(" => 61, 'REF' => 17, 'IDENT' => 13, 'NOT' => 12, 'COMMA' => 253, 'LITERAL' => 249, "\$" => 48, "\"" => 47, 'NUMBER' => 23 }, DEFAULT => -163, GOTOS => { 'node' => 57, 'term' => 15, 'sterm' => 36, 'ident' => 252, 'lterm' => 42, 'item' => 250, 'param' => 251, 'expr' => 248 } }, {#State 175 ACTIONS => { 'NUMBER' => 83, 'IDENT' => 84, 'FILENAME' => 81, 'LITERAL' => 82, "\"" => 80 }, GOTOS => { 'filepart' => 77, 'name' => 254, 'filename' => 87 } }, {#State 176 ACTIONS => { 'DOT' => 100 }, DEFAULT => -156, GOTOS => { 'args' => 255 } }, {#State 177 ACTIONS => { "\$" => 48, ";" => 220, "\"" => 256, 'IDENT' => 13, "\${" => 21, 'TEXT' => 219 }, GOTOS => { 'quotable' => 218, 'node' => 57, 'ident' => 217, 'item' => 29 } }, {#State 178 ACTIONS => { 'FILENAME' => 81, 'IDENT' => 84, 'NUMBER' => 83 }, GOTOS => { 'filepart' => 257 } }, {#State 179 ACTIONS => { 'NEXT' => 49, 'SET' => 52, 'META' => 53, 'PERL' => 46, "\"" => 47, "\$" => 48, 'THROW' => 38, 'STOP' => 39, "[" => 41, 'INCLUDE' => 43, 'RAWPERL' => 44, 'IF' => 34, 'FILTER' => 68, 'INSERT' => 66, 'TRY' => 67, 'WHILE' => 60, 'USE' => 59, "(" => 61, "{" => 62, 'CALL' => 8, 'TEXT' => 7, 'UNLESS' => 9, 'MACRO' => 10, ";" => -18, 'PROCESS' => 4, 'DEFAULT' => 2, 'FOR' => 30, 'LITERAL' => 31, 'BLOCK' => 32, 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26, 'GET' => 27, 'WRAPPER' => 19, "\${" => 21, 'RETURN' => 22, 'CLEAR' => 20, 'NOT' => 12, 'IDENT' => 13, 'LAST' => 14, 'DEBUG' => 16, 'REF' => 17 }, DEFAULT => -3, GOTOS => { 'setlist' => 37, 'rawperl' => 3, 'sterm' => 36, 'atomexpr' => 35, 'block' => 258, 'lterm' => 42, 'try' => 5, 'view' => 40, 'loop' => 45, 'statement' => 11, 'directive' => 51, 'defblockname' => 50, 'atomdir' => 6, 'node' => 57, 'term' => 15, 'capture' => 55, 'wrapper' => 56, 'chunks' => 63, 'switch' => 64, 'defblock' => 65, 'assign' => 18, 'expr' => 58, 'ident' => 24, 'perl' => 73, 'condition' => 33, 'use' => 72, 'item' => 29, 'chunk' => 71, 'macro' => 70, 'anonblock' => 28, 'filter' => 69 } }, {#State 180 ACTIONS => { ";" => 259 } }, {#State 181 DEFAULT => -91 }, {#State 182 ACTIONS => { "+" => 150, 'CAT' => 147, 'AND' => 149, 'CMPOP' => 148, "?" => 142, 'OR' => 143, 'DIV' => 146, 'MOD' => 141, 'BINOP' => 145, "/" => 144 }, DEFAULT => -26 }, {#State 183 ACTIONS => { 'REF' => 17, "\$" => 48, "\"" => 47, 'NOT' => 12, 'IDENT' => 260, 'NUMBER' => 23, "\${" => 21, 'LITERAL' => 31, "[" => 41, "{" => 62, "(" => 61 }, GOTOS => { 'lterm' => 42, 'item' => 29, 'expr' => 160, 'assign' => 161, 'sterm' => 36, 'term' => 15, 'node' => 57, 'margs' => 261, 'ident' => 162 } }, {#State 184 DEFAULT => -92 }, {#State 185 ACTIONS => { 'PROCESS' => 4, 'DEFAULT' => 2, 'MACRO' => 10, 'UNLESS' => 9, 'TEXT' => 7, 'CALL' => 8, ";" => -18, "\${" => 21, 'CLEAR' => 20, 'RETURN' => 22, 'WRAPPER' => 19, 'REF' => 17, 'DEBUG' => 16, 'LAST' => 14, 'NOT' => 12, 'IDENT' => 13, 'LITERAL' => 31, 'BLOCK' => 32, 'FOR' => 30, 'GET' => 27, 'VIEW' => 25, 'SWITCH' => 26, 'NUMBER' => 23, 'INCLUDE' => 43, 'RAWPERL' => 44, "[" => 41, 'STOP' => 39, 'THROW' => 38, 'IF' => 34, 'META' => 53, 'SET' => 52, 'NEXT' => 49, "\$" => 48, "\"" => 47, 'PERL' => 46, "{" => 62, "(" => 61, 'WHILE' => 60, 'USE' => 59, 'FILTER' => 68, 'TRY' => 67, 'INSERT' => 66 }, DEFAULT => -3, GOTOS => { 'expr' => 58, 'assign' => 18, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'capture' => 55, 'wrapper' => 56, 'term' => 15, 'node' => 57, 'filter' => 69, 'macro' => 70, 'anonblock' => 28, 'item' => 29, 'chunk' => 71, 'use' => 72, 'perl' => 73, 'condition' => 33, 'ident' => 24, 'view' => 40, 'try' => 5, 'lterm' => 42, 'block' => 262, 'atomexpr' => 35, 'sterm' => 36, 'rawperl' => 3, 'setlist' => 37, 'atomdir' => 6, 'defblockname' => 50, 'directive' => 51, 'statement' => 11, 'loop' => 45 } }, {#State 186 DEFAULT => -131 }, {#State 187 ACTIONS => { 'BINOP' => 145, "/" => 144, 'COMMA' => -150, 'MOD' => 141, 'LITERAL' => -150, 'OR' => 143, 'DIV' => 146, "\$" => -150, ";" => -150, "?" => 142, 'AND' => 149, 'CMPOP' => 148, "\${" => -150, 'CAT' => 147, 'IDENT' => -150, "+" => 150 }, DEFAULT => -26 }, {#State 188 DEFAULT => -89 }, {#State 189 DEFAULT => -125 }, {#State 190 DEFAULT => -126 }, {#State 191 DEFAULT => -74, GOTOS => { '@3-3' => 263 } }, {#State 192 ACTIONS => { ";" => -18, 'UNLESS' => 9, 'MACRO' => 10, 'CALL' => 8, 'TEXT' => 7, 'DEFAULT' => 2, 'PROCESS' => 4, 'GET' => 27, 'VIEW' => 25, 'SWITCH' => 26, 'NUMBER' => 23, 'BLOCK' => 32, 'LITERAL' => 31, 'FOR' => 30, 'DEBUG' => 16, 'REF' => 17, 'LAST' => 14, 'NOT' => 12, 'IDENT' => 13, 'CLEAR' => 20, "\${" => 21, 'RETURN' => 22, 'WRAPPER' => 19, "\$" => 48, "\"" => 47, 'PERL' => 46, 'META' => 53, 'SET' => 52, 'NEXT' => 49, 'IF' => 34, 'INCLUDE' => 43, 'RAWPERL' => 44, "[" => 41, 'STOP' => 39, 'THROW' => 38, 'TRY' => 67, 'INSERT' => 66, 'FILTER' => 68, "{" => 62, "(" => 61, 'USE' => 59, 'WHILE' => 60 }, DEFAULT => -3, GOTOS => { 'wrapper' => 56, 'capture' => 55, 'node' => 57, 'term' => 15, 'assign' => 18, 'expr' => 58, 'switch' => 64, 'chunks' => 63, 'defblock' => 65, 'ident' => 24, 'anonblock' => 28, 'macro' => 70, 'filter' => 69, 'use' => 72, 'chunk' => 71, 'item' => 29, 'condition' => 33, 'perl' => 73, 'block' => 264, 'atomexpr' => 35, 'setlist' => 37, 'rawperl' => 3, 'sterm' => 36, 'try' => 5, 'view' => 40, 'lterm' => 42, 'loop' => 45, 'atomdir' => 6, 'directive' => 51, 'defblockname' => 50, 'statement' => 11 } }, {#State 193 ACTIONS => { "\${" => 21, "(" => 61, "[" => 41, "{" => 62, 'REF' => 17, 'NOT' => 12, 'IDENT' => 13, 'LITERAL' => 249, 'COMMA' => 253, "\"" => 47, ")" => 265, "\$" => 48, 'NUMBER' => 23 }, GOTOS => { 'lterm' => 42, 'sterm' => 36, 'term' => 15, 'node' => 57, 'expr' => 248, 'param' => 251, 'ident' => 252, 'item' => 250 } }, {#State 194 DEFAULT => -56, GOTOS => { '@1-3' => 266 } }, {#State 195 ACTIONS => { 'REF' => 17, 'IDENT' => 13, 'NOT' => 12, "\${" => 21, "[" => 41, "{" => 62, "(" => 61, "\$" => 48, "\"" => 47, 'NUMBER' => 23, 'LITERAL' => 249, 'COMMA' => 253 }, DEFAULT => -64, GOTOS => { 'expr' => 248, 'ident' => 252, 'param' => 251, 'item' => 250, 'lterm' => 42, 'term' => 15, 'sterm' => 36, 'node' => 57 } }, {#State 196 ACTIONS => { "{" => 62, "[" => 41, "\${" => 21, 'LITERAL' => 89, 'IDENT' => 13, 'NUMBER' => 23, 'REF' => 17, "\$" => 48, "\"" => 47 }, GOTOS => { 'sterm' => 36, 'term' => 267, 'node' => 57, 'ident' => 88, 'lterm' => 42, 'item' => 29 } }, {#State 197 ACTIONS => { "[" => 41, "{" => 62, 'LITERAL' => 89, "\${" => 21, 'NUMBER' => 23, 'IDENT' => 13, "\"" => 47, 'REF' => 17, "\$" => 48 }, GOTOS => { 'ident' => 88, 'node' => 57, 'term' => 268, 'sterm' => 36, 'item' => 29, 'lterm' => 42 } }, {#State 198 ACTIONS => { 'OR' => 143, "?" => 142, 'MOD' => 141, 'AND' => 149, 'DIV' => 146, "/" => 144, 'BINOP' => 145, "+" => 150, 'CMPOP' => 148, 'CAT' => 147 }, DEFAULT => -151 }, {#State 199 ACTIONS => { "\"" => 269, 'LITERAL' => 270, 'NUMBER' => 271 } }, {#State 200 ACTIONS => { 'FILTER' => 68, 'TRY' => 67, 'INSERT' => 66, "{" => 62, "(" => 61, 'USE' => 59, 'WHILE' => 60, 'NEXT' => 49, 'META' => 53, 'SET' => 52, "\$" => 48, "\"" => 47, 'PERL' => 46, "[" => 41, 'STOP' => 39, 'THROW' => 38, 'RAWPERL' => 44, 'INCLUDE' => 43, 'IF' => 34, 'FOR' => 30, 'LITERAL' => 31, 'BLOCK' => 32, 'GET' => 27, 'SWITCH' => 26, 'VIEW' => 25, 'NUMBER' => 23, 'CLEAR' => 20, "\${" => 21, 'RETURN' => 22, 'WRAPPER' => 19, 'IDENT' => 13, 'NOT' => 12, 'REF' => 17, 'DEBUG' => 16, 'LAST' => 14, 'UNLESS' => 9, 'MACRO' => 10, 'TEXT' => 7, 'CALL' => 8, ";" => -18, 'PROCESS' => 4, 'DEFAULT' => 2 }, DEFAULT => -3, GOTOS => { 'perl' => 73, 'condition' => 33, 'use' => 72, 'chunk' => 71, 'item' => 29, 'anonblock' => 28, 'macro' => 70, 'filter' => 69, 'ident' => 24, 'defblock' => 65, 'chunks' => 63, 'switch' => 64, 'assign' => 18, 'expr' => 58, 'node' => 57, 'term' => 15, 'wrapper' => 56, 'capture' => 55, 'statement' => 11, 'directive' => 51, 'defblockname' => 50, 'atomdir' => 6, 'loop' => 45, 'lterm' => 42, 'try' => 5, 'view' => 40, 'rawperl' => 3, 'setlist' => 37, 'sterm' => 36, 'atomexpr' => 35, 'block' => 272 } }, {#State 201 DEFAULT => -98 }, {#State 202 DEFAULT => -97 }, {#State 203 ACTIONS => { "{" => 62, "(" => 61, 'WHILE' => 60, 'USE' => 59, 'FILTER' => 68, 'TRY' => 67, 'INSERT' => 66, 'RAWPERL' => 44, 'INCLUDE' => 43, "[" => 41, 'STOP' => 39, 'THROW' => 38, 'IF' => 34, 'META' => 53, 'SET' => 52, 'NEXT' => 49, "\$" => 48, "\"" => 47, 'PERL' => 46, 'CLEAR' => 20, "\${" => 21, 'RETURN' => 22, 'WRAPPER' => 19, 'REF' => 17, 'DEBUG' => 16, 'LAST' => 14, 'NOT' => 12, 'IDENT' => 13, 'LITERAL' => 31, 'BLOCK' => 32, 'FOR' => 30, 'GET' => 27, 'VIEW' => 25, 'SWITCH' => 26, 'NUMBER' => 23, 'PROCESS' => 4, 'DEFAULT' => 2, 'UNLESS' => 9, 'MACRO' => 10, 'TEXT' => 7, 'CALL' => 8, ";" => -18 }, DEFAULT => -3, GOTOS => { 'loop' => 45, 'atomdir' => 6, 'defblockname' => 50, 'directive' => 51, 'statement' => 11, 'block' => 273, 'atomexpr' => 35, 'sterm' => 36, 'rawperl' => 3, 'setlist' => 37, 'view' => 40, 'try' => 5, 'lterm' => 42, 'ident' => 24, 'filter' => 69, 'macro' => 70, 'anonblock' => 28, 'item' => 29, 'chunk' => 71, 'use' => 72, 'condition' => 33, 'perl' => 73, 'capture' => 55, 'wrapper' => 56, 'term' => 15, 'node' => 57, 'expr' => 58, 'assign' => 18, 'switch' => 64, 'chunks' => 63, 'defblock' => 65 } }, {#State 204 DEFAULT => -66 }, {#State 205 DEFAULT => -58 }, {#State 206 ACTIONS => { 'OR' => 143, 'DIV' => 146, "+" => 150, "?" => 142, 'BINOP' => 145, 'AND' => 149, "/" => 144, 'CMPOP' => 148, 'CAT' => 147, 'MOD' => 141 }, DEFAULT => -47 }, {#State 207 ACTIONS => { "?" => 142, "+" => 150, 'DIV' => 146, 'OR' => 143, 'CAT' => 147, 'MOD' => 141, 'CMPOP' => 148, "/" => 144, 'AND' => 149, 'BINOP' => 145 }, DEFAULT => -61 }, {#State 208 DEFAULT => -81 }, {#State 209 ACTIONS => { "?" => 142, "+" => 150, 'OR' => 143, 'DIV' => 146, 'MOD' => 141, 'CAT' => 147, 'AND' => 149, 'BINOP' => 145, 'CMPOP' => 148, "/" => 144 }, DEFAULT => -45 }, {#State 210 ACTIONS => { "\"" => 47, 'REF' => 17, "\$" => 48, 'NUMBER' => 23, 'IDENT' => 13, 'LITERAL' => 89, "\${" => 21 }, GOTOS => { 'ident' => 88, 'item' => 29, 'sterm' => 274, 'node' => 57 } }, {#State 211 DEFAULT => -115 }, {#State 212 DEFAULT => -105 }, {#State 213 DEFAULT => -114 }, {#State 214 DEFAULT => -106 }, {#State 215 ACTIONS => { 'TEXT' => 275 } }, {#State 216 ACTIONS => { 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26, 'GET' => 27, 'LITERAL' => 31, 'BLOCK' => 32, 'FOR' => 30, 'LAST' => 14, 'REF' => 17, 'DEBUG' => 16, 'NOT' => 12, 'IDENT' => 13, 'WRAPPER' => 19, 'RETURN' => 22, "\${" => 21, 'CLEAR' => 20, ";" => -18, 'CALL' => 8, 'TEXT' => 7, 'MACRO' => 10, 'UNLESS' => 9, 'DEFAULT' => 2, 'PROCESS' => 4, 'INSERT' => 66, 'TRY' => 67, 'FILTER' => 68, 'USE' => 59, 'WHILE' => 60, "(" => 61, "{" => 62, 'PERL' => 46, "\"" => 47, "\$" => 48, 'SET' => 52, 'META' => 53, 'NEXT' => 49, 'IF' => 34, 'RAWPERL' => 44, 'INCLUDE' => 43, 'THROW' => 38, 'STOP' => 39, "[" => 41 }, DEFAULT => -3, GOTOS => { 'condition' => 33, 'perl' => 73, 'anonblock' => 28, 'macro' => 70, 'filter' => 69, 'use' => 72, 'chunk' => 71, 'item' => 29, 'ident' => 24, 'assign' => 18, 'expr' => 58, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'node' => 57, 'term' => 15, 'capture' => 55, 'wrapper' => 56, 'statement' => 11, 'atomdir' => 6, 'directive' => 51, 'defblockname' => 50, 'loop' => 45, 'lterm' => 42, 'try' => 5, 'view' => 40, 'atomexpr' => 35, 'setlist' => 37, 'rawperl' => 3, 'sterm' => 36, 'block' => 276 } }, {#State 217 ACTIONS => { 'DOT' => 100 }, DEFAULT => -177 }, {#State 218 DEFAULT => -175 }, {#State 219 DEFAULT => -178 }, {#State 220 DEFAULT => -179 }, {#State 221 DEFAULT => -111 }, {#State 222 ACTIONS => { 'FILTER' => 68, 'TRY' => 67, 'INSERT' => 66, "{" => 62, "(" => 61, 'WHILE' => 60, 'USE' => 59, 'META' => 53, 'SET' => 52, 'NEXT' => 49, "\$" => 48, "\"" => 47, 'PERL' => 46, 'RAWPERL' => 44, 'INCLUDE' => 43, "[" => 41, 'STOP' => 39, 'THROW' => 38, 'IF' => 34, 'BLOCK' => 32, 'LITERAL' => 31, 'FOR' => 30, 'GET' => 27, 'SWITCH' => 26, 'VIEW' => 25, 'NUMBER' => 23, 'CLEAR' => 20, 'RETURN' => 22, "\${" => 21, 'WRAPPER' => 19, 'DEBUG' => 16, 'REF' => 17, 'LAST' => 14, 'IDENT' => 13, 'NOT' => 12, 'MACRO' => 10, 'UNLESS' => 9, 'TEXT' => 7, 'CALL' => 8, ";" => -18, 'PROCESS' => 4, 'DEFAULT' => 2 }, DEFAULT => -3, GOTOS => { 'try' => 5, 'view' => 40, 'lterm' => 42, 'block' => 1, 'atomexpr' => 35, 'rawperl' => 3, 'setlist' => 37, 'sterm' => 36, 'atomdir' => 6, 'directive' => 51, 'defblockname' => 50, 'statement' => 11, 'template' => 277, 'loop' => 45, 'assign' => 18, 'expr' => 58, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'wrapper' => 56, 'capture' => 55, 'node' => 57, 'term' => 15, 'anonblock' => 28, 'macro' => 70, 'filter' => 69, 'use' => 72, 'item' => 29, 'chunk' => 71, 'perl' => 73, 'condition' => 33, 'ident' => 24 } }, {#State 223 DEFAULT => -137 }, {#State 224 ACTIONS => { 'OR' => 143, ":" => 278, 'DIV' => 146, "+" => 150, "?" => 142, 'BINOP' => 145, 'AND' => 149, "/" => 144, 'CMPOP' => 148, 'MOD' => 141, 'CAT' => 147 } }, {#State 225 ACTIONS => { 'DIV' => 146, "/" => 144, 'BINOP' => 145, "+" => 150, 'CAT' => 147, 'CMPOP' => 148, 'MOD' => 141 }, DEFAULT => -141 }, {#State 226 ACTIONS => { 'DIV' => 146, 'MOD' => 141 }, DEFAULT => -134 }, {#State 227 ACTIONS => { 'MOD' => 141, "/" => 144, 'DIV' => 146, "+" => 150 }, DEFAULT => -133 }, {#State 228 ACTIONS => { 'MOD' => 141 }, DEFAULT => -136 }, {#State 229 ACTIONS => { 'MOD' => 141, "+" => 150, 'CMPOP' => 148, 'DIV' => 146, 'BINOP' => 145, "/" => 144 }, DEFAULT => -139 }, {#State 230 ACTIONS => { 'MOD' => 141, "+" => 150, 'DIV' => 146, 'BINOP' => 145, "/" => 144 }, DEFAULT => -138 }, {#State 231 ACTIONS => { "+" => 150, 'CMPOP' => 148, 'CAT' => 147, 'DIV' => 146, "/" => 144, 'BINOP' => 145, 'MOD' => 141 }, DEFAULT => -140 }, {#State 232 ACTIONS => { 'MOD' => 141, "/" => 144, 'DIV' => 146 }, DEFAULT => -135 }, {#State 233 ACTIONS => { 'ASSIGN' => -132 }, DEFAULT => -130 }, {#State 234 ACTIONS => { "\$" => 48, "\"" => 279, ";" => 220, 'IDENT' => 13, "\${" => 21, 'TEXT' => 219 }, GOTOS => { 'node' => 57, 'quotable' => 218, 'item' => 29, 'ident' => 217 } }, {#State 235 ACTIONS => { "\"" => 80, "\$" => 79, 'LITERAL' => 82, 'FILENAME' => 81, 'NUMBER' => 83, 'IDENT' => 84 }, GOTOS => { 'filepart' => 77, 'nameargs' => 280, 'names' => 78, 'filename' => 87, 'name' => 86 } }, {#State 236 DEFAULT => -59, GOTOS => { '@2-3' => 281 } }, {#State 237 DEFAULT => -145 }, {#State 238 DEFAULT => -144 }, {#State 239 ACTIONS => { "(" => 61, "[" => 41, "{" => 62, 'LITERAL' => 89, "\${" => 21, 'NUMBER' => 23, 'NOT' => 12, 'IDENT' => 13, "\"" => 47, "\$" => 48, 'REF' => 17 }, GOTOS => { 'ident' => 88, 'node' => 57, 'sterm' => 36, 'term' => 15, 'item' => 29, 'expr' => 282, 'lterm' => 42 } }, {#State 240 ACTIONS => { 'IDENT' => 13, 'NOT' => 12, 'NUMBER' => 23, "\$" => 48, 'REF' => 17, "\"" => 47, "{" => 62, "[" => 41, "(" => 61, "\${" => 21, 'LITERAL' => 89 }, GOTOS => { 'term' => 15, 'sterm' => 36, 'node' => 57, 'lterm' => 42, 'item' => 29, 'expr' => 283, 'ident' => 88 } }, {#State 241 DEFAULT => -108 }, {#State 242 DEFAULT => -120 }, {#State 243 DEFAULT => -121 }, {#State 244 ACTIONS => { 'FINAL' => 284, 'CATCH' => 285 }, DEFAULT => -72, GOTOS => { 'final' => 286 } }, {#State 245 ACTIONS => { 'GET' => 27, 'VIEW' => 25, 'SWITCH' => 26, 'NUMBER' => 23, 'FOR' => 30, 'BLOCK' => 32, 'LITERAL' => 31, 'IDENT' => 13, 'NOT' => 12, 'DEBUG' => 16, 'REF' => 17, 'LAST' => 14, 'CLEAR' => 20, 'RETURN' => 22, "\${" => 21, 'WRAPPER' => 19, ";" => -18, 'UNLESS' => 9, 'MACRO' => 10, 'CALL' => 8, 'TEXT' => 7, 'DEFAULT' => 2, 'PROCESS' => 4, 'TRY' => 67, 'INSERT' => 66, 'FILTER' => 68, "{" => 62, "(" => 61, 'WHILE' => 60, 'USE' => 59, "\$" => 48, "\"" => 47, 'PERL' => 46, 'NEXT' => 49, 'META' => 53, 'SET' => 52, 'IF' => 34, "[" => 41, 'STOP' => 39, 'THROW' => 38, 'RAWPERL' => 44, 'INCLUDE' => 43 }, DEFAULT => -3, GOTOS => { 'lterm' => 42, 'view' => 40, 'try' => 5, 'sterm' => 36, 'setlist' => 37, 'rawperl' => 3, 'atomexpr' => 35, 'block' => 287, 'statement' => 11, 'defblockname' => 50, 'directive' => 51, 'atomdir' => 6, 'loop' => 45, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'expr' => 58, 'assign' => 18, 'term' => 15, 'node' => 57, 'capture' => 55, 'wrapper' => 56, 'condition' => 33, 'perl' => 73, 'chunk' => 71, 'item' => 29, 'use' => 72, 'filter' => 69, 'macro' => 70, 'anonblock' => 28, 'ident' => 24 } }, {#State 246 ACTIONS => { 'AND' => 149, 'OR' => 143, "?" => 142, 'MOD' => 141, "+" => 150, 'CMPOP' => 148, 'CAT' => 147, 'DIV' => 146, 'BINOP' => 145, "/" => 144 }, DEFAULT => -150 }, {#State 247 ACTIONS => { 'IDENT' => 13, 'NOT' => 12, 'REF' => 17, "(" => 61, "{" => 62, "[" => 41, "\${" => 21, 'NUMBER' => 23, "\"" => 47, ")" => 288, "\$" => 48, 'LITERAL' => 249, 'COMMA' => 253 }, GOTOS => { 'ident' => 252, 'node' => 57, 'sterm' => 36, 'term' => 15, 'item' => 250, 'param' => 251, 'expr' => 248, 'lterm' => 42 } }, {#State 248 ACTIONS => { 'MOD' => 141, 'OR' => 143, "?" => 142, 'AND' => 149, "/" => 144, 'BINOP' => 145, 'DIV' => 146, 'CMPOP' => 148, 'CAT' => 147, "+" => 150 }, DEFAULT => -152 }, {#State 249 ACTIONS => { 'ASSIGN' => 239 }, DEFAULT => -112 }, {#State 250 ACTIONS => { 'ASSIGN' => 240, "(" => 104 }, DEFAULT => -128 }, {#State 251 DEFAULT => -153 }, {#State 252 ACTIONS => { 'DOT' => 100, 'ASSIGN' => 289 }, DEFAULT => -109 }, {#State 253 DEFAULT => -155 }, {#State 254 DEFAULT => -165 }, {#State 255 ACTIONS => { 'LITERAL' => 249, 'COMMA' => 253, "\$" => 48, "\"" => 47, 'NUMBER' => 23, "\${" => 21, "{" => 62, "[" => 41, "(" => 61, 'REF' => 17, 'NOT' => 12, 'IDENT' => 13 }, DEFAULT => -162, GOTOS => { 'lterm' => 42, 'expr' => 248, 'param' => 251, 'item' => 250, 'term' => 15, 'sterm' => 36, 'node' => 57, 'ident' => 252 } }, {#State 256 DEFAULT => -167 }, {#State 257 DEFAULT => -170 }, {#State 258 ACTIONS => { 'ELSE' => 292, 'ELSIF' => 290 }, DEFAULT => -50, GOTOS => { 'else' => 291 } }, {#State 259 ACTIONS => { "(" => 61, "{" => 62, 'WHILE' => 60, 'USE' => 59, 'FILTER' => 68, 'INSERT' => 66, 'TRY' => 67, 'INCLUDE' => 43, 'RAWPERL' => 44, "[" => 41, 'THROW' => 38, 'STOP' => 39, 'IF' => 34, 'META' => 53, 'SET' => 52, 'NEXT' => 49, "\"" => 47, "\$" => 48, 'PERL' => 46, 'WRAPPER' => 19, 'CLEAR' => 20, 'RETURN' => 22, "\${" => 21, 'REF' => 17, 'DEBUG' => 16, 'LAST' => 14, 'NOT' => 12, 'IDENT' => 13, 'BLOCK' => 32, 'LITERAL' => 31, 'FOR' => 30, 'GET' => 27, 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26, 'PROCESS' => 4, 'DEFAULT' => 2, 'CALL' => 8, 'TEXT' => 7, 'MACRO' => 10, 'UNLESS' => 9, ";" => -18 }, DEFAULT => -3, GOTOS => { 'block' => 293, 'atomexpr' => 35, 'rawperl' => 3, 'setlist' => 37, 'sterm' => 36, 'try' => 5, 'view' => 40, 'lterm' => 42, 'loop' => 45, 'atomdir' => 6, 'directive' => 51, 'defblockname' => 50, 'statement' => 11, 'capture' => 55, 'wrapper' => 56, 'node' => 57, 'term' => 15, 'assign' => 18, 'expr' => 58, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'ident' => 24, 'anonblock' => 28, 'macro' => 70, 'filter' => 69, 'use' => 72, 'chunk' => 71, 'item' => 29, 'condition' => 33, 'perl' => 73 } }, {#State 260 ACTIONS => { 'IDENT' => -96, 'COMMA' => -96, ")" => -96 }, DEFAULT => -130 }, {#State 261 ACTIONS => { 'IDENT' => 295, 'COMMA' => 294, ")" => 296 } }, {#State 262 ACTIONS => { 'END' => 297 } }, {#State 263 ACTIONS => { 'WHILE' => 60, 'USE' => 59, "{" => 62, "(" => 61, 'TRY' => 67, 'INSERT' => 66, 'FILTER' => 68, 'IF' => 34, 'INCLUDE' => 43, 'RAWPERL' => 44, 'STOP' => 39, 'THROW' => 38, "[" => 41, 'PERL' => 46, "\$" => 48, "\"" => 47, 'SET' => 52, 'META' => 53, 'NEXT' => 49, 'LAST' => 14, 'REF' => 17, 'DEBUG' => 16, 'NOT' => 12, 'IDENT' => 13, 'CLEAR' => 20, "\${" => 21, 'RETURN' => 22, 'WRAPPER' => 19, 'SWITCH' => 26, 'VIEW' => 25, 'NUMBER' => 23, 'GET' => 27, 'LITERAL' => 31, 'BLOCK' => 32, 'FOR' => 30, 'DEFAULT' => 2, 'PROCESS' => 4, ";" => -18, 'MACRO' => 10, 'UNLESS' => 9, 'CALL' => 8, 'TEXT' => 7 }, DEFAULT => -3, GOTOS => { 'try' => 5, 'view' => 40, 'lterm' => 42, 'block' => 298, 'rawperl' => 3, 'setlist' => 37, 'sterm' => 36, 'atomexpr' => 35, 'directive' => 51, 'defblockname' => 50, 'atomdir' => 6, 'statement' => 11, 'loop' => 45, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'assign' => 18, 'expr' => 58, 'wrapper' => 56, 'capture' => 55, 'node' => 57, 'term' => 15, 'use' => 72, 'item' => 29, 'chunk' => 71, 'macro' => 70, 'anonblock' => 28, 'filter' => 69, 'condition' => 33, 'perl' => 73, 'ident' => 24 } }, {#State 264 ACTIONS => { 'CASE' => 299 }, DEFAULT => -55, GOTOS => { 'case' => 300 } }, {#State 265 DEFAULT => -129 }, {#State 266 ACTIONS => { 'FILTER' => 68, 'INSERT' => 66, 'TRY' => 67, 'USE' => 59, 'WHILE' => 60, "(" => 61, "{" => 62, 'SET' => 52, 'META' => 53, 'NEXT' => 49, 'PERL' => 46, "\"" => 47, "\$" => 48, 'INCLUDE' => 43, 'RAWPERL' => 44, 'THROW' => 38, 'STOP' => 39, "[" => 41, 'IF' => 34, 'BLOCK' => 32, 'LITERAL' => 31, 'FOR' => 30, 'NUMBER' => 23, 'SWITCH' => 26, 'VIEW' => 25, 'GET' => 27, 'WRAPPER' => 19, "\${" => 21, 'CLEAR' => 20, 'RETURN' => 22, 'LAST' => 14, 'REF' => 17, 'DEBUG' => 16, 'NOT' => 12, 'IDENT' => 13, 'TEXT' => 7, 'CALL' => 8, 'MACRO' => 10, 'UNLESS' => 9, ";" => -18, 'PROCESS' => 4, 'DEFAULT' => 2 }, DEFAULT => -3, GOTOS => { 'expr' => 58, 'assign' => 18, 'defblock' => 65, 'switch' => 64, 'chunks' => 63, 'wrapper' => 56, 'capture' => 55, 'term' => 15, 'node' => 57, 'filter' => 69, 'macro' => 70, 'anonblock' => 28, 'chunk' => 71, 'item' => 29, 'use' => 72, 'perl' => 73, 'condition' => 33, 'ident' => 24, 'view' => 40, 'try' => 5, 'lterm' => 42, 'block' => 301, 'atomexpr' => 35, 'sterm' => 36, 'setlist' => 37, 'rawperl' => 3, 'atomdir' => 6, 'defblockname' => 50, 'directive' => 51, 'statement' => 11, 'loop' => 45 } }, {#State 267 DEFAULT => -156, GOTOS => { 'args' => 302 } }, {#State 268 DEFAULT => -156, GOTOS => { 'args' => 303 } }, {#State 269 ACTIONS => { 'TEXT' => 304 } }, {#State 270 DEFAULT => -100 }, {#State 271 DEFAULT => -102 }, {#State 272 ACTIONS => { 'END' => 305 } }, {#State 273 ACTIONS => { 'ELSE' => 292, 'ELSIF' => 290 }, DEFAULT => -50, GOTOS => { 'else' => 306 } }, {#State 274 DEFAULT => -117 }, {#State 275 ACTIONS => { 'END' => 307 } }, {#State 276 ACTIONS => { 'END' => 308 } }, {#State 277 ACTIONS => { 'END' => 309 } }, {#State 278 ACTIONS => { 'NOT' => 12, 'IDENT' => 13, 'NUMBER' => 23, 'REF' => 17, "\$" => 48, "\"" => 47, "[" => 41, "{" => 62, "(" => 61, "\${" => 21, 'LITERAL' => 89 }, GOTOS => { 'item' => 29, 'expr' => 310, 'lterm' => 42, 'ident' => 88, 'node' => 57, 'term' => 15, 'sterm' => 36 } }, {#State 279 ACTIONS => { 'ASSIGN' => -160 }, DEFAULT => -167 }, {#State 280 DEFAULT => -157 }, {#State 281 ACTIONS => { 'LAST' => 14, 'REF' => 17, 'DEBUG' => 16, 'IDENT' => 13, 'NOT' => 12, 'WRAPPER' => 19, 'RETURN' => 22, 'CLEAR' => 20, "\${" => 21, 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26, 'GET' => 27, 'BLOCK' => 32, 'LITERAL' => 31, 'FOR' => 30, 'DEFAULT' => 2, 'PROCESS' => 4, ";" => -18, 'CALL' => 8, 'TEXT' => 7, 'UNLESS' => 9, 'MACRO' => 10, 'WHILE' => 60, 'USE' => 59, "(" => 61, "{" => 62, 'INSERT' => 66, 'TRY' => 67, 'FILTER' => 68, 'IF' => 34, 'RAWPERL' => 44, 'INCLUDE' => 43, 'THROW' => 38, 'STOP' => 39, "[" => 41, 'PERL' => 46, "\"" => 47, "\$" => 48, 'SET' => 52, 'META' => 53, 'NEXT' => 49 }, DEFAULT => -3, GOTOS => { 'ident' => 24, 'perl' => 73, 'condition' => 33, 'filter' => 69, 'anonblock' => 28, 'macro' => 70, 'item' => 29, 'chunk' => 71, 'use' => 72, 'term' => 15, 'node' => 57, 'wrapper' => 56, 'capture' => 55, 'expr' => 58, 'assign' => 18, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'loop' => 45, 'statement' => 11, 'atomdir' => 6, 'defblockname' => 50, 'directive' => 51, 'atomexpr' => 35, 'sterm' => 36, 'rawperl' => 3, 'setlist' => 37, 'block' => 311, 'lterm' => 42, 'view' => 40, 'try' => 5 } }, {#State 282 ACTIONS => { 'CMPOP' => 148, 'CAT' => 147, "+" => 150, "/" => 144, 'BINOP' => 145, 'DIV' => 146, 'AND' => 149, 'MOD' => 141, 'OR' => 143, "?" => 142 }, DEFAULT => -123 }, {#State 283 ACTIONS => { "/" => 144, 'BINOP' => 145, 'DIV' => 146, 'CAT' => 147, 'CMPOP' => 148, "+" => 150, 'MOD' => 141, "?" => 142, 'OR' => 143, 'AND' => 149 }, DEFAULT => -124 }, {#State 284 ACTIONS => { ";" => 312 } }, {#State 285 ACTIONS => { 'FILENAME' => 81, 'IDENT' => 84, 'NUMBER' => 83, ";" => 315, 'DEFAULT' => 313 }, GOTOS => { 'filepart' => 77, 'filename' => 314 } }, {#State 286 ACTIONS => { 'END' => 316 } }, {#State 287 ACTIONS => { 'END' => 317 } }, {#State 288 DEFAULT => -164 }, {#State 289 ACTIONS => { "\"" => 47, "\$" => 48, 'REF' => 17, 'NUMBER' => 23, 'IDENT' => 13, 'NOT' => 12, 'LITERAL' => 89, "\${" => 21, "(" => 61, "[" => 41, "{" => 62 }, GOTOS => { 'lterm' => 42, 'sterm' => 36, 'term' => 15, 'node' => 57, 'expr' => 318, 'ident' => 88, 'item' => 29 } }, {#State 290 ACTIONS => { 'LITERAL' => 89, 'NUMBER' => 23, "\$" => 48, "\"" => 47, "[" => 41, "{" => 62, "(" => 61, "\${" => 21, 'IDENT' => 13, 'NOT' => 12, 'REF' => 17 }, GOTOS => { 'ident' => 88, 'term' => 15, 'sterm' => 36, 'node' => 57, 'expr' => 319, 'item' => 29, 'lterm' => 42 } }, {#State 291 ACTIONS => { 'END' => 320 } }, {#State 292 ACTIONS => { ";" => 321 } }, {#State 293 ACTIONS => { 'END' => 322 } }, {#State 294 DEFAULT => -95 }, {#State 295 DEFAULT => -94 }, {#State 296 ACTIONS => { 'PERL' => 46, "\"" => 47, "\$" => 48, 'NEXT' => 49, 'CALL' => 8, 'UNLESS' => 9, 'SET' => 52, 'IF' => 34, 'DEFAULT' => 2, 'THROW' => 38, 'STOP' => 39, 'PROCESS' => 4, "[" => 41, 'INCLUDE' => 43, 'INSERT' => 66, 'NUMBER' => 23, 'TRY' => 67, 'SWITCH' => 26, 'GET' => 27, 'FILTER' => 68, 'FOR' => 30, 'LITERAL' => 31, 'BLOCK' => 180, 'NOT' => 12, 'IDENT' => 13, 'LAST' => 14, 'DEBUG' => 16, 'REF' => 17, 'WHILE' => 60, "(" => 61, "{" => 62, 'WRAPPER' => 19, "\${" => 21, 'CLEAR' => 20, 'RETURN' => 22 }, GOTOS => { 'node' => 57, 'setlist' => 37, 'sterm' => 36, 'term' => 15, 'atomexpr' => 35, 'wrapper' => 56, 'lterm' => 42, 'try' => 5, 'switch' => 64, 'assign' => 18, 'expr' => 182, 'loop' => 45, 'ident' => 162, 'mdir' => 323, 'perl' => 73, 'condition' => 33, 'directive' => 184, 'item' => 29, 'atomdir' => 6, 'filter' => 69 } }, {#State 297 DEFAULT => -65 }, {#State 298 ACTIONS => { 'END' => 324 } }, {#State 299 ACTIONS => { 'REF' => 17, "\$" => 48, "\"" => 47, ";" => 326, 'DEFAULT' => 327, 'IDENT' => 13, 'NUMBER' => 23, "\${" => 21, 'LITERAL' => 89, "[" => 41, "{" => 62 }, GOTOS => { 'item' => 29, 'lterm' => 42, 'ident' => 88, 'node' => 57, 'sterm' => 36, 'term' => 325 } }, {#State 300 ACTIONS => { 'END' => 328 } }, {#State 301 ACTIONS => { 'END' => 329 } }, {#State 302 ACTIONS => { 'COMMA' => 253, 'LITERAL' => 249, "\$" => 48, "\"" => 47, 'NUMBER' => 23, "\${" => 21, "{" => 62, "[" => 41, "(" => 61, 'REF' => 17, 'IDENT' => 13, 'NOT' => 12 }, DEFAULT => -62, GOTOS => { 'lterm' => 42, 'item' => 250, 'expr' => 248, 'param' => 251, 'term' => 15, 'sterm' => 36, 'node' => 57, 'ident' => 252 } }, {#State 303 ACTIONS => { "(" => 61, "{" => 62, "[" => 41, "\${" => 21, 'IDENT' => 13, 'NOT' => 12, 'REF' => 17, 'COMMA' => 253, 'LITERAL' => 249, 'NUMBER' => 23, "\"" => 47, "\$" => 48 }, DEFAULT => -63, GOTOS => { 'ident' => 252, 'node' => 57, 'sterm' => 36, 'term' => 15, 'item' => 250, 'param' => 251, 'expr' => 248, 'lterm' => 42 } }, {#State 304 ACTIONS => { "\"" => 330 } }, {#State 305 DEFAULT => -88 }, {#State 306 ACTIONS => { 'END' => 331 } }, {#State 307 DEFAULT => -79 }, {#State 308 DEFAULT => -77 }, {#State 309 DEFAULT => -82 }, {#State 310 ACTIONS => { 'CMPOP' => 148, 'CAT' => 147, "+" => 150, 'BINOP' => 145, "/" => 144, 'DIV' => 146, 'AND' => 149, 'MOD' => 141, 'OR' => 143, "?" => 142 }, DEFAULT => -143 }, {#State 311 ACTIONS => { 'END' => 332 } }, {#State 312 ACTIONS => { 'USE' => 59, 'WHILE' => 60, "(" => 61, "{" => 62, 'FILTER' => 68, 'INSERT' => 66, 'TRY' => 67, 'RAWPERL' => 44, 'INCLUDE' => 43, 'THROW' => 38, 'STOP' => 39, "[" => 41, 'IF' => 34, 'SET' => 52, 'META' => 53, 'NEXT' => 49, 'PERL' => 46, "\"" => 47, "\$" => 48, 'WRAPPER' => 19, "\${" => 21, 'CLEAR' => 20, 'RETURN' => 22, 'LAST' => 14, 'REF' => 17, 'DEBUG' => 16, 'NOT' => 12, 'IDENT' => 13, 'BLOCK' => 32, 'LITERAL' => 31, 'FOR' => 30, 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26, 'GET' => 27, 'PROCESS' => 4, 'DEFAULT' => 2, 'TEXT' => 7, 'CALL' => 8, 'UNLESS' => 9, 'MACRO' => 10, ";" => -18 }, DEFAULT => -3, GOTOS => { 'atomdir' => 6, 'directive' => 51, 'defblockname' => 50, 'statement' => 11, 'loop' => 45, 'try' => 5, 'view' => 40, 'lterm' => 42, 'block' => 333, 'atomexpr' => 35, 'setlist' => 37, 'rawperl' => 3, 'sterm' => 36, 'macro' => 70, 'anonblock' => 28, 'filter' => 69, 'use' => 72, 'chunk' => 71, 'item' => 29, 'condition' => 33, 'perl' => 73, 'ident' => 24, 'assign' => 18, 'expr' => 58, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'capture' => 55, 'wrapper' => 56, 'node' => 57, 'term' => 15 } }, {#State 313 ACTIONS => { ";" => 334 } }, {#State 314 ACTIONS => { ";" => 335, 'DOT' => 178 } }, {#State 315 ACTIONS => { 'STOP' => 39, 'THROW' => 38, "[" => 41, 'RAWPERL' => 44, 'INCLUDE' => 43, 'IF' => 34, 'NEXT' => 49, 'SET' => 52, 'META' => 53, 'PERL' => 46, "\$" => 48, "\"" => 47, 'WHILE' => 60, 'USE' => 59, "{" => 62, "(" => 61, 'FILTER' => 68, 'TRY' => 67, 'INSERT' => 66, 'PROCESS' => 4, 'DEFAULT' => 2, 'MACRO' => 10, 'UNLESS' => 9, 'CALL' => 8, 'TEXT' => 7, ";" => -18, 'CLEAR' => 20, "\${" => 21, 'RETURN' => 22, 'WRAPPER' => 19, 'IDENT' => 13, 'NOT' => 12, 'LAST' => 14, 'DEBUG' => 16, 'REF' => 17, 'FOR' => 30, 'LITERAL' => 31, 'BLOCK' => 32, 'VIEW' => 25, 'SWITCH' => 26, 'NUMBER' => 23, 'GET' => 27 }, DEFAULT => -3, GOTOS => { 'lterm' => 42, 'view' => 40, 'try' => 5, 'sterm' => 36, 'rawperl' => 3, 'setlist' => 37, 'atomexpr' => 35, 'block' => 336, 'statement' => 11, 'defblockname' => 50, 'directive' => 51, 'atomdir' => 6, 'loop' => 45, 'chunks' => 63, 'switch' => 64, 'defblock' => 65, 'expr' => 58, 'assign' => 18, 'term' => 15, 'node' => 57, 'wrapper' => 56, 'capture' => 55, 'condition' => 33, 'perl' => 73, 'chunk' => 71, 'item' => 29, 'use' => 72, 'filter' => 69, 'anonblock' => 28, 'macro' => 70, 'ident' => 24 } }, {#State 316 DEFAULT => -67 }, {#State 317 DEFAULT => -80 }, {#State 318 ACTIONS => { 'AND' => 149, 'MOD' => 141, "?" => 142, 'OR' => 143, 'CAT' => 147, 'CMPOP' => 148, "+" => 150, "/" => 144, 'BINOP' => 145, 'DIV' => 146 }, DEFAULT => -154 }, {#State 319 ACTIONS => { 'CAT' => 147, 'MOD' => 141, 'BINOP' => 145, 'AND' => 149, "/" => 144, 'CMPOP' => 148, ";" => 337, "+" => 150, "?" => 142, 'OR' => 143, 'DIV' => 146 } }, {#State 320 DEFAULT => -46 }, {#State 321 ACTIONS => { 'TRY' => 67, 'INSERT' => 66, 'FILTER' => 68, 'WHILE' => 60, 'USE' => 59, "{" => 62, "(" => 61, 'PERL' => 46, "\$" => 48, "\"" => 47, 'NEXT' => 49, 'SET' => 52, 'META' => 53, 'IF' => 34, 'STOP' => 39, 'THROW' => 38, "[" => 41, 'RAWPERL' => 44, 'INCLUDE' => 43, 'SWITCH' => 26, 'VIEW' => 25, 'NUMBER' => 23, 'GET' => 27, 'FOR' => 30, 'BLOCK' => 32, 'LITERAL' => 31, 'NOT' => 12, 'IDENT' => 13, 'LAST' => 14, 'REF' => 17, 'DEBUG' => 16, "\${" => 21, 'RETURN' => 22, 'CLEAR' => 20, 'WRAPPER' => 19, ";" => -18, 'UNLESS' => 9, 'MACRO' => 10, 'CALL' => 8, 'TEXT' => 7, 'DEFAULT' => 2, 'PROCESS' => 4 }, DEFAULT => -3, GOTOS => { 'term' => 15, 'node' => 57, 'wrapper' => 56, 'capture' => 55, 'expr' => 58, 'assign' => 18, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'ident' => 24, 'condition' => 33, 'perl' => 73, 'filter' => 69, 'anonblock' => 28, 'macro' => 70, 'chunk' => 71, 'item' => 29, 'use' => 72, 'atomexpr' => 35, 'sterm' => 36, 'rawperl' => 3, 'setlist' => 37, 'block' => 338, 'lterm' => 42, 'view' => 40, 'try' => 5, 'loop' => 45, 'statement' => 11, 'atomdir' => 6, 'defblockname' => 50, 'directive' => 51 } }, {#State 322 DEFAULT => -93 }, {#State 323 DEFAULT => -90 }, {#State 324 DEFAULT => -75 }, {#State 325 ACTIONS => { ";" => 339 } }, {#State 326 ACTIONS => { 'FOR' => 30, 'BLOCK' => 32, 'LITERAL' => 31, 'NUMBER' => 23, 'SWITCH' => 26, 'VIEW' => 25, 'GET' => 27, 'WRAPPER' => 19, "\${" => 21, 'RETURN' => 22, 'CLEAR' => 20, 'IDENT' => 13, 'NOT' => 12, 'LAST' => 14, 'DEBUG' => 16, 'REF' => 17, 'TEXT' => 7, 'CALL' => 8, 'MACRO' => 10, 'UNLESS' => 9, ";" => -18, 'PROCESS' => 4, 'DEFAULT' => 2, 'FILTER' => 68, 'INSERT' => 66, 'TRY' => 67, 'USE' => 59, 'WHILE' => 60, "(" => 61, "{" => 62, 'NEXT' => 49, 'SET' => 52, 'META' => 53, 'PERL' => 46, "\"" => 47, "\$" => 48, 'THROW' => 38, 'STOP' => 39, "[" => 41, 'INCLUDE' => 43, 'RAWPERL' => 44, 'IF' => 34 }, DEFAULT => -3, GOTOS => { 'atomdir' => 6, 'directive' => 51, 'defblockname' => 50, 'statement' => 11, 'loop' => 45, 'try' => 5, 'view' => 40, 'lterm' => 42, 'block' => 340, 'atomexpr' => 35, 'rawperl' => 3, 'setlist' => 37, 'sterm' => 36, 'macro' => 70, 'anonblock' => 28, 'filter' => 69, 'use' => 72, 'chunk' => 71, 'item' => 29, 'condition' => 33, 'perl' => 73, 'ident' => 24, 'assign' => 18, 'expr' => 58, 'switch' => 64, 'defblock' => 65, 'chunks' => 63, 'capture' => 55, 'wrapper' => 56, 'node' => 57, 'term' => 15 } }, {#State 327 ACTIONS => { ";" => 341 } }, {#State 328 DEFAULT => -51 }, {#State 329 DEFAULT => -57 }, {#State 330 DEFAULT => -101 }, {#State 331 DEFAULT => -44 }, {#State 332 DEFAULT => -60 }, {#State 333 DEFAULT => -71 }, {#State 334 ACTIONS => { "[" => 41, 'THROW' => 38, 'STOP' => 39, 'INCLUDE' => 43, 'RAWPERL' => 44, 'IF' => 34, 'NEXT' => 49, 'META' => 53, 'SET' => 52, "\"" => 47, "\$" => 48, 'PERL' => 46, "(" => 61, "{" => 62, 'USE' => 59, 'WHILE' => 60, 'FILTER' => 68, 'INSERT' => 66, 'TRY' => 67, 'PROCESS' => 4, 'DEFAULT' => 2, 'CALL' => 8, 'TEXT' => 7, 'UNLESS' => 9, 'MACRO' => 10, ";" => -18, 'WRAPPER' => 19, 'RETURN' => 22, 'CLEAR' => 20, "\${" => 21, 'NOT' => 12, 'IDENT' => 13, 'DEBUG' => 16, 'REF' => 17, 'LAST' => 14, 'FOR' => 30, 'BLOCK' => 32, 'LITERAL' => 31, 'GET' => 27, 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26 }, DEFAULT => -3, GOTOS => { 'node' => 57, 'term' => 15, 'capture' => 55, 'wrapper' => 56, 'assign' => 18, 'expr' => 58, 'defblock' => 65, 'switch' => 64, 'chunks' => 63, 'ident' => 24, 'condition' => 33, 'perl' => 73, 'anonblock' => 28, 'macro' => 70, 'filter' => 69, 'use' => 72, 'chunk' => 71, 'item' => 29, 'atomexpr' => 35, 'setlist' => 37, 'rawperl' => 3, 'sterm' => 36, 'block' => 342, 'lterm' => 42, 'try' => 5, 'view' => 40, 'loop' => 45, 'statement' => 11, 'atomdir' => 6, 'directive' => 51, 'defblockname' => 50 } }, {#State 335 ACTIONS => { 'FOR' => 30, 'BLOCK' => 32, 'LITERAL' => 31, 'VIEW' => 25, 'SWITCH' => 26, 'NUMBER' => 23, 'GET' => 27, 'CLEAR' => 20, "\${" => 21, 'RETURN' => 22, 'WRAPPER' => 19, 'NOT' => 12, 'IDENT' => 13, 'LAST' => 14, 'REF' => 17, 'DEBUG' => 16, 'UNLESS' => 9, 'MACRO' => 10, 'CALL' => 8, 'TEXT' => 7, ";" => -18, 'PROCESS' => 4, 'DEFAULT' => 2, 'FILTER' => 68, 'TRY' => 67, 'INSERT' => 66, 'USE' => 59, 'WHILE' => 60, "{" => 62, "(" => 61, 'NEXT' => 49, 'SET' => 52, 'META' => 53, 'PERL' => 46, "\$" => 48, "\"" => 47, 'STOP' => 39, 'THROW' => 38, "[" => 41, 'RAWPERL' => 44, 'INCLUDE' => 43, 'IF' => 34 }, DEFAULT => -3, GOTOS => { 'perl' => 73, 'condition' => 33, 'chunk' => 71, 'item' => 29, 'use' => 72, 'filter' => 69, 'anonblock' => 28, 'macro' => 70, 'ident' => 24, 'defblock' => 65, 'switch' => 64, 'chunks' => 63, 'expr' => 58, 'assign' => 18, 'term' => 15, 'node' => 57, 'wrapper' => 56, 'capture' => 55, 'statement' => 11, 'defblockname' => 50, 'directive' => 51, 'atomdir' => 6, 'loop' => 45, 'lterm' => 42, 'view' => 40, 'try' => 5, 'sterm' => 36, 'rawperl' => 3, 'setlist' => 37, 'atomexpr' => 35, 'block' => 343 } }, {#State 336 ACTIONS => { 'CATCH' => 285, 'FINAL' => 284 }, DEFAULT => -72, GOTOS => { 'final' => 344 } }, {#State 337 ACTIONS => { 'WRAPPER' => 19, "\${" => 21, 'RETURN' => 22, 'CLEAR' => 20, 'NOT' => 12, 'IDENT' => 13, 'LAST' => 14, 'DEBUG' => 16, 'REF' => 17, 'FOR' => 30, 'BLOCK' => 32, 'LITERAL' => 31, 'NUMBER' => 23, 'SWITCH' => 26, 'VIEW' => 25, 'GET' => 27, 'PROCESS' => 4, 'DEFAULT' => 2, 'CALL' => 8, 'TEXT' => 7, 'UNLESS' => 9, 'MACRO' => 10, ";" => -18, 'WHILE' => 60, 'USE' => 59, "(" => 61, "{" => 62, 'FILTER' => 68, 'INSERT' => 66, 'TRY' => 67, 'THROW' => 38, 'STOP' => 39, "[" => 41, 'RAWPERL' => 44, 'INCLUDE' => 43, 'IF' => 34, 'NEXT' => 49, 'SET' => 52, 'META' => 53, 'PERL' => 46, "\"" => 47, "\$" => 48 }, DEFAULT => -3, GOTOS => { 'defblock' => 65, 'switch' => 64, 'chunks' => 63, 'assign' => 18, 'expr' => 58, 'wrapper' => 56, 'capture' => 55, 'node' => 57, 'term' => 15, 'use' => 72, 'chunk' => 71, 'item' => 29, 'macro' => 70, 'anonblock' => 28, 'filter' => 69, 'perl' => 73, 'condition' => 33, 'ident' => 24, 'try' => 5, 'view' => 40, 'lterm' => 42, 'block' => 345, 'setlist' => 37, 'rawperl' => 3, 'sterm' => 36, 'atomexpr' => 35, 'directive' => 51, 'defblockname' => 50, 'atomdir' => 6, 'statement' => 11, 'loop' => 45 } }, {#State 338 DEFAULT => -49 }, {#State 339 ACTIONS => { 'META' => 53, 'SET' => 52, 'NEXT' => 49, "\$" => 48, "\"" => 47, 'PERL' => 46, 'INCLUDE' => 43, 'RAWPERL' => 44, "[" => 41, 'STOP' => 39, 'THROW' => 38, 'IF' => 34, 'FILTER' => 68, 'TRY' => 67, 'INSERT' => 66, "{" => 62, "(" => 61, 'USE' => 59, 'WHILE' => 60, 'UNLESS' => 9, 'MACRO' => 10, 'TEXT' => 7, 'CALL' => 8, ";" => -18, 'PROCESS' => 4, 'DEFAULT' => 2, 'LITERAL' => 31, 'BLOCK' => 32, 'FOR' => 30, 'GET' => 27, 'VIEW' => 25, 'SWITCH' => 26, 'NUMBER' => 23, 'RETURN' => 22, 'CLEAR' => 20, "\${" => 21, 'WRAPPER' => 19, 'DEBUG' => 16, 'REF' => 17, 'LAST' => 14, 'NOT' => 12, 'IDENT' => 13 }, DEFAULT => -3, GOTOS => { 'statement' => 11, 'directive' => 51, 'defblockname' => 50, 'atomdir' => 6, 'loop' => 45, 'lterm' => 42, 'try' => 5, 'view' => 40, 'setlist' => 37, 'rawperl' => 3, 'sterm' => 36, 'atomexpr' => 35, 'block' => 346, 'condition' => 33, 'perl' => 73, 'use' => 72, 'item' => 29, 'chunk' => 71, 'macro' => 70, 'anonblock' => 28, 'filter' => 69, 'ident' => 24, 'chunks' => 63, 'defblock' => 65, 'switch' => 64, 'assign' => 18, 'expr' => 58, 'node' => 57, 'term' => 15, 'capture' => 55, 'wrapper' => 56 } }, {#State 340 DEFAULT => -54 }, {#State 341 ACTIONS => { 'IDENT' => 13, 'NOT' => 12, 'DEBUG' => 16, 'REF' => 17, 'LAST' => 14, 'WRAPPER' => 19, 'RETURN' => 22, 'CLEAR' => 20, "\${" => 21, 'GET' => 27, 'NUMBER' => 23, 'VIEW' => 25, 'SWITCH' => 26, 'FOR' => 30, 'LITERAL' => 31, 'BLOCK' => 32, 'DEFAULT' => 2, 'PROCESS' => 4, ";" => -18, 'TEXT' => 7, 'CALL' => 8, 'UNLESS' => 9, 'MACRO' => 10, "(" => 61, "{" => 62, 'WHILE' => 60, 'USE' => 59, 'INSERT' => 66, 'TRY' => 67, 'FILTER' => 68, 'IF' => 34, "[" => 41, 'THROW' => 38, 'STOP' => 39, 'INCLUDE' => 43, 'RAWPERL' => 44, "\"" => 47, "\$" => 48, 'PERL' => 46, 'NEXT' => 49, 'META' => 53, 'SET' => 52 }, DEFAULT => -3, GOTOS => { 'chunks' => 63, 'switch' => 64, 'defblock' => 65, 'assign' => 18, 'expr' => 58, 'node' => 57, 'term' => 15, 'wrapper' => 56, 'capture' => 55, 'condition' => 33, 'perl' => 73, 'use' => 72, 'item' => 29, 'chunk' => 71, 'macro' => 70, 'anonblock' => 28, 'filter' => 69, 'ident' => 24, 'lterm' => 42, 'try' => 5, 'view' => 40, 'rawperl' => 3, 'setlist' => 37, 'sterm' => 36, 'atomexpr' => 35, 'block' => 347, 'statement' => 11, 'directive' => 51, 'defblockname' => 50, 'atomdir' => 6, 'loop' => 45 } }, {#State 342 ACTIONS => { 'CATCH' => 285, 'FINAL' => 284 }, DEFAULT => -72, GOTOS => { 'final' => 348 } }, {#State 343 ACTIONS => { 'FINAL' => 284, 'CATCH' => 285 }, DEFAULT => -72, GOTOS => { 'final' => 349 } }, {#State 344 DEFAULT => -70 }, {#State 345 ACTIONS => { 'ELSE' => 292, 'ELSIF' => 290 }, DEFAULT => -50, GOTOS => { 'else' => 350 } }, {#State 346 ACTIONS => { 'CASE' => 299 }, DEFAULT => -55, GOTOS => { 'case' => 351 } }, {#State 347 DEFAULT => -53 }, {#State 348 DEFAULT => -69 }, {#State 349 DEFAULT => -68 }, {#State 350 DEFAULT => -48 }, {#State 351 DEFAULT => -52 } ]; #======================================================================== # Rules #======================================================================== $RULES = [ [#Rule 0 '$start', 2, undef ], [#Rule 1 'template', 1, sub #line 64 "Parser.yp" { $factory->template($_[1]) } ], [#Rule 2 'block', 1, sub #line 67 "Parser.yp" { $factory->block($_[1]) } ], [#Rule 3 'block', 0, sub #line 68 "Parser.yp" { $factory->block() } ], [#Rule 4 'chunks', 2, sub #line 71 "Parser.yp" { push(@{$_[1]}, $_[2]) if defined $_[2]; $_[1] } ], [#Rule 5 'chunks', 1, sub #line 73 "Parser.yp" { defined $_[1] ? [ $_[1] ] : [ ] } ], [#Rule 6 'chunk', 1, sub #line 76 "Parser.yp" { $factory->textblock($_[1]) } ], [#Rule 7 'chunk', 2, sub #line 77 "Parser.yp" { return '' unless $_[1]; $_[0]->location() . $_[1]; } ], [#Rule 8 'statement', 1, undef ], [#Rule 9 'statement', 1, undef ], [#Rule 10 'statement', 1, undef ], [#Rule 11 'statement', 1, undef ], [#Rule 12 'statement', 1, undef ], [#Rule 13 'statement', 1, undef ], [#Rule 14 'statement', 1, undef ], [#Rule 15 'statement', 1, undef ], [#Rule 16 'statement', 1, sub #line 90 "Parser.yp" { $factory->get($_[1]) } ], [#Rule 17 'statement', 2, sub #line 91 "Parser.yp" { $_[0]->add_metadata($_[2]); } ], [#Rule 18 'statement', 0, undef ], [#Rule 19 'directive', 1, sub #line 95 "Parser.yp" { $factory->set($_[1]) } ], [#Rule 20 'directive', 1, undef ], [#Rule 21 'directive', 1, undef ], [#Rule 22 'directive', 1, undef ], [#Rule 23 'directive', 1, undef ], [#Rule 24 'directive', 1, undef ], [#Rule 25 'directive', 1, undef ], [#Rule 26 'atomexpr', 1, sub #line 109 "Parser.yp" { $factory->get($_[1]) } ], [#Rule 27 'atomexpr', 1, undef ], [#Rule 28 'atomdir', 2, sub #line 113 "Parser.yp" { $factory->get($_[2]) } ], [#Rule 29 'atomdir', 2, sub #line 114 "Parser.yp" { $factory->call($_[2]) } ], [#Rule 30 'atomdir', 2, sub #line 115 "Parser.yp" { $factory->set($_[2]) } ], [#Rule 31 'atomdir', 2, sub #line 116 "Parser.yp" { $factory->default($_[2]) } ], [#Rule 32 'atomdir', 2, sub #line 117 "Parser.yp" { $factory->insert($_[2]) } ], [#Rule 33 'atomdir', 2, sub #line 118 "Parser.yp" { $factory->include($_[2]) } ], [#Rule 34 'atomdir', 2, sub #line 119 "Parser.yp" { $factory->process($_[2]) } ], [#Rule 35 'atomdir', 2, sub #line 120 "Parser.yp" { $factory->throw($_[2]) } ], [#Rule 36 'atomdir', 1, sub #line 121 "Parser.yp" { $factory->return() } ], [#Rule 37 'atomdir', 1, sub #line 122 "Parser.yp" { $factory->stop() } ], [#Rule 38 'atomdir', 1, sub #line 123 "Parser.yp" { "\$output = '';"; } ], [#Rule 39 'atomdir', 1, sub #line 124 "Parser.yp" { $_[0]->block_label('last ', ';') } ], [#Rule 40 'atomdir', 1, sub #line 125 "Parser.yp" { $_[0]->in_block('FOR') ? $factory->next($_[0]->block_label) : $_[0]->block_label('next ', ';') } ], [#Rule 41 'atomdir', 2, sub #line 128 "Parser.yp" { if ($_[2]->[0]->[0] =~ /^'(on|off)'$/) { $_[0]->{ DEBUG_DIRS } = ($1 eq 'on'); $factory->debug($_[2]); } else { $_[0]->{ DEBUG_DIRS } ? $factory->debug($_[2]) : ''; } } ], [#Rule 42 'atomdir', 1, undef ], [#Rule 43 'atomdir', 1, undef ], [#Rule 44 'condition', 6, sub #line 141 "Parser.yp" { $factory->if(@_[2, 4, 5]) } ], [#Rule 45 'condition', 3, sub #line 142 "Parser.yp" { $factory->if(@_[3, 1]) } ], [#Rule 46 'condition', 6, sub #line 144 "Parser.yp" { $factory->if("!($_[2])", @_[4, 5]) } ], [#Rule 47 'condition', 3, sub #line 145 "Parser.yp" { $factory->if("!($_[3])", $_[1]) } ], [#Rule 48 'else', 5, sub #line 149 "Parser.yp" { unshift(@{$_[5]}, [ @_[2, 4] ]); $_[5]; } ], [#Rule 49 'else', 3, sub #line 151 "Parser.yp" { [ $_[3] ] } ], [#Rule 50 'else', 0, sub #line 152 "Parser.yp" { [ undef ] } ], [#Rule 51 'switch', 6, sub #line 156 "Parser.yp" { $factory->switch(@_[2, 5]) } ], [#Rule 52 'case', 5, sub #line 160 "Parser.yp" { unshift(@{$_[5]}, [ @_[2, 4] ]); $_[5]; } ], [#Rule 53 'case', 4, sub #line 162 "Parser.yp" { [ $_[4] ] } ], [#Rule 54 'case', 3, sub #line 163 "Parser.yp" { [ $_[3] ] } ], [#Rule 55 'case', 0, sub #line 164 "Parser.yp" { [ undef ] } ], [#Rule 56 '@1-3', 0, sub #line 167 "Parser.yp" { $_[0]->enter_block('FOR') } ], [#Rule 57 'loop', 6, sub #line 168 "Parser.yp" { $factory->foreach(@{$_[2]}, $_[5], $_[0]->leave_block) } ], [#Rule 58 'loop', 3, sub #line 169 "Parser.yp" { $factory->foreach(@{$_[3]}, $_[1]) } ], [#Rule 59 '@2-3', 0, sub #line 170 "Parser.yp" { $_[0]->enter_block('WHILE') } ], [#Rule 60 'loop', 6, sub #line 171 "Parser.yp" { $factory->while(@_[2, 5], $_[0]->leave_block) } ], [#Rule 61 'loop', 3, sub #line 172 "Parser.yp" { $factory->while(@_[3, 1]) } ], [#Rule 62 'loopvar', 4, sub #line 175 "Parser.yp" { [ @_[1, 3, 4] ] } ], [#Rule 63 'loopvar', 4, sub #line 176 "Parser.yp" { [ @_[1, 3, 4] ] } ], [#Rule 64 'loopvar', 2, sub #line 177 "Parser.yp" { [ 0, @_[1, 2] ] } ], [#Rule 65 'wrapper', 5, sub #line 181 "Parser.yp" { $factory->wrapper(@_[2, 4]) } ], [#Rule 66 'wrapper', 3, sub #line 183 "Parser.yp" { $factory->wrapper(@_[3, 1]) } ], [#Rule 67 'try', 5, sub #line 187 "Parser.yp" { $factory->try(@_[3, 4]) } ], [#Rule 68 'final', 5, sub #line 191 "Parser.yp" { unshift(@{$_[5]}, [ @_[2,4] ]); $_[5]; } ], [#Rule 69 'final', 5, sub #line 194 "Parser.yp" { unshift(@{$_[5]}, [ undef, $_[4] ]); $_[5]; } ], [#Rule 70 'final', 4, sub #line 197 "Parser.yp" { unshift(@{$_[4]}, [ undef, $_[3] ]); $_[4]; } ], [#Rule 71 'final', 3, sub #line 199 "Parser.yp" { [ $_[3] ] } ], [#Rule 72 'final', 0, sub #line 200 "Parser.yp" { [ 0 ] } ], [#Rule 73 'use', 2, sub #line 203 "Parser.yp" { $factory->use($_[2]) } ], [#Rule 74 '@3-3', 0, sub #line 206 "Parser.yp" { $_[0]->push_defblock(); } ], [#Rule 75 'view', 6, sub #line 207 "Parser.yp" { $factory->view(@_[2,5], $_[0]->pop_defblock) } ], [#Rule 76 '@4-2', 0, sub #line 211 "Parser.yp" { ${$_[0]->{ INPERL }}++; } ], [#Rule 77 'perl', 5, sub #line 212 "Parser.yp" { ${$_[0]->{ INPERL }}--; $_[0]->{ EVAL_PERL } ? $factory->perl($_[4]) : $factory->no_perl(); } ], [#Rule 78 '@5-1', 0, sub #line 218 "Parser.yp" { ${$_[0]->{ INPERL }}++; $rawstart = ${$_[0]->{'LINE'}}; } ], [#Rule 79 'rawperl', 5, sub #line 220 "Parser.yp" { ${$_[0]->{ INPERL }}--; $_[0]->{ EVAL_PERL } ? $factory->rawperl($_[4], $rawstart) : $factory->no_perl(); } ], [#Rule 80 'filter', 5, sub #line 227 "Parser.yp" { $factory->filter(@_[2,4]) } ], [#Rule 81 'filter', 3, sub #line 229 "Parser.yp" { $factory->filter(@_[3,1]) } ], [#Rule 82 'defblock', 5, sub #line 234 "Parser.yp" { my $name = join('/', @{ $_[0]->{ DEFBLOCKS } }); pop(@{ $_[0]->{ DEFBLOCKS } }); $_[0]->define_block($name, $_[4]); undef } ], [#Rule 83 'defblockname', 2, sub #line 241 "Parser.yp" { push(@{ $_[0]->{ DEFBLOCKS } }, $_[2]); $_[2]; } ], [#Rule 84 'blockname', 1, undef ], [#Rule 85 'blockname', 1, sub #line 247 "Parser.yp" { $_[1] =~ s/^'(.*)'$/$1/; $_[1] } ], [#Rule 86 'blockargs', 1, undef ], [#Rule 87 'blockargs', 0, undef ], [#Rule 88 'anonblock', 5, sub #line 255 "Parser.yp" { local $" = ', '; print STDERR "experimental block args: [@{ $_[2] }]\n" if $_[2]; $factory->anon_block($_[4]) } ], [#Rule 89 'capture', 3, sub #line 261 "Parser.yp" { $factory->capture(@_[1, 3]) } ], [#Rule 90 'macro', 6, sub #line 265 "Parser.yp" { $factory->macro(@_[2, 6, 4]) } ], [#Rule 91 'macro', 3, sub #line 266 "Parser.yp" { $factory->macro(@_[2, 3]) } ], [#Rule 92 'mdir', 1, undef ], [#Rule 93 'mdir', 4, sub #line 270 "Parser.yp" { $_[3] } ], [#Rule 94 'margs', 2, sub #line 273 "Parser.yp" { push(@{$_[1]}, $_[2]); $_[1] } ], [#Rule 95 'margs', 2, sub #line 274 "Parser.yp" { $_[1] } ], [#Rule 96 'margs', 1, sub #line 275 "Parser.yp" { [ $_[1] ] } ], [#Rule 97 'metadata', 2, sub #line 278 "Parser.yp" { push(@{$_[1]}, @{$_[2]}); $_[1] } ], [#Rule 98 'metadata', 2, undef ], [#Rule 99 'metadata', 1, undef ], [#Rule 100 'meta', 3, sub #line 283 "Parser.yp" { for ($_[3]) { s/^'//; s/'$//; s/\\'/'/g }; [ @_[1,3] ] } ], [#Rule 101 'meta', 5, sub #line 286 "Parser.yp" { [ @_[1,4] ] } ], [#Rule 102 'meta', 3, sub #line 287 "Parser.yp" { [ @_[1,3] ] } ], [#Rule 103 'term', 1, undef ], [#Rule 104 'term', 1, undef ], [#Rule 105 'lterm', 3, sub #line 299 "Parser.yp" { "[ $_[2] ]" } ], [#Rule 106 'lterm', 3, sub #line 300 "Parser.yp" { "[ $_[2] ]" } ], [#Rule 107 'lterm', 2, sub #line 301 "Parser.yp" { "[ ]" } ], [#Rule 108 'lterm', 3, sub #line 302 "Parser.yp" { "{ $_[2] }" } ], [#Rule 109 'sterm', 1, sub #line 305 "Parser.yp" { $factory->ident($_[1]) } ], [#Rule 110 'sterm', 2, sub #line 306 "Parser.yp" { $factory->identref($_[2]) } ], [#Rule 111 'sterm', 3, sub #line 307 "Parser.yp" { $factory->quoted($_[2]) } ], [#Rule 112 'sterm', 1, undef ], [#Rule 113 'sterm', 1, undef ], [#Rule 114 'list', 2, sub #line 312 "Parser.yp" { "$_[1], $_[2]" } ], [#Rule 115 'list', 2, undef ], [#Rule 116 'list', 1, undef ], [#Rule 117 'range', 3, sub #line 317 "Parser.yp" { $_[1] . '..' . $_[3] } ], [#Rule 118 'hash', 1, undef ], [#Rule 119 'hash', 0, sub #line 322 "Parser.yp" { "" } ], [#Rule 120 'params', 2, sub #line 325 "Parser.yp" { "$_[1], $_[2]" } ], [#Rule 121 'params', 2, undef ], [#Rule 122 'params', 1, undef ], [#Rule 123 'param', 3, sub #line 330 "Parser.yp" { "$_[1] => $_[3]" } ], [#Rule 124 'param', 3, sub #line 331 "Parser.yp" { "$_[1] => $_[3]" } ], [#Rule 125 'ident', 3, sub #line 334 "Parser.yp" { push(@{$_[1]}, @{$_[3]}); $_[1] } ], [#Rule 126 'ident', 3, sub #line 335 "Parser.yp" { push(@{$_[1]}, map {($_, 0)} split(/\./, $_[3])); $_[1]; } ], [#Rule 127 'ident', 1, undef ], [#Rule 128 'node', 1, sub #line 341 "Parser.yp" { [ $_[1], 0 ] } ], [#Rule 129 'node', 4, sub #line 342 "Parser.yp" { [ $_[1], $factory->args($_[3]) ] } ], [#Rule 130 'item', 1, sub #line 345 "Parser.yp" { "'$_[1]'" } ], [#Rule 131 'item', 3, sub #line 346 "Parser.yp" { $_[2] } ], [#Rule 132 'item', 2, sub #line 347 "Parser.yp" { $_[0]->{ V1DOLLAR } ? "'$_[2]'" : $factory->ident(["'$_[2]'", 0]) } ], [#Rule 133 'expr', 3, sub #line 352 "Parser.yp" { "$_[1] $_[2] $_[3]" } ], [#Rule 134 'expr', 3, sub #line 353 "Parser.yp" { "$_[1] $_[2] $_[3]" } ], [#Rule 135 'expr', 3, sub #line 354 "Parser.yp" { "$_[1] $_[2] $_[3]" } ], [#Rule 136 'expr', 3, sub #line 355 "Parser.yp" { "int($_[1] / $_[3])" } ], [#Rule 137 'expr', 3, sub #line 356 "Parser.yp" { "$_[1] % $_[3]" } ], [#Rule 138 'expr', 3, sub #line 357 "Parser.yp" { "$_[1] $CMPOP{ $_[2] } $_[3]" } ], [#Rule 139 'expr', 3, sub #line 358 "Parser.yp" { "$_[1] . $_[3]" } ], [#Rule 140 'expr', 3, sub #line 359 "Parser.yp" { "$_[1] && $_[3]" } ], [#Rule 141 'expr', 3, sub #line 360 "Parser.yp" { "$_[1] || $_[3]" } ], [#Rule 142 'expr', 2, sub #line 361 "Parser.yp" { "! $_[2]" } ], [#Rule 143 'expr', 5, sub #line 362 "Parser.yp" { "$_[1] ? $_[3] : $_[5]" } ], [#Rule 144 'expr', 3, sub #line 363 "Parser.yp" { $factory->assign(@{$_[2]}) } ], [#Rule 145 'expr', 3, sub #line 364 "Parser.yp" { "($_[2])" } ], [#Rule 146 'expr', 1, undef ], [#Rule 147 'setlist', 2, sub #line 368 "Parser.yp" { push(@{$_[1]}, @{$_[2]}); $_[1] } ], [#Rule 148 'setlist', 2, undef ], [#Rule 149 'setlist', 1, undef ], [#Rule 150 'assign', 3, sub #line 374 "Parser.yp" { [ $_[1], $_[3] ] } ], [#Rule 151 'assign', 3, sub #line 375 "Parser.yp" { [ @_[1,3] ] } ], [#Rule 152 'args', 2, sub #line 382 "Parser.yp" { push(@{$_[1]}, $_[2]); $_[1] } ], [#Rule 153 'args', 2, sub #line 383 "Parser.yp" { push(@{$_[1]->[0]}, $_[2]); $_[1] } ], [#Rule 154 'args', 4, sub #line 384 "Parser.yp" { push(@{$_[1]->[0]}, "'', " . $factory->assign(@_[2,4])); $_[1] } ], [#Rule 155 'args', 2, sub #line 386 "Parser.yp" { $_[1] } ], [#Rule 156 'args', 0, sub #line 387 "Parser.yp" { [ [ ] ] } ], [#Rule 157 'lnameargs', 3, sub #line 397 "Parser.yp" { push(@{$_[3]}, $_[1]); $_[3] } ], [#Rule 158 'lnameargs', 1, undef ], [#Rule 159 'lvalue', 1, undef ], [#Rule 160 'lvalue', 3, sub #line 402 "Parser.yp" { $factory->quoted($_[2]) } ], [#Rule 161 'lvalue', 1, undef ], [#Rule 162 'nameargs', 3, sub #line 406 "Parser.yp" { [ [$factory->ident($_[2])], $_[3] ] } ], [#Rule 163 'nameargs', 2, sub #line 407 "Parser.yp" { [ @_[1,2] ] } ], [#Rule 164 'nameargs', 4, sub #line 408 "Parser.yp" { [ @_[1,3] ] } ], [#Rule 165 'names', 3, sub #line 411 "Parser.yp" { push(@{$_[1]}, $_[3]); $_[1] } ], [#Rule 166 'names', 1, sub #line 412 "Parser.yp" { [ $_[1] ] } ], [#Rule 167 'name', 3, sub #line 415 "Parser.yp" { $factory->quoted($_[2]) } ], [#Rule 168 'name', 1, sub #line 416 "Parser.yp" { "'$_[1]'" } ], [#Rule 169 'name', 1, undef ], [#Rule 170 'filename', 3, sub #line 420 "Parser.yp" { "$_[1].$_[3]" } ], [#Rule 171 'filename', 1, undef ], [#Rule 172 'filepart', 1, undef ], [#Rule 173 'filepart', 1, undef ], [#Rule 174 'filepart', 1, undef ], [#Rule 175 'quoted', 2, sub #line 434 "Parser.yp" { push(@{$_[1]}, $_[2]) if defined $_[2]; $_[1] } ], [#Rule 176 'quoted', 0, sub #line 436 "Parser.yp" { [ ] } ], [#Rule 177 'quotable', 1, sub #line 439 "Parser.yp" { $factory->ident($_[1]) } ], [#Rule 178 'quotable', 1, sub #line 440 "Parser.yp" { $factory->text($_[1]) } ], [#Rule 179 'quotable', 1, sub #line 441 "Parser.yp" { undef } ] ]; } #--- END BEGIN 1; __END__ =head1 NAME Template::Grammar - Parser state/rule tables for the TT grammar =head1 SYNOPSIS # no user serviceable parts inside =head1 DESCRIPTION This module defines the state and rule tables that the L<Template::Parser> module uses to parse templates. It is generated from a YACC-like grammar using the C<Parse::Yapp> module. The F<parser> sub-directory of the Template Toolkit source distribution contains the grammar and other files required to generate this module. But you don't need to worry about any of that unless you're planning to modify the Template Toolkit language. =head1 AUTHOR Andy Wardley E<lt>abw@wardley.orgE<gt> L<http://wardley.org/> =head1 COPYRIGHT Copyright (C) 1996-2022 Andy Wardley. All Rights Reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO L<Template::Parser> =cut # Local Variables: # mode: perl # perl-indent-level: 4 # indent-tabs-mode: nil # End: # # vim: expandtab shiftwidth=4: