Хранилища Subversion ant

Редакция

Содержимое файла | Последнее изменение | Открыть журнал | RSS

Редакция Автор № строки Строка
304 alex-w 1
<?php
2
/**
3
* Smarty Internal Plugin Templateparser
4
*
5
* This is the template parser.
6
* It is generated from the internal.templateparser.y file
7
* @package Smarty
8
* @subpackage Compiler
9
* @author Uwe Tews
10
*/
11
 
12
/**
13
 * This can be used to store both the string representation of
14
 * a token, and any useful meta-data associated with the token.
15
 *
16
 * meta-data should be stored as an array
17
 */
18
class TP_yyToken implements ArrayAccess
19
{
20
    public $string = '';
21
    public $metadata = array();
22
 
23
    function __construct($s, $m = array())
24
    {
25
        if ($s instanceof TP_yyToken) {
26
            $this->string = $s->string;
27
            $this->metadata = $s->metadata;
28
        } else {
29
            $this->string = (string) $s;
30
            if ($m instanceof TP_yyToken) {
31
                $this->metadata = $m->metadata;
32
            } elseif (is_array($m)) {
33
                $this->metadata = $m;
34
            }
35
        }
36
    }
37
 
38
    function __toString()
39
    {
40
        return $this->_string;
41
    }
42
 
43
    function offsetExists($offset)
44
    {
45
        return isset($this->metadata[$offset]);
46
    }
47
 
48
    function offsetGet($offset)
49
    {
50
        return $this->metadata[$offset];
51
    }
52
 
53
    function offsetSet($offset, $value)
54
    {
55
        if ($offset === null) {
56
            if (isset($value[0])) {
57
                $x = ($value instanceof TP_yyToken) ?
58
                    $value->metadata : $value;
59
                $this->metadata = array_merge($this->metadata, $x);
60
                return;
61
            }
62
            $offset = count($this->metadata);
63
        }
64
        if ($value === null) {
65
            return;
66
        }
67
        if ($value instanceof TP_yyToken) {
68
            if ($value->metadata) {
69
                $this->metadata[$offset] = $value->metadata;
70
            }
71
        } elseif ($value) {
72
            $this->metadata[$offset] = $value;
73
        }
74
    }
75
 
76
    function offsetUnset($offset)
77
    {
78
        unset($this->metadata[$offset]);
79
    }
80
}
81
 
82
/** The following structure represents a single element of the
83
 * parser's stack.  Information stored includes:
84
 *
85
 *   +  The state number for the parser at this level of the stack.
86
 *
87
 *   +  The value of the token stored at this level of the stack.
88
 *      (In other words, the "major" token.)
89
 *
90
 *   +  The semantic value stored at this level of the stack.  This is
91
 *      the information used by the action routines in the grammar.
92
 *      It is sometimes called the "minor" token.
93
 */
94
class TP_yyStackEntry
95
{
96
    public $stateno;       /* The state-number */
97
    public $major;         /* The major token value.  This is the code
98
                     ** number for the token at this stack level */
99
    public $minor; /* The user-supplied minor token value.  This
100
                     ** is the value of the token  */
101
};
102
 
103
// code external to the class is included here
104
 
105
// declare_class is output here
106
#line 12 "internal.templateparser.y"
107
class Smarty_Internal_Templateparser#line 109 "internal.templateparser.php"
108
{
109
/* First off, code is included which follows the "include_class" declaration
110
** in the input file. */
111
#line 14 "internal.templateparser.y"
112
 
113
    // states whether the parse was successful or not
114
    public $successful = true;
115
    public $retvalue = 0;
116
    private $lex;
117
    private $internalError = false;
118
 
119
    function __construct($lex, $compiler) {
120
        // set instance object
121
        self::instance($this);
122
        $this->lex = $lex;
123
        $this->compiler = $compiler;
124
        $this->smarty = $this->compiler->smarty;
125
        $this->template = $this->compiler->template;
126
        if ($this->template->security && isset($this->smarty->security_handler)) {
127
              $this->sec_obj = $this->smarty->security_policy;
128
        } else {
129
              $this->sec_obj = $this->smarty;
130
        }
131
        $this->cacher = $this->template->cacher_object;
132
                                $this->nocache = false;
133
                                $this->prefix_code = array();
134
                                $this->prefix_number = 0;
135
    }
136
    public static function &instance($new_instance = null)
137
    {
138
        static $instance = null;
139
        if (isset($new_instance) && is_object($new_instance))
140
            $instance = $new_instance;
141
        return $instance;
142
    }
143
 
144
#line 147 "internal.templateparser.php"
145
 
146
/* Next is all token values, as class constants
147
*/
148
/*
149
** These constants (all generated automatically by the parser generator)
150
** specify the various kinds of tokens (terminals) that the parser
151
** understands.
152
**
153
** Each symbol here is a terminal symbol in the grammar.
154
*/
155
    const TP_OTHER                          =  1;
156
    const TP_XML                            =  2;
157
    const TP_PHP                            =  3;
158
    const TP_SHORTTAGSTART                  =  4;
159
    const TP_SHORTTAGEND                    =  5;
160
    const TP_PHPSTART                       =  6;
161
    const TP_PHPEND                         =  7;
162
    const TP_COMMENTEND                     =  8;
163
    const TP_COMMENTSTART                   =  9;
164
    const TP_SINGLEQUOTE                    = 10;
165
    const TP_LITERALSTART                   = 11;
166
    const TP_LITERALEND                     = 12;
167
    const TP_LDELIMTAG                      = 13;
168
    const TP_RDELIMTAG                      = 14;
169
    const TP_LDELSLASH                      = 15;
170
    const TP_LDEL                           = 16;
171
    const TP_RDEL                           = 17;
172
    const TP_ISIN                           = 18;
173
    const TP_AS                             = 19;
174
    const TP_BOOLEAN                        = 20;
175
    const TP_NULL                           = 21;
176
    const TP_IDENTITY                       = 22;
177
    const TP_NONEIDENTITY                   = 23;
178
    const TP_EQUALS                         = 24;
179
    const TP_NOTEQUALS                      = 25;
180
    const TP_GREATEREQUAL                   = 26;
181
    const TP_LESSEQUAL                      = 27;
182
    const TP_GREATERTHAN                    = 28;
183
    const TP_LESSTHAN                       = 29;
184
    const TP_NOT                            = 30;
185
    const TP_LAND                           = 31;
186
    const TP_LOR                            = 32;
187
    const TP_LXOR                           = 33;
188
    const TP_ISODDBY                        = 34;
189
    const TP_ISNOTODDBY                     = 35;
190
    const TP_ISODD                          = 36;
191
    const TP_ISNOTODD                       = 37;
192
    const TP_ISEVENBY                       = 38;
193
    const TP_ISNOTEVENBY                    = 39;
194
    const TP_ISEVEN                         = 40;
195
    const TP_ISNOTEVEN                      = 41;
196
    const TP_ISDIVBY                        = 42;
197
    const TP_ISNOTDIVBY                     = 43;
198
    const TP_OPENP                          = 44;
199
    const TP_CLOSEP                         = 45;
200
    const TP_OPENB                          = 46;
201
    const TP_CLOSEB                         = 47;
202
    const TP_PTR                            = 48;
203
    const TP_APTR                           = 49;
204
    const TP_EQUAL                          = 50;
205
    const TP_INTEGER                        = 51;
206
    const TP_INCDEC                         = 52;
207
    const TP_UNIMATH                        = 53;
208
    const TP_MATH                           = 54;
209
    const TP_DOLLAR                         = 55;
210
    const TP_COLON                          = 56;
211
    const TP_DOUBLECOLON                    = 57;
212
    const TP_SEMICOLON                      = 58;
213
    const TP_AT                             = 59;
214
    const TP_HATCH                          = 60;
215
    const TP_QUOTE                          = 61;
216
    const TP_BACKTICK                       = 62;
217
    const TP_VERT                           = 63;
218
    const TP_DOT                            = 64;
219
    const TP_COMMA                          = 65;
220
    const TP_ANDSYM                         = 66;
221
    const TP_ID                             = 67;
222
    const TP_SPACE                          = 68;
223
    const TP_INSTANCEOF                     = 69;
224
    const YY_NO_ACTION = 448;
225
    const YY_ACCEPT_ACTION = 447;
226
    const YY_ERROR_ACTION = 446;
227
 
228
/* Next are that tables used to determine what action to take based on the
229
** current state and lookahead token.  These tables are used to implement
230
** functions that take a state number and lookahead value and return an
231
** action integer.  
232
**
233
** Suppose the action integer is N.  Then the action is determined as
234
** follows
235
**
236
**   0 <= N < self::YYNSTATE                              Shift N.  That is,
237
**                                                        push the lookahead
238
**                                                        token onto the stack
239
**                                                        and goto state N.
240
**
241
**   self::YYNSTATE <= N < self::YYNSTATE+self::YYNRULE   Reduce by rule N-YYNSTATE.
242
**
243
**   N == self::YYNSTATE+self::YYNRULE                    A syntax error has occurred.
244
**
245
**   N == self::YYNSTATE+self::YYNRULE+1                  The parser accepts its
246
**                                                        input. (and concludes parsing)
247
**
248
**   N == self::YYNSTATE+self::YYNRULE+2                  No such action.  Denotes unused
249
**                                                        slots in the yy_action[] table.
250
**
251
** The action table is constructed as a single large static array $yy_action.
252
** Given state S and lookahead X, the action is computed as
253
**
254
**      self::$yy_action[self::$yy_shift_ofst[S] + X ]
255
**
256
** If the index value self::$yy_shift_ofst[S]+X is out of range or if the value
257
** self::$yy_lookahead[self::$yy_shift_ofst[S]+X] is not equal to X or if
258
** self::$yy_shift_ofst[S] is equal to self::YY_SHIFT_USE_DFLT, it means that
259
** the action is not in the table and that self::$yy_default[S] should be used instead.  
260
**
261
** The formula above is for computing the action when the lookahead is
262
** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
263
** a reduce action) then the static $yy_reduce_ofst array is used in place of
264
** the static $yy_shift_ofst array and self::YY_REDUCE_USE_DFLT is used in place of
265
** self::YY_SHIFT_USE_DFLT.
266
**
267
** The following are the tables generated in this section:
268
**
269
**  self::$yy_action        A single table containing all actions.
270
**  self::$yy_lookahead     A table containing the lookahead for each entry in
271
**                          yy_action.  Used to detect hash collisions.
272
**  self::$yy_shift_ofst    For each state, the offset into self::$yy_action for
273
**                          shifting terminals.
274
**  self::$yy_reduce_ofst   For each state, the offset into self::$yy_action for
275
**                          shifting non-terminals after a reduce.
276
**  self::$yy_default       Default action for each state.
277
*/
278
    const YY_SZ_ACTTAB = 1162;
279
static public $yy_action = array(
280
 /*     0 */    56,   27,  193,   56,  281,  153,   25,   39,  153,   25,
281
 /*    10 */   210,  206,  276,  210,  206,  242,  244,   60,  158,  245,
282
 /*    20 */     4,   62,   72,   67,  165,   69,   46,  230,  236,  153,
283
 /*    30 */    25,   19,  275,  167,    5,  130,   12,   23,  200,   12,
284
 /*    40 */   192,  161,  222,   35,  161,   66,   35,  186,   62,  231,
285
 /*    50 */    46,   40,  203,   46,   40,  157,  235,  137,  139,   14,
286
 /*    60 */   134,  153,   18,  157,  227,   30,  262,  259,  260,   10,
287
 /*    70 */     2,  266,  263,   11,    7,  264,  265,    3,    6,  139,
288
 /*    80 */   196,  447,   51,  185,  234,   31,   56,   39,   57,   56,
289
 /*    90 */    27,  153,   25,  148,  153,   25,  210,  206,  277,  210,
290
 /*   100 */   206,  142,   93,   42,  269,   34,    4,  197,   43,  249,
291
 /*   110 */   250,  254,  255,  252,  248,  256,  253,  108,  269,  129,
292
 /*   120 */     5,  208,   12,   23,   29,   12,  204,  161,  226,   35,
293
 /*   130 */   161,   58,   35,  231,   66,   91,   46,   40,  282,   46,
294
 /*   140 */    40,  203,  270,  133,  229,  139,   41,   16,  227,  157,
295
 /*   150 */   139,  269,  262,  259,  260,   10,    2,  266,  263,   11,
296
 /*   160 */     7,  264,  265,    3,    6,  257,  262,  259,  260,   10,
297
 /*   170 */     2,  266,  263,   11,    7,  264,  265,    3,    6,   56,
298
 /*   180 */   261,  320,  184,  139,  153,   25,   27,  201,  139,  210,
299
 /*   190 */   206,  262,  259,  260,   10,    2,  266,  263,   11,    7,
300
 /*   200 */   264,  265,    3,    6,  110,   31,   56,  199,   13,   27,
301
 /*   210 */   106,  153,   25,   23,   22,   12,  210,  206,  284,  283,
302
 /*   220 */   161,  112,   35,   42,   66,  178,  205,  118,   56,   46,
303
 /*   230 */    40,   36,  320,  153,   25,  231,  137,  203,  210,  206,
304
 /*   240 */    23,  272,   12,   20,  219,   72,   48,  161,  114,   35,
305
 /*   250 */   227,   62,  171,  267,  268,   27,   46,   40,  214,  207,
306
 /*   260 */   203,  198,   23,  140,   12,  222,  231,  284,  283,  161,
307
 /*   270 */   237,   35,  272,   62,  129,   14,   72,  157,   46,   40,
308
 /*   280 */    36,  227,   56,  151,  274,  141,  183,  153,   25,  214,
309
 /*   290 */   207,  195,  210,  206,    8,  272,  222,  123,  171,   72,
310
 /*   300 */   216,  119,  209,  157,   56,   53,  203,  218,  278,  153,
311
 /*   310 */    25,  129,  214,  207,  210,  206,   23,  272,   12,  222,
312
 /*   320 */   179,   72,  139,  161,   13,   35,   15,   66,  177,  213,
313
 /*   330 */   223,   27,   46,   40,  214,  207,   21,  112,   23,   41,
314
 /*   340 */    12,  222,  186,  139,  180,  161,  128,   35,    1,   66,
315
 /*   350 */   224,  182,  233,  234,   46,   40,  153,   18,  284,  283,
316
 /*   360 */   272,  135,   52,   13,   72,   20,  189,   74,  145,  136,
317
 /*   370 */    96,   36,  144,  175,   13,   89,  112,  214,  207,   28,
318
 /*   380 */    56,  226,  203,  166,  222,  153,   25,  112,   56,  258,
319
 /*   390 */   210,  206,  139,  153,   25,  225,  142,   32,  210,  206,
320
 /*   400 */   162,   56,  181,   43,  132,   62,  153,   25,   33,  147,
321
 /*   410 */    46,  210,  206,  100,   23,  131,   12,  168,  247,  231,
322
 /*   420 */   157,  161,   23,  280,  226,   62,  187,   72,  246,  161,
323
 /*   430 */    46,   40,  220,   62,  227,   23,   62,  140,   46,   40,
324
 /*   440 */   217,   46,  161,  287,   27,  140,   62,  222,  221,  172,
325
 /*   450 */   139,   46,   40,  215,  241,   24,   34,  239,  138,   38,
326
 /*   460 */   249,  250,  254,  255,  252,  248,  256,  253,  152,  272,
327
 /*   470 */   211,   52,   72,   72,  157,   27,   77,  102,   13,  129,
328
 /*   480 */   149,  146,  271,  257,   89,  170,  214,  207,  226,    9,
329
 /*   490 */    72,  112,  222,  222,   62,  203,  231,   94,  258,   46,
330
 /*   500 */   272,  139,   52,  169,   72,  157,  103,   78,  157,  183,
331
 /*   510 */   222,  227,  146,  271,  139,   89,   71,  214,  207,  157,
332
 /*   520 */    92,  272,  174,   52,  222,   72,  164,  126,   76,  258,
333
 /*   530 */    88,  228,  209,  146,  271,   64,   89,  107,  214,  207,
334
 /*   540 */   272,  273,   52,  202,   72,  222,  269,   82,  226,   55,
335
 /*   550 */   258,   95,  146,  271,  228,   89,  101,  214,  207,  272,
336
 /*   560 */    39,   52,   26,   72,  222,  269,   83,  226,  125,  258,
337
 /*   570 */   194,  146,  271,  209,   89,   90,  214,  207,  160,  190,
338
 /*   580 */    54,  176,  272,  222,   50,  228,   72,  124,  258,   75,
339
 /*   590 */    70,  155,  209,  199,  146,  271,  269,   89,  121,  214,
340
 /*   600 */   207,   65,   38,  272,   68,   52,  222,   72,   59,  228,
341
 /*   610 */    80,  258,   22,  188,  156,  146,  271,  154,   89,  159,
342
 /*   620 */   214,  207,  272,  240,   52,  243,   72,  222,   37,   84,
343
 /*   630 */   288,  109,  258,  105,  146,  271,  216,   89,   33,  214,
344
 /*   640 */   207,  272,  238,   52,  232,   72,  222,   61,   79,   17,
345
 /*   650 */   191,  258,  199,  146,  271,  225,   89,   44,  214,  207,
346
 /*   660 */    73,  157,  269,  269,  272,  222,   52,  269,   72,  269,
347
 /*   670 */   258,   81,  269,  269,  269,  269,  146,  271,  269,   89,
348
 /*   680 */   269,  214,  207,  269,  269,  272,  269,   99,  222,   72,
349
 /*   690 */   269,  269,  269,  258,  269,  269,  269,  212,  271,  269,
350
 /*   700 */    89,  269,  214,  207,  269,  269,  269,  269,  269,  222,
351
 /*   710 */   272,  269,   99,  269,   72,  269,  269,  143,  285,  269,
352
 /*   720 */   269,  269,  212,  271,  269,   89,  269,  214,  207,  272,
353
 /*   730 */   269,   98,  269,   72,  222,  269,  269,  269,  269,  269,
354
 /*   740 */   269,  212,  271,  279,   89,  269,  214,  207,  269,  269,
355
 /*   750 */   173,  269,  272,  222,   98,  269,   72,  269,  269,  269,
356
 /*   760 */   269,  269,  269,  269,  212,  271,  269,   89,  269,  214,
357
 /*   770 */   207,  269,  269,  150,  269,  272,  222,   98,  269,   72,
358
 /*   780 */   269,  269,  269,  269,  269,  269,  269,  212,  271,  269,
359
 /*   790 */    89,  269,  214,  207,  269,  269,  286,  269,  272,  222,
360
 /*   800 */    98,  269,   72,  269,  269,  269,  269,  269,  269,  269,
361
 /*   810 */   212,  271,  269,   89,  269,  214,  207,  269,  269,  163,
362
 /*   820 */   269,  272,  222,  115,  269,   72,  269,  269,  269,  269,
363
 /*   830 */   269,  269,  269,  212,  271,  269,   89,  269,  214,  207,
364
 /*   840 */   272,  269,   47,  269,   63,  222,  269,  269,  269,  269,
365
 /*   850 */   269,  269,  212,  271,  269,   89,  269,  214,  207,  269,
366
 /*   860 */   269,  269,  269,  272,  222,   49,  269,   72,  269,  269,
367
 /*   870 */   269,  269,  269,  269,  269,  212,  271,  269,   89,  269,
368
 /*   880 */   214,  207,  269,  269,  269,  269,  272,  222,  111,  269,
369
 /*   890 */    72,  269,  269,  269,  269,  269,  269,  269,  212,  271,
370
 /*   900 */   269,   89,  269,  214,  207,  269,  269,  269,  269,  272,
371
 /*   910 */   222,  104,  269,   72,  269,  269,  269,  269,  269,  269,
372
 /*   920 */   269,  212,  271,  269,   89,  269,  214,  207,  272,  269,
373
 /*   930 */   113,  269,   72,  222,  269,  269,  269,  269,  269,  269,
374
 /*   940 */   212,  271,  269,   89,  269,  214,  207,  269,  269,  269,
375
 /*   950 */   269,  272,  222,  117,  269,   72,  269,  269,  269,  269,
376
 /*   960 */   269,  269,  269,  212,  271,  269,   89,  269,  214,  207,
377
 /*   970 */   269,  269,  269,  269,  272,  222,  127,  269,   72,  269,
378
 /*   980 */   269,  269,  269,  269,  269,  269,  212,  271,  269,   89,
379
 /*   990 */   269,  214,  207,  269,  269,  269,  269,  272,  222,  116,
380
 /*  1000 */   269,   72,  269,  269,  269,  269,  269,  269,  269,  212,
381
 /*  1010 */   271,  269,   89,  269,  214,  207,  272,  269,   45,  269,
382
 /*  1020 */    63,  222,  269,  269,  269,  269,  269,  269,  212,  271,
383
 /*  1030 */   269,   89,  269,  214,  207,  269,  269,  269,  269,  272,
384
 /*  1040 */   222,   97,  269,   72,  269,  269,  269,  269,  269,  269,
385
 /*  1050 */   269,  212,  271,  269,   89,  269,  214,  207,  269,  269,
386
 /*  1060 */   269,  269,  272,  222,  122,  269,   72,  269,  269,  269,
387
 /*  1070 */   269,  269,  269,  269,  212,  271,  269,   89,  269,  214,
388
 /*  1080 */   207,  269,  269,  269,  269,  272,  222,  120,  269,   72,
389
 /*  1090 */   269,  269,  269,  269,  269,  272,  269,  212,  271,   72,
390
 /*  1100 */    89,  269,  214,  207,  269,  269,  269,  212,  271,  222,
391
 /*  1110 */    86,  269,  214,  207,  272,  269,  272,  269,   72,  222,
392
 /*  1120 */    72,  269,  269,  269,  269,  269,  212,  271,  251,   85,
393
 /*  1130 */   269,  214,  207,  214,  207,  269,  269,  272,  222,  269,
394
 /*  1140 */   222,   72,  269,  269,  269,  269,  269,  269,  269,  212,
395
 /*  1150 */   271,  269,   87,  269,  214,  207,  269,  269,  269,  269,
396
 /*  1160 */   269,  222,
397
    );
398
    static public $yy_lookahead = array(
399
 /*     0 */    10,   16,   17,   10,   17,   15,   16,   48,   15,   16,
400
 /*    10 */    20,   21,   17,   20,   21,    1,    2,    3,    4,    5,
401
 /*    20 */    30,   55,   78,    9,   59,   11,   60,   13,   14,   15,
402
 /*    30 */    16,   16,   67,   67,   44,   91,   46,   44,   94,   46,
403
 /*    40 */    47,   51,   98,   53,   51,   55,   53,    1,   55,    1,
404
 /*    50 */    60,   61,   67,   60,   61,   68,    8,   67,   63,   44,
405
 /*    60 */    67,   15,   16,   68,   16,   49,   31,   32,   33,   34,
406
 /*    70 */    35,   36,   37,   38,   39,   40,   41,   42,   43,   63,
407
 /*    80 */     1,   71,   72,   73,   74,   46,   10,   48,   84,   10,
408
 /*    90 */    16,   15,   16,   58,   15,   16,   20,   21,   17,   20,
409
 /*   100 */    21,   55,   84,   64,  100,   18,   30,   61,   62,   22,
410
 /*   110 */    23,   24,   25,   26,   27,   28,   29,   77,  100,   79,
411
 /*   120 */    44,  101,   46,   44,   50,   46,   52,   51,   88,   53,
412
 /*   130 */    51,   55,   53,    1,   55,   84,   60,   61,   17,   60,
413
 /*   140 */    61,   67,   17,   67,   12,   63,   67,   65,   16,   68,
414
 /*   150 */    63,  100,   31,   32,   33,   34,   35,   36,   37,   38,
415
 /*   160 */    39,   40,   41,   42,   43,   45,   31,   32,   33,   34,
416
 /*   170 */    35,   36,   37,   38,   39,   40,   41,   42,   43,   10,
417
 /*   180 */    45,   17,   17,   63,   15,   16,   16,   17,   63,   20,
418
 /*   190 */    21,   31,   32,   33,   34,   35,   36,   37,   38,   39,
419
 /*   200 */    40,   41,   42,   43,   97,   46,   10,  100,   44,   16,
420
 /*   210 */    97,   15,   16,   44,   50,   46,   20,   21,   53,   54,
421
 /*   220 */    51,   57,   53,   64,   55,    1,   17,   80,   10,   60,
422
 /*   230 */    61,   66,   68,   15,   16,    1,   67,   67,   20,   21,
423
 /*   240 */    44,   74,   46,   50,   10,   78,   80,   51,   97,   53,
424
 /*   250 */    16,   55,   59,   86,   87,   16,   60,   61,   91,   92,
425
 /*   260 */    67,   47,   44,   67,   46,   98,    1,   53,   54,   51,
426
 /*   270 */     5,   53,   74,   55,   79,   44,   78,   68,   60,   61,
427
 /*   280 */    66,   16,   10,   48,   86,   67,   74,   15,   16,   91,
428
 /*   290 */    92,   67,   20,   21,   58,   74,   98,   96,   59,   78,
429
 /*   300 */    99,   65,  101,   68,   10,   93,   67,   86,   47,   15,
430
 /*   310 */    16,   79,   91,   92,   20,   21,   44,   74,   46,   98,
431
 /*   320 */   108,   78,   63,   51,   44,   53,   65,   55,   48,   86,
432
 /*   330 */    60,   16,   60,   61,   91,   92,  104,   57,   44,   67,
433
 /*   340 */    46,   98,    1,   63,   62,   51,   17,   53,   68,   55,
434
 /*   350 */    60,    1,   73,   74,   60,   61,   15,   16,   53,   54,
435
 /*   360 */    74,   67,   76,   44,   78,   50,   47,   81,   82,   83,
436
 /*   370 */    77,   66,   86,   87,   44,   89,   57,   91,   92,   49,
437
 /*   380 */    10,   88,   67,   64,   98,   15,   16,   57,   10,  103,
438
 /*   390 */    20,   21,   63,   15,   16,  102,   55,   16,   20,   21,
439
 /*   400 */    67,   10,   61,   62,   17,   55,   15,   16,   56,   19,
440
 /*   410 */    60,   20,   21,   77,   44,   79,   46,   67,   67,    1,
441
 /*   420 */    68,   51,   44,   17,   88,   55,   62,   78,   10,   51,
442
 /*   430 */    60,   61,   51,   55,   16,   44,   55,   67,   60,   61,
443
 /*   440 */    91,   60,   51,   45,   16,   67,   55,   98,   67,   56,
444
 /*   450 */    63,   60,   61,   67,   17,   16,   18,   17,   67,   69,
445
 /*   460 */    22,   23,   24,   25,   26,   27,   28,   29,   55,   74,
446
 /*   470 */    51,   76,   78,   78,   68,   16,   81,   77,   44,   79,
447
 /*   480 */    67,   86,   87,   45,   89,   91,   91,   92,   88,  105,
448
 /*   490 */    78,   57,   98,   98,   55,   67,    1,   75,  103,   60,
449
 /*   500 */    74,   63,   76,   91,   78,   68,   67,   81,   68,   74,
450
 /*   510 */    98,   16,   86,   87,   63,   89,   67,   91,   92,   68,
451
 /*   520 */    75,   74,   19,   76,   98,   78,   67,   96,   81,  103,
452
 /*   530 */    84,  109,  101,   86,   87,   55,   89,   77,   91,   92,
453
 /*   540 */    74,   67,   76,  108,   78,   98,  100,   81,   88,   84,
454
 /*   550 */   103,   75,   86,   87,  109,   89,   77,   91,   92,   74,
455
 /*   560 */    48,   76,   50,   78,   98,  100,   81,   88,   96,  103,
456
 /*   570 */    45,   86,   87,  101,   89,   75,   91,   92,   85,   47,
457
 /*   580 */    84,   64,   74,   98,   76,  109,   78,   96,  103,   81,
458
 /*   590 */    45,   67,  101,  100,   86,   87,  100,   89,   67,   91,
459
 /*   600 */    92,   55,   69,   74,   55,   76,   98,   78,   67,  109,
460
 /*   610 */    81,  103,   50,   17,   67,   86,   87,   67,   89,   55,
461
 /*   620 */    91,   92,   74,   17,   76,    5,   78,   98,   90,   81,
462
 /*   630 */    17,   97,  103,   97,   86,   87,   99,   89,   56,   91,
463
 /*   640 */    92,   74,   88,   76,  109,   78,   98,   55,   81,   44,
464
 /*   650 */    82,  103,  100,   86,   87,  102,   89,   97,   91,   92,
465
 /*   660 */    94,   68,  110,  110,   74,   98,   76,  110,   78,  110,
466
 /*   670 */   103,   81,  110,  110,  110,  110,   86,   87,  110,   89,
467
 /*   680 */   110,   91,   92,  110,  110,   74,  110,   76,   98,   78,
468
 /*   690 */   110,  110,  110,  103,  110,  110,  110,   86,   87,  110,
469
 /*   700 */    89,  110,   91,   92,  110,  110,  110,  110,  110,   98,
470
 /*   710 */    74,  110,   76,  110,   78,  110,  110,  106,  107,  110,
471
 /*   720 */   110,  110,   86,   87,  110,   89,  110,   91,   92,   74,
472
 /*   730 */   110,   76,  110,   78,   98,  110,  110,  110,  110,  110,
473
 /*   740 */   110,   86,   87,  107,   89,  110,   91,   92,  110,  110,
474
 /*   750 */    95,  110,   74,   98,   76,  110,   78,  110,  110,  110,
475
 /*   760 */   110,  110,  110,  110,   86,   87,  110,   89,  110,   91,
476
 /*   770 */    92,  110,  110,   95,  110,   74,   98,   76,  110,   78,
477
 /*   780 */   110,  110,  110,  110,  110,  110,  110,   86,   87,  110,
478
 /*   790 */    89,  110,   91,   92,  110,  110,   95,  110,   74,   98,
479
 /*   800 */    76,  110,   78,  110,  110,  110,  110,  110,  110,  110,
480
 /*   810 */    86,   87,  110,   89,  110,   91,   92,  110,  110,   95,
481
 /*   820 */   110,   74,   98,   76,  110,   78,  110,  110,  110,  110,
482
 /*   830 */   110,  110,  110,   86,   87,  110,   89,  110,   91,   92,
483
 /*   840 */    74,  110,   76,  110,   78,   98,  110,  110,  110,  110,
484
 /*   850 */   110,  110,   86,   87,  110,   89,  110,   91,   92,  110,
485
 /*   860 */   110,  110,  110,   74,   98,   76,  110,   78,  110,  110,
486
 /*   870 */   110,  110,  110,  110,  110,   86,   87,  110,   89,  110,
487
 /*   880 */    91,   92,  110,  110,  110,  110,   74,   98,   76,  110,
488
 /*   890 */    78,  110,  110,  110,  110,  110,  110,  110,   86,   87,
489
 /*   900 */   110,   89,  110,   91,   92,  110,  110,  110,  110,   74,
490
 /*   910 */    98,   76,  110,   78,  110,  110,  110,  110,  110,  110,
491
 /*   920 */   110,   86,   87,  110,   89,  110,   91,   92,   74,  110,
492
 /*   930 */    76,  110,   78,   98,  110,  110,  110,  110,  110,  110,
493
 /*   940 */    86,   87,  110,   89,  110,   91,   92,  110,  110,  110,
494
 /*   950 */   110,   74,   98,   76,  110,   78,  110,  110,  110,  110,
495
 /*   960 */   110,  110,  110,   86,   87,  110,   89,  110,   91,   92,
496
 /*   970 */   110,  110,  110,  110,   74,   98,   76,  110,   78,  110,
497
 /*   980 */   110,  110,  110,  110,  110,  110,   86,   87,  110,   89,
498
 /*   990 */   110,   91,   92,  110,  110,  110,  110,   74,   98,   76,
499
 /*  1000 */   110,   78,  110,  110,  110,  110,  110,  110,  110,   86,
500
 /*  1010 */    87,  110,   89,  110,   91,   92,   74,  110,   76,  110,
501
 /*  1020 */    78,   98,  110,  110,  110,  110,  110,  110,   86,   87,
502
 /*  1030 */   110,   89,  110,   91,   92,  110,  110,  110,  110,   74,
503
 /*  1040 */    98,   76,  110,   78,  110,  110,  110,  110,  110,  110,
504
 /*  1050 */   110,   86,   87,  110,   89,  110,   91,   92,  110,  110,
505
 /*  1060 */   110,  110,   74,   98,   76,  110,   78,  110,  110,  110,
506
 /*  1070 */   110,  110,  110,  110,   86,   87,  110,   89,  110,   91,
507
 /*  1080 */    92,  110,  110,  110,  110,   74,   98,   76,  110,   78,
508
 /*  1090 */   110,  110,  110,  110,  110,   74,  110,   86,   87,   78,
509
 /*  1100 */    89,  110,   91,   92,  110,  110,  110,   86,   87,   98,
510
 /*  1110 */    89,  110,   91,   92,   74,  110,   74,  110,   78,   98,
511
 /*  1120 */    78,  110,  110,  110,  110,  110,   86,   87,   86,   89,
512
 /*  1130 */   110,   91,   92,   91,   92,  110,  110,   74,   98,  110,
513
 /*  1140 */    98,   78,  110,  110,  110,  110,  110,  110,  110,   86,
514
 /*  1150 */    87,  110,   89,  110,   91,   92,  110,  110,  110,  110,
515
 /*  1160 */   110,   98,
516
);
517
    const YY_SHIFT_USE_DFLT = -42;
518
    const YY_SHIFT_MAX = 177;
519
    static public $yy_shift_ofst = array(
520
 /*     0 */    14,   76,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
521
 /*    10 */   -10,  -10,  294,  169,  169,  294,  169,  169,   79,  169,
522
 /*    20 */   169,  169,  169,  169,  169,  272,  169,  169,  169,  169,
523
 /*    30 */   169,   -7,  196,  218,  370,  378,  378,  378,  391,  439,
524
 /*    40 */   341,  280,  381,  350,   39,   -5,  -34,  451,  352,  451,
525
 /*    50 */   438,   14,   87,   46,  193,   74,  418,  239,  459,  235,
526
 /*    60 */   495,  428,  428,  512,  428,  428,  459,  495,  428,  495,
527
 /*    70 */   -41,  593,  -41,  -41,  121,  135,   35,  160,  160,  160,
528
 /*    80 */   160,  160,  160,  160,  160,  165,  214,  305,  315,  305,
529
 /*    90 */   234,  -15,  265,  170,   48,  132,  -13,  125,   82,   16,
530
 /*   100 */   406,  209,   81,   15,  387,  159,  159,  440,  437,  159,
531
 /*   110 */   159,  329,  413,  120,  159,  259,  259,  259,  582,  592,
532
 /*   120 */   259,  605,  259,  -41,  -41,  -41,  -41,  259,  -42,  -42,
533
 /*   130 */   -42,  -42,  -42,  164,  319,  330,  236,  434,  434,  -35,
534
 /*   140 */   434,  434,  224,  261,  390,  613,  533,  549,  546,  231,
535
 /*   150 */   545,  524,  531,  541,  562,  606,  620,  550,  564,  547,
536
 /*   160 */   596,  517,  532,  398,  393,  351,  333,  270,  282,  290,
537
 /*   170 */   364,  386,  474,  525,  480,  503,  419,  449,
538
);
539
    const YY_REDUCE_USE_DFLT = -57;
540
    const YY_REDUCE_MAX = 132;
541
    static public $yy_reduce_ofst = array(
542
 /*     0 */    10,  286,  395,  485,  466,  508,  529,  548,  447,  426,
543
 /*    10 */   590,  567,  611,  724,  655,  636,  701,  678,  942,  812,
544
 /*    20 */  1011,  923,  877,  854,  835,  766,  789,  965,  988,  900,
545
 /*    30 */   747, 1021, 1040, 1063,  167,  243,  198,  221, 1042,  -56,
546
 /*    40 */   212,  336,  349,  394,  201,   40,  412,   40,  293,  400,
547
 /*    50 */   232,  279,  232,  435,  107,  493,  500,  107,  496,  460,
548
 /*    60 */   445,  446,    4,  431,   51,  465,    4,  422,   18,  476,
549
 /*    70 */   491,  479,  431,  472,  384,  384,  384,  384,  384,  384,
550
 /*    80 */   384,  384,  384,  384,  384,  538,  538,  538,  552,  538,
551
 /*    90 */   535,  552,  535,  552,  535,  535,  554,  195,  195,  195,
552
 /*   100 */   554,  554,  554,  536,  195,  537,  537,  554,  554,  537,
553
 /*   110 */   537,  195,  566,  195,  537,  195,  195,  195,  553,  568,
554
 /*   120 */   195,  560,  195,   20,   20,   20,   20,  195,  151,  147,
555
 /*   130 */   113,  166,  534,
556
);
557
    static public $yyExpectedTokens = array(
558
        /* 0 */ array(1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, ),
559
        /* 1 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
560
        /* 2 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
561
        /* 3 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
562
        /* 4 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
563
        /* 5 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
564
        /* 6 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
565
        /* 7 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
566
        /* 8 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
567
        /* 9 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
568
        /* 10 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
569
        /* 11 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
570
        /* 12 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
571
        /* 13 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
572
        /* 14 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
573
        /* 15 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
574
        /* 16 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
575
        /* 17 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
576
        /* 18 */ array(1, 10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
577
        /* 19 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
578
        /* 20 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
579
        /* 21 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
580
        /* 22 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
581
        /* 23 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
582
        /* 24 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
583
        /* 25 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
584
        /* 26 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
585
        /* 27 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
586
        /* 28 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
587
        /* 29 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
588
        /* 30 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
589
        /* 31 */ array(10, 15, 16, 20, 21, 44, 46, 47, 51, 53, 55, 60, 61, 67, ),
590
        /* 32 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
591
        /* 33 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
592
        /* 34 */ array(10, 15, 16, 20, 21, 44, 46, 51, 55, 60, 61, 67, ),
593
        /* 35 */ array(10, 15, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
594
        /* 36 */ array(10, 15, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
595
        /* 37 */ array(10, 15, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
596
        /* 38 */ array(10, 15, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
597
        /* 39 */ array(16, 55, 60, 67, ),
598
        /* 40 */ array(1, 15, 16, 55, 61, 62, ),
599
        /* 41 */ array(44, 48, 57, 63, 68, ),
600
        /* 42 */ array(16, 51, 55, 60, 67, ),
601
        /* 43 */ array(1, 55, 60, 67, ),
602
        /* 44 */ array(46, 48, 64, ),
603
        /* 45 */ array(17, 63, 68, ),
604
        /* 46 */ array(55, 60, 67, ),
605
        /* 47 */ array(63, 68, ),
606
        /* 48 */ array(56, 68, ),
607
        /* 49 */ array(63, 68, ),
608
        /* 50 */ array(18, 22, 23, 24, 25, 26, 27, 28, 29, 45, 63, ),
609
        /* 51 */ array(1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, ),
610
        /* 52 */ array(18, 22, 23, 24, 25, 26, 27, 28, 29, 63, ),
611
        /* 53 */ array(1, 15, 16, 55, 61, 62, ),
612
        /* 54 */ array(16, 50, 59, 67, ),
613
        /* 55 */ array(16, 50, 52, 67, ),
614
        /* 56 */ array(1, 10, 16, ),
615
        /* 57 */ array(16, 59, 67, ),
616
        /* 58 */ array(16, 67, ),
617
        /* 59 */ array(48, 68, ),
618
        /* 60 */ array(1, 16, ),
619
        /* 61 */ array(16, 67, ),
620
        /* 62 */ array(16, 67, ),
621
        /* 63 */ array(48, 50, ),
622
        /* 64 */ array(16, 67, ),
623
        /* 65 */ array(16, 67, ),
624
        /* 66 */ array(16, 67, ),
625
        /* 67 */ array(1, 16, ),
626
        /* 68 */ array(16, 67, ),
627
        /* 69 */ array(1, 16, ),
628
        /* 70 */ array(48, ),
629
        /* 71 */ array(68, ),
630
        /* 72 */ array(48, ),
631
        /* 73 */ array(48, ),
632
        /* 74 */ array(17, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
633
        /* 75 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, ),
634
        /* 76 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 58, ),
635
        /* 77 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
636
        /* 78 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
637
        /* 79 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
638
        /* 80 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
639
        /* 81 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
640
        /* 82 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
641
        /* 83 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
642
        /* 84 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
643
        /* 85 */ array(17, 53, 54, 66, ),
644
        /* 86 */ array(47, 53, 54, 66, ),
645
        /* 87 */ array(53, 54, 66, ),
646
        /* 88 */ array(16, 50, 67, ),
647
        /* 89 */ array(53, 54, 66, ),
648
        /* 90 */ array(1, 10, 16, ),
649
        /* 91 */ array(16, 17, 67, ),
650
        /* 92 */ array(1, 5, 16, ),
651
        /* 93 */ array(16, 17, 67, ),
652
        /* 94 */ array(1, 8, 16, ),
653
        /* 95 */ array(1, 12, 16, ),
654
        /* 96 */ array(17, 68, ),
655
        /* 97 */ array(17, 63, ),
656
        /* 98 */ array(63, 65, ),
657
        /* 99 */ array(49, 63, ),
658
        /* 100 */ array(17, 68, ),
659
        /* 101 */ array(17, 68, ),
660
        /* 102 */ array(17, 68, ),
661
        /* 103 */ array(16, 44, ),
662
        /* 104 */ array(17, 63, ),
663
        /* 105 */ array(46, 64, ),
664
        /* 106 */ array(46, 64, ),
665
        /* 107 */ array(17, 68, ),
666
        /* 108 */ array(17, 68, ),
667
        /* 109 */ array(46, 64, ),
668
        /* 110 */ array(46, 64, ),
669
        /* 111 */ array(17, 63, ),
670
        /* 112 */ array(55, 67, ),
671
        /* 113 */ array(45, 63, ),
672
        /* 114 */ array(46, 64, ),
673
        /* 115 */ array(63, ),
674
        /* 116 */ array(63, ),
675
        /* 117 */ array(63, ),
676
        /* 118 */ array(56, ),
677
        /* 119 */ array(55, ),
678
        /* 120 */ array(63, ),
679
        /* 121 */ array(44, ),
680
        /* 122 */ array(63, ),
681
        /* 123 */ array(48, ),
682
        /* 124 */ array(48, ),
683
        /* 125 */ array(48, ),
684
        /* 126 */ array(48, ),
685
        /* 127 */ array(63, ),
686
        /* 128 */ array(),
687
        /* 129 */ array(),
688
        /* 130 */ array(),
689
        /* 131 */ array(),
690
        /* 132 */ array(),
691
        /* 133 */ array(17, 44, 50, 57, 68, ),
692
        /* 134 */ array(44, 47, 57, 64, ),
693
        /* 135 */ array(44, 49, 57, ),
694
        /* 136 */ array(58, 65, ),
695
        /* 137 */ array(44, 57, ),
696
        /* 138 */ array(44, 57, ),
697
        /* 139 */ array(59, 67, ),
698
        /* 140 */ array(44, 57, ),
699
        /* 141 */ array(44, 57, ),
700
        /* 142 */ array(1, 67, ),
701
        /* 143 */ array(47, 65, ),
702
        /* 144 */ array(19, 69, ),
703
        /* 145 */ array(17, ),
704
        /* 146 */ array(69, ),
705
        /* 147 */ array(55, ),
706
        /* 148 */ array(55, ),
707
        /* 149 */ array(44, ),
708
        /* 150 */ array(45, ),
709
        /* 151 */ array(67, ),
710
        /* 152 */ array(67, ),
711
        /* 153 */ array(67, ),
712
        /* 154 */ array(50, ),
713
        /* 155 */ array(17, ),
714
        /* 156 */ array(5, ),
715
        /* 157 */ array(67, ),
716
        /* 158 */ array(55, ),
717
        /* 159 */ array(67, ),
718
        /* 160 */ array(17, ),
719
        /* 161 */ array(64, ),
720
        /* 162 */ array(47, ),
721
        /* 163 */ array(45, ),
722
        /* 164 */ array(56, ),
723
        /* 165 */ array(67, ),
724
        /* 166 */ array(67, ),
725
        /* 167 */ array(60, ),
726
        /* 168 */ array(62, ),
727
        /* 169 */ array(60, ),
728
        /* 170 */ array(62, ),
729
        /* 171 */ array(67, ),
730
        /* 172 */ array(67, ),
731
        /* 173 */ array(45, ),
732
        /* 174 */ array(55, ),
733
        /* 175 */ array(19, ),
734
        /* 176 */ array(51, ),
735
        /* 177 */ array(67, ),
736
        /* 178 */ array(),
737
        /* 179 */ array(),
738
        /* 180 */ array(),
739
        /* 181 */ array(),
740
        /* 182 */ array(),
741
        /* 183 */ array(),
742
        /* 184 */ array(),
743
        /* 185 */ array(),
744
        /* 186 */ array(),
745
        /* 187 */ array(),
746
        /* 188 */ array(),
747
        /* 189 */ array(),
748
        /* 190 */ array(),
749
        /* 191 */ array(),
750
        /* 192 */ array(),
751
        /* 193 */ array(),
752
        /* 194 */ array(),
753
        /* 195 */ array(),
754
        /* 196 */ array(),
755
        /* 197 */ array(),
756
        /* 198 */ array(),
757
        /* 199 */ array(),
758
        /* 200 */ array(),
759
        /* 201 */ array(),
760
        /* 202 */ array(),
761
        /* 203 */ array(),
762
        /* 204 */ array(),
763
        /* 205 */ array(),
764
        /* 206 */ array(),
765
        /* 207 */ array(),
766
        /* 208 */ array(),
767
        /* 209 */ array(),
768
        /* 210 */ array(),
769
        /* 211 */ array(),
770
        /* 212 */ array(),
771
        /* 213 */ array(),
772
        /* 214 */ array(),
773
        /* 215 */ array(),
774
        /* 216 */ array(),
775
        /* 217 */ array(),
776
        /* 218 */ array(),
777
        /* 219 */ array(),
778
        /* 220 */ array(),
779
        /* 221 */ array(),
780
        /* 222 */ array(),
781
        /* 223 */ array(),
782
        /* 224 */ array(),
783
        /* 225 */ array(),
784
        /* 226 */ array(),
785
        /* 227 */ array(),
786
        /* 228 */ array(),
787
        /* 229 */ array(),
788
        /* 230 */ array(),
789
        /* 231 */ array(),
790
        /* 232 */ array(),
791
        /* 233 */ array(),
792
        /* 234 */ array(),
793
        /* 235 */ array(),
794
        /* 236 */ array(),
795
        /* 237 */ array(),
796
        /* 238 */ array(),
797
        /* 239 */ array(),
798
        /* 240 */ array(),
799
        /* 241 */ array(),
800
        /* 242 */ array(),
801
        /* 243 */ array(),
802
        /* 244 */ array(),
803
        /* 245 */ array(),
804
        /* 246 */ array(),
805
        /* 247 */ array(),
806
        /* 248 */ array(),
807
        /* 249 */ array(),
808
        /* 250 */ array(),
809
        /* 251 */ array(),
810
        /* 252 */ array(),
811
        /* 253 */ array(),
812
        /* 254 */ array(),
813
        /* 255 */ array(),
814
        /* 256 */ array(),
815
        /* 257 */ array(),
816
        /* 258 */ array(),
817
        /* 259 */ array(),
818
        /* 260 */ array(),
819
        /* 261 */ array(),
820
        /* 262 */ array(),
821
        /* 263 */ array(),
822
        /* 264 */ array(),
823
        /* 265 */ array(),
824
        /* 266 */ array(),
825
        /* 267 */ array(),
826
        /* 268 */ array(),
827
        /* 269 */ array(),
828
        /* 270 */ array(),
829
        /* 271 */ array(),
830
        /* 272 */ array(),
831
        /* 273 */ array(),
832
        /* 274 */ array(),
833
        /* 275 */ array(),
834
        /* 276 */ array(),
835
        /* 277 */ array(),
836
        /* 278 */ array(),
837
        /* 279 */ array(),
838
        /* 280 */ array(),
839
        /* 281 */ array(),
840
        /* 282 */ array(),
841
        /* 283 */ array(),
842
        /* 284 */ array(),
843
        /* 285 */ array(),
844
        /* 286 */ array(),
845
        /* 287 */ array(),
846
        /* 288 */ array(),
847
);
848
    static public $yy_default = array(
849
 /*     0 */   446,  446,  446,  446,  446,  446,  446,  446,  446,  446,
850
 /*    10 */   446,  446,  427,  386,  386,  446,  386,  386,  446,  446,
851
 /*    20 */   446,  446,  446,  446,  446,  446,  446,  446,  446,  446,
852
 /*    30 */   446,  446,  446,  446,  446,  446,  446,  446,  446,  446,
853
 /*    40 */   446,  318,  446,  446,  351,  446,  446,  318,  318,  318,
854
 /*    50 */   396,  289,  396,  446,  361,  446,  446,  361,  446,  318,
855
 /*    60 */   446,  446,  446,  354,  446,  446,  446,  446,  446,  446,
856
 /*    70 */   347,  318,  354,  346,  446,  446,  446,  410,  400,  405,
857
 /*    80 */   402,  409,  394,  401,  406,  446,  446,  391,  446,  325,
858
 /*    90 */   446,  446,  446,  446,  446,  446,  446,  446,  385,  430,
859
 /*   100 */   446,  446,  446,  361,  446,  377,  378,  446,  446,  379,
860
 /*   110 */   359,  446,  446,  446,  380,  428,  397,  319,  327,  446,
861
 /*   120 */   323,  361,  429,  352,  349,  348,  374,  310,  361,  390,
862
 /*   130 */   361,  390,  361,  324,  446,  324,  446,  324,  411,  446,
863
 /*   140 */   446,  392,  446,  446,  328,  321,  328,  446,  446,  350,
864
 /*   150 */   446,  446,  446,  446,  320,  446,  446,  446,  446,  446,
865
 /*   160 */   446,  336,  446,  446,  372,  446,  446,  446,  446,  446,
866
 /*   170 */   446,  446,  446,  446,  446,  332,  446,  446,  438,  432,
867
 /*   180 */   433,  345,  440,  437,  365,  290,  441,  434,  309,  366,
868
 /*   190 */   367,  322,  369,  313,  383,  435,  439,  344,  368,  371,
869
 /*   200 */   381,  312,  431,  372,  311,  305,  339,  340,  376,  375,
870
 /*   210 */   338,  337,  328,  329,  335,  355,  360,  364,  330,  342,
871
 /*   220 */   363,  362,  356,  357,  358,  389,  317,  445,  443,  294,
872
 /*   230 */   295,  444,  442,  291,  292,  293,  296,  297,  316,  314,
873
 /*   240 */   315,  302,  301,  298,  299,  300,  343,  387,  418,  419,
874
 /*   250 */   420,  412,  417,  416,  413,  414,  415,  341,  393,  422,
875
 /*   260 */   423,  395,  421,  408,  403,  404,  407,  399,  398,  370,
876
 /*   270 */   373,  332,  353,  326,  331,  388,  436,  303,  424,  426,
877
 /*   280 */   304,  306,  307,  334,  333,  425,  384,  382,  308,
878
);
879
/* The next thing included is series of defines which control
880
** various aspects of the generated parser.
881
**    self::YYNOCODE      is a number which corresponds
882
**                        to no legal terminal or nonterminal number.  This
883
**                        number is used to fill in empty slots of the hash
884
**                        table.
885
**    self::YYFALLBACK    If defined, this indicates that one or more tokens
886
**                        have fall-back values which should be used if the
887
**                        original value of the token will not parse.
888
**    self::YYSTACKDEPTH  is the maximum depth of the parser's stack.
889
**    self::YYNSTATE      the combined number of states.
890
**    self::YYNRULE       the number of rules in the grammar
891
**    self::YYERRORSYMBOL is the code number of the error symbol.  If not
892
**                        defined, then do no error processing.
893
*/
894
    const YYNOCODE = 111;
895
    const YYSTACKDEPTH = 100;
896
    const YYNSTATE = 289;
897
    const YYNRULE = 157;
898
    const YYERRORSYMBOL = 70;
899
    const YYERRSYMDT = 'yy0';
900
    const YYFALLBACK = 1;
901
    /** The next table maps tokens into fallback tokens.  If a construct
902
     * like the following:
903
     *
904
     *      %fallback ID X Y Z.
905
     *
906
     * appears in the grammer, then ID becomes a fallback token for X, Y,
907
     * and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
908
     * but it does not parse, the type of the token is changed to ID and
909
     * the parse is retried before an error is thrown.
910
     */
911
    static public $yyFallback = array(
912
    0,  /*          $ => nothing */
913
    0,  /*      OTHER => nothing */
914
    1,  /*        XML => OTHER */
915
    1,  /*        PHP => OTHER */
916
    1,  /* SHORTTAGSTART => OTHER */
917
    1,  /* SHORTTAGEND => OTHER */
918
    1,  /*   PHPSTART => OTHER */
919
    1,  /*     PHPEND => OTHER */
920
    1,  /* COMMENTEND => OTHER */
921
    1,  /* COMMENTSTART => OTHER */
922
    1,  /* SINGLEQUOTE => OTHER */
923
    1,  /* LITERALSTART => OTHER */
924
    1,  /* LITERALEND => OTHER */
925
    1,  /*  LDELIMTAG => OTHER */
926
    1,  /*  RDELIMTAG => OTHER */
927
    1,  /*  LDELSLASH => OTHER */
928
    1,  /*       LDEL => OTHER */
929
    1,  /*       RDEL => OTHER */
930
    1,  /*       ISIN => OTHER */
931
    1,  /*         AS => OTHER */
932
    1,  /*    BOOLEAN => OTHER */
933
    1,  /*       NULL => OTHER */
934
    1,  /*   IDENTITY => OTHER */
935
    1,  /* NONEIDENTITY => OTHER */
936
    1,  /*     EQUALS => OTHER */
937
    1,  /*  NOTEQUALS => OTHER */
938
    1,  /* GREATEREQUAL => OTHER */
939
    1,  /*  LESSEQUAL => OTHER */
940
    1,  /* GREATERTHAN => OTHER */
941
    1,  /*   LESSTHAN => OTHER */
942
    1,  /*        NOT => OTHER */
943
    1,  /*       LAND => OTHER */
944
    1,  /*        LOR => OTHER */
945
    1,  /*       LXOR => OTHER */
946
    1,  /*    ISODDBY => OTHER */
947
    1,  /* ISNOTODDBY => OTHER */
948
    1,  /*      ISODD => OTHER */
949
    1,  /*   ISNOTODD => OTHER */
950
    1,  /*   ISEVENBY => OTHER */
951
    1,  /* ISNOTEVENBY => OTHER */
952
    1,  /*     ISEVEN => OTHER */
953
    1,  /*  ISNOTEVEN => OTHER */
954
    1,  /*    ISDIVBY => OTHER */
955
    1,  /* ISNOTDIVBY => OTHER */
956
    1,  /*      OPENP => OTHER */
957
    1,  /*     CLOSEP => OTHER */
958
    1,  /*      OPENB => OTHER */
959
    1,  /*     CLOSEB => OTHER */
960
    1,  /*        PTR => OTHER */
961
    1,  /*       APTR => OTHER */
962
    1,  /*      EQUAL => OTHER */
963
    1,  /*    INTEGER => OTHER */
964
    1,  /*     INCDEC => OTHER */
965
    1,  /*    UNIMATH => OTHER */
966
    1,  /*       MATH => OTHER */
967
    1,  /*     DOLLAR => OTHER */
968
    1,  /*      COLON => OTHER */
969
    1,  /* DOUBLECOLON => OTHER */
970
    1,  /*  SEMICOLON => OTHER */
971
    1,  /*         AT => OTHER */
972
    1,  /*      HATCH => OTHER */
973
    1,  /*      QUOTE => OTHER */
974
    1,  /*   BACKTICK => OTHER */
975
    1,  /*       VERT => OTHER */
976
    1,  /*        DOT => OTHER */
977
    1,  /*      COMMA => OTHER */
978
    1,  /*     ANDSYM => OTHER */
979
    1,  /*         ID => OTHER */
980
    1,  /*      SPACE => OTHER */
981
    1,  /* INSTANCEOF => OTHER */
982
    );
983
    /**
984
     * Turn parser tracing on by giving a stream to which to write the trace
985
     * and a prompt to preface each trace message.  Tracing is turned off
986
     * by making either argument NULL
987
     *
988
     * Inputs:
989
     *
990
     * - A stream resource to which trace output should be written.
991
     *   If NULL, then tracing is turned off.
992
     * - A prefix string written at the beginning of every
993
     *   line of trace output.  If NULL, then tracing is
994
     *   turned off.
995
     *
996
     * Outputs:
997
     *
998
     * - None.
999
     * @param resource
1000
     * @param string
1001
     */
1002
    static function Trace($TraceFILE, $zTracePrompt)
1003
    {
1004
        if (!$TraceFILE) {
1005
            $zTracePrompt = 0;
1006
        } elseif (!$zTracePrompt) {
1007
            $TraceFILE = 0;
1008
        }
1009
        self::$yyTraceFILE = $TraceFILE;
1010
        self::$yyTracePrompt = $zTracePrompt;
1011
    }
1012
 
1013
    /**
1014
     * Output debug information to output (php://output stream)
1015
     */
1016
    static function PrintTrace()
1017
    {
1018
        self::$yyTraceFILE = fopen('php://output', 'w');
1019
        self::$yyTracePrompt = '<br>';
1020
    }
1021
 
1022
    /**
1023
     * @var resource|0
1024
     */
1025
    static public $yyTraceFILE;
1026
    /**
1027
     * String to prepend to debug output
1028
     * @var string|0
1029
     */
1030
    static public $yyTracePrompt;
1031
    /**
1032
     * @var int
1033
     */
1034
    public $yyidx;                    /* Index of top element in stack */
1035
    /**
1036
     * @var int
1037
     */
1038
    public $yyerrcnt;                 /* Shifts left before out of the error */
1039
    /**
1040
     * @var array
1041
     */
1042
    public $yystack = array();  /* The parser's stack */
1043
 
1044
    /**
1045
     * For tracing shifts, the names of all terminals and nonterminals
1046
     * are required.  The following table supplies these names
1047
     * @var array
1048
     */
1049
    public $yyTokenName = array(
1050
  '$',             'OTHER',         'XML',           'PHP',        
1051
  'SHORTTAGSTART',  'SHORTTAGEND',   'PHPSTART',      'PHPEND',      
1052
  'COMMENTEND',    'COMMENTSTART',  'SINGLEQUOTE',   'LITERALSTART',
1053
  'LITERALEND',    'LDELIMTAG',     'RDELIMTAG',     'LDELSLASH',  
1054
  'LDEL',          'RDEL',          'ISIN',          'AS',          
1055
  'BOOLEAN',       'NULL',          'IDENTITY',      'NONEIDENTITY',
1056
  'EQUALS',        'NOTEQUALS',     'GREATEREQUAL',  'LESSEQUAL',  
1057
  'GREATERTHAN',   'LESSTHAN',      'NOT',           'LAND',        
1058
  'LOR',           'LXOR',          'ISODDBY',       'ISNOTODDBY',  
1059
  'ISODD',         'ISNOTODD',      'ISEVENBY',      'ISNOTEVENBY',
1060
  'ISEVEN',        'ISNOTEVEN',     'ISDIVBY',       'ISNOTDIVBY',  
1061
  'OPENP',         'CLOSEP',        'OPENB',         'CLOSEB',      
1062
  'PTR',           'APTR',          'EQUAL',         'INTEGER',    
1063
  'INCDEC',        'UNIMATH',       'MATH',          'DOLLAR',      
1064
  'COLON',         'DOUBLECOLON',   'SEMICOLON',     'AT',          
1065
  'HATCH',         'QUOTE',         'BACKTICK',      'VERT',        
1066
  'DOT',           'COMMA',         'ANDSYM',        'ID',          
1067
  'SPACE',         'INSTANCEOF',    'error',         'start',      
1068
  'template',      'template_element',  'smartytag',     'text',        
1069
  'expr',          'attributes',    'varindexed',    'modifier',    
1070
  'modparameters',  'ifexprs',       'statement',     'statements',  
1071
  'varvar',        'foraction',     'value',         'array',      
1072
  'attribute',     'exprs',         'math',          'variable',    
1073
  'function',      'doublequoted',  'method',        'params',      
1074
  'objectchain',   'arrayindex',    'object',        'indexdef',    
1075
  'varvarele',     'objectelement',  'modparameter',  'ifexpr',      
1076
  'ifcond',        'lop',           'arrayelements',  'arrayelement',
1077
  'doublequotedcontent',  'textelement',
1078
    );
1079
 
1080
    /**
1081
     * For tracing reduce actions, the names of all rules are required.
1082
     * @var array
1083
     */
1084
    static public $yyRuleName = array(
1085
 /*   0 */ "start ::= template",
1086
 /*   1 */ "template ::= template_element",
1087
 /*   2 */ "template ::= template template_element",
1088
 /*   3 */ "template_element ::= smartytag",
1089
 /*   4 */ "template_element ::= COMMENTSTART text COMMENTEND",
1090
 /*   5 */ "template_element ::= LITERALSTART text LITERALEND",
1091
 /*   6 */ "template_element ::= LDELIMTAG",
1092
 /*   7 */ "template_element ::= RDELIMTAG",
1093
 /*   8 */ "template_element ::= PHP text SHORTTAGEND",
1094
 /*   9 */ "template_element ::= SHORTTAGSTART DOLLAR ID SHORTTAGEND",
1095
 /*  10 */ "template_element ::= XML",
1096
 /*  11 */ "template_element ::= SHORTTAGEND",
1097
 /*  12 */ "template_element ::= OTHER",
1098
 /*  13 */ "smartytag ::= LDEL expr attributes RDEL",
1099
 /*  14 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
1100
 /*  15 */ "smartytag ::= LDEL ID attributes RDEL",
1101
 /*  16 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
1102
 /*  17 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
1103
 /*  18 */ "smartytag ::= LDEL ID SPACE ifexprs RDEL",
1104
 /*  19 */ "smartytag ::= LDEL ID SPACE statement RDEL",
1105
 /*  20 */ "smartytag ::= LDEL ID SPACE statements SEMICOLON ifexprs SEMICOLON DOLLAR varvar foraction RDEL",
1106
 /*  21 */ "foraction ::= EQUAL expr",
1107
 /*  22 */ "foraction ::= INCDEC",
1108
 /*  23 */ "smartytag ::= LDEL ID SPACE value AS DOLLAR varvar RDEL",
1109
 /*  24 */ "smartytag ::= LDEL ID SPACE array AS DOLLAR varvar RDEL",
1110
 /*  25 */ "smartytag ::= LDELSLASH ID attributes RDEL",
1111
 /*  26 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
1112
 /*  27 */ "attributes ::= attributes attribute",
1113
 /*  28 */ "attributes ::= attribute",
1114
 /*  29 */ "attributes ::=",
1115
 /*  30 */ "attribute ::= SPACE ID EQUAL expr",
1116
 /*  31 */ "attribute ::= SPACE ID",
1117
 /*  32 */ "statements ::= statement",
1118
 /*  33 */ "statements ::= statements COMMA statement",
1119
 /*  34 */ "statement ::= DOLLAR varvar EQUAL expr",
1120
 /*  35 */ "expr ::= ID",
1121
 /*  36 */ "expr ::= exprs",
1122
 /*  37 */ "expr ::= DOLLAR ID COLON ID",
1123
 /*  38 */ "expr ::= expr modifier modparameters",
1124
 /*  39 */ "exprs ::= value",
1125
 /*  40 */ "exprs ::= UNIMATH value",
1126
 /*  41 */ "exprs ::= exprs math value",
1127
 /*  42 */ "exprs ::= exprs ANDSYM value",
1128
 /*  43 */ "exprs ::= array",
1129
 /*  44 */ "math ::= UNIMATH",
1130
 /*  45 */ "math ::= MATH",
1131
 /*  46 */ "value ::= variable",
1132
 /*  47 */ "value ::= INTEGER",
1133
 /*  48 */ "value ::= INTEGER DOT INTEGER",
1134
 /*  49 */ "value ::= BOOLEAN",
1135
 /*  50 */ "value ::= NULL",
1136
 /*  51 */ "value ::= function",
1137
 /*  52 */ "value ::= OPENP expr CLOSEP",
1138
 /*  53 */ "value ::= SINGLEQUOTE text SINGLEQUOTE",
1139
 /*  54 */ "value ::= SINGLEQUOTE SINGLEQUOTE",
1140
 /*  55 */ "value ::= QUOTE doublequoted QUOTE",
1141
 /*  56 */ "value ::= QUOTE QUOTE",
1142
 /*  57 */ "value ::= ID DOUBLECOLON method",
1143
 /*  58 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
1144
 /*  59 */ "value ::= ID DOUBLECOLON method objectchain",
1145
 /*  60 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
1146
 /*  61 */ "value ::= ID DOUBLECOLON ID",
1147
 /*  62 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
1148
 /*  63 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
1149
 /*  64 */ "value ::= smartytag",
1150
 /*  65 */ "variable ::= varindexed",
1151
 /*  66 */ "variable ::= DOLLAR varvar AT ID",
1152
 /*  67 */ "variable ::= object",
1153
 /*  68 */ "variable ::= HATCH ID HATCH",
1154
 /*  69 */ "variable ::= HATCH variable HATCH",
1155
 /*  70 */ "varindexed ::= DOLLAR varvar arrayindex",
1156
 /*  71 */ "arrayindex ::= arrayindex indexdef",
1157
 /*  72 */ "arrayindex ::=",
1158
 /*  73 */ "indexdef ::= DOT ID",
1159
 /*  74 */ "indexdef ::= DOT INTEGER",
1160
 /*  75 */ "indexdef ::= DOT variable",
1161
 /*  76 */ "indexdef ::= DOT LDEL exprs RDEL",
1162
 /*  77 */ "indexdef ::= OPENB ID CLOSEB",
1163
 /*  78 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
1164
 /*  79 */ "indexdef ::= OPENB exprs CLOSEB",
1165
 /*  80 */ "indexdef ::= OPENB CLOSEB",
1166
 /*  81 */ "varvar ::= varvarele",
1167
 /*  82 */ "varvar ::= varvar varvarele",
1168
 /*  83 */ "varvarele ::= ID",
1169
 /*  84 */ "varvarele ::= LDEL expr RDEL",
1170
 /*  85 */ "object ::= varindexed objectchain",
1171
 /*  86 */ "objectchain ::= objectelement",
1172
 /*  87 */ "objectchain ::= objectchain objectelement",
1173
 /*  88 */ "objectelement ::= PTR ID arrayindex",
1174
 /*  89 */ "objectelement ::= PTR variable arrayindex",
1175
 /*  90 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
1176
 /*  91 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
1177
 /*  92 */ "objectelement ::= PTR method",
1178
 /*  93 */ "function ::= ID OPENP params CLOSEP",
1179
 /*  94 */ "method ::= ID OPENP params CLOSEP",
1180
 /*  95 */ "params ::= expr COMMA params",
1181
 /*  96 */ "params ::= expr",
1182
 /*  97 */ "params ::=",
1183
 /*  98 */ "modifier ::= VERT AT ID",
1184
 /*  99 */ "modifier ::= VERT ID",
1185
 /* 100 */ "modparameters ::= modparameters modparameter",
1186
 /* 101 */ "modparameters ::=",
1187
 /* 102 */ "modparameter ::= COLON exprs",
1188
 /* 103 */ "modparameter ::= COLON ID",
1189
 /* 104 */ "ifexprs ::= ifexpr",
1190
 /* 105 */ "ifexprs ::= NOT ifexprs",
1191
 /* 106 */ "ifexprs ::= OPENP ifexprs CLOSEP",
1192
 /* 107 */ "ifexpr ::= expr",
1193
 /* 108 */ "ifexpr ::= expr ifcond expr",
1194
 /* 109 */ "ifexpr ::= expr ISIN array",
1195
 /* 110 */ "ifexpr ::= expr ISIN value",
1196
 /* 111 */ "ifexpr ::= ifexprs lop ifexprs",
1197
 /* 112 */ "ifexpr ::= ifexprs ISDIVBY ifexprs",
1198
 /* 113 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs",
1199
 /* 114 */ "ifexpr ::= ifexprs ISEVEN",
1200
 /* 115 */ "ifexpr ::= ifexprs ISNOTEVEN",
1201
 /* 116 */ "ifexpr ::= ifexprs ISEVENBY ifexprs",
1202
 /* 117 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs",
1203
 /* 118 */ "ifexpr ::= ifexprs ISODD",
1204
 /* 119 */ "ifexpr ::= ifexprs ISNOTODD",
1205
 /* 120 */ "ifexpr ::= ifexprs ISODDBY ifexprs",
1206
 /* 121 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs",
1207
 /* 122 */ "ifexpr ::= value INSTANCEOF ID",
1208
 /* 123 */ "ifexpr ::= value INSTANCEOF value",
1209
 /* 124 */ "ifcond ::= EQUALS",
1210
 /* 125 */ "ifcond ::= NOTEQUALS",
1211
 /* 126 */ "ifcond ::= GREATERTHAN",
1212
 /* 127 */ "ifcond ::= LESSTHAN",
1213
 /* 128 */ "ifcond ::= GREATEREQUAL",
1214
 /* 129 */ "ifcond ::= LESSEQUAL",
1215
 /* 130 */ "ifcond ::= IDENTITY",
1216
 /* 131 */ "ifcond ::= NONEIDENTITY",
1217
 /* 132 */ "lop ::= LAND",
1218
 /* 133 */ "lop ::= LOR",
1219
 /* 134 */ "lop ::= LXOR",
1220
 /* 135 */ "array ::= OPENB arrayelements CLOSEB",
1221
 /* 136 */ "arrayelements ::= arrayelement",
1222
 /* 137 */ "arrayelements ::= arrayelements COMMA arrayelement",
1223
 /* 138 */ "arrayelements ::=",
1224
 /* 139 */ "arrayelement ::= expr APTR expr",
1225
 /* 140 */ "arrayelement ::= ID APTR expr",
1226
 /* 141 */ "arrayelement ::= expr",
1227
 /* 142 */ "doublequoted ::= doublequoted doublequotedcontent",
1228
 /* 143 */ "doublequoted ::= doublequotedcontent",
1229
 /* 144 */ "doublequotedcontent ::= BACKTICK ID BACKTICK",
1230
 /* 145 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
1231
 /* 146 */ "doublequotedcontent ::= DOLLAR ID",
1232
 /* 147 */ "doublequotedcontent ::= LDEL expr RDEL",
1233
 /* 148 */ "doublequotedcontent ::= smartytag",
1234
 /* 149 */ "doublequotedcontent ::= DOLLAR OTHER",
1235
 /* 150 */ "doublequotedcontent ::= LDEL OTHER",
1236
 /* 151 */ "doublequotedcontent ::= BACKTICK OTHER",
1237
 /* 152 */ "doublequotedcontent ::= OTHER",
1238
 /* 153 */ "text ::= text textelement",
1239
 /* 154 */ "text ::= textelement",
1240
 /* 155 */ "textelement ::= OTHER",
1241
 /* 156 */ "textelement ::= LDEL",
1242
    );
1243
 
1244
    /**
1245
     * This function returns the symbolic name associated with a token
1246
     * value.
1247
     * @param int
1248
     * @return string
1249
     */
1250
    function tokenName($tokenType)
1251
    {
1252
        if ($tokenType === 0) {
1253
            return 'End of Input';
1254
        }
1255
        if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1256
            return $this->yyTokenName[$tokenType];
1257
        } else {
1258
            return "Unknown";
1259
        }
1260
    }
1261
 
1262
    /**
1263
     * The following function deletes the value associated with a
1264
     * symbol.  The symbol can be either a terminal or nonterminal.
1265
     * @param int the symbol code
1266
     * @param mixed the symbol's value
1267
     */
1268
    static function yy_destructor($yymajor, $yypminor)
1269
    {
1270
        switch ($yymajor) {
1271
        /* Here is inserted the actions which take place when a
1272
        ** terminal or non-terminal is destroyed.  This can happen
1273
        ** when the symbol is popped from the stack during a
1274
        ** reduce or during error processing or when a parser is
1275
        ** being destroyed before it is finished parsing.
1276
        **
1277
        ** Note: during a reduce, the only symbols destroyed are those
1278
        ** which appear on the RHS of the rule, but which are not used
1279
        ** inside the C code.
1280
        */
1281
            default:  break;   /* If no destructor action specified: do nothing */
1282
        }
1283
    }
1284
 
1285
    /**
1286
     * Pop the parser's stack once.
1287
     *
1288
     * If there is a destructor routine associated with the token which
1289
     * is popped from the stack, then call it.
1290
     *
1291
     * Return the major token number for the symbol popped.
1292
     * @param TP_yyParser
1293
     * @return int
1294
     */
1295
    function yy_pop_parser_stack()
1296
    {
1297
        if (!count($this->yystack)) {
1298
            return;
1299
        }
1300
        $yytos = array_pop($this->yystack);
1301
        if (self::$yyTraceFILE && $this->yyidx >= 0) {
1302
            fwrite(self::$yyTraceFILE,
1303
                self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
1304
                    "\n");
1305
        }
1306
        $yymajor = $yytos->major;
1307
        self::yy_destructor($yymajor, $yytos->minor);
1308
        $this->yyidx--;
1309
        return $yymajor;
1310
    }
1311
 
1312
    /**
1313
     * Deallocate and destroy a parser.  Destructors are all called for
1314
     * all stack elements before shutting the parser down.
1315
     */
1316
    function __destruct()
1317
    {
1318
        while ($this->yyidx >= 0) {
1319
            $this->yy_pop_parser_stack();
1320
        }
1321
        if (is_resource(self::$yyTraceFILE)) {
1322
            fclose(self::$yyTraceFILE);
1323
        }
1324
    }
1325
 
1326
    /**
1327
     * Based on the current state and parser stack, get a list of all
1328
     * possible lookahead tokens
1329
     * @param int
1330
     * @return array
1331
     */
1332
    function yy_get_expected_tokens($token)
1333
    {
1334
        $state = $this->yystack[$this->yyidx]->stateno;
1335
        $expected = self::$yyExpectedTokens[$state];
1336
        if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1337
            return $expected;
1338
        }
1339
        $stack = $this->yystack;
1340
        $yyidx = $this->yyidx;
1341
        do {
1342
            $yyact = $this->yy_find_shift_action($token);
1343
            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1344
                // reduce action
1345
                $done = 0;
1346
                do {
1347
                    if ($done++ == 100) {
1348
                        $this->yyidx = $yyidx;
1349
                        $this->yystack = $stack;
1350
                        // too much recursion prevents proper detection
1351
                        // so give up
1352
                        return array_unique($expected);
1353
                    }
1354
                    $yyruleno = $yyact - self::YYNSTATE;
1355
                    $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1356
                    $nextstate = $this->yy_find_reduce_action(
1357
                        $this->yystack[$this->yyidx]->stateno,
1358
                        self::$yyRuleInfo[$yyruleno]['lhs']);
1359
                    if (isset(self::$yyExpectedTokens[$nextstate])) {
1360
                        $expected += self::$yyExpectedTokens[$nextstate];
1361
                            if (in_array($token,
1362
                                  self::$yyExpectedTokens[$nextstate], true)) {
1363
                            $this->yyidx = $yyidx;
1364
                            $this->yystack = $stack;
1365
                            return array_unique($expected);
1366
                        }
1367
                    }
1368
                    if ($nextstate < self::YYNSTATE) {
1369
                        // we need to shift a non-terminal
1370
                        $this->yyidx++;
1371
                        $x = new TP_yyStackEntry;
1372
                        $x->stateno = $nextstate;
1373
                        $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1374
                        $this->yystack[$this->yyidx] = $x;
1375
                        continue 2;
1376
                    } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1377
                        $this->yyidx = $yyidx;
1378
                        $this->yystack = $stack;
1379
                        // the last token was just ignored, we can't accept
1380
                        // by ignoring input, this is in essence ignoring a
1381
                        // syntax error!
1382
                        return array_unique($expected);
1383
                    } elseif ($nextstate === self::YY_NO_ACTION) {
1384
                        $this->yyidx = $yyidx;
1385
                        $this->yystack = $stack;
1386
                        // input accepted, but not shifted (I guess)
1387
                        return $expected;
1388
                    } else {
1389
                        $yyact = $nextstate;
1390
                    }
1391
                } while (true);
1392
            }
1393
            break;
1394
        } while (true);
1395
        return array_unique($expected);
1396
    }
1397
 
1398
    /**
1399
     * Based on the parser state and current parser stack, determine whether
1400
     * the lookahead token is possible.
1401
     *
1402
     * The parser will convert the token value to an error token if not.  This
1403
     * catches some unusual edge cases where the parser would fail.
1404
     * @param int
1405
     * @return bool
1406
     */
1407
    function yy_is_expected_token($token)
1408
    {
1409
        if ($token === 0) {
1410
            return true; // 0 is not part of this
1411
        }
1412
        $state = $this->yystack[$this->yyidx]->stateno;
1413
        if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1414
            return true;
1415
        }
1416
        $stack = $this->yystack;
1417
        $yyidx = $this->yyidx;
1418
        do {
1419
            $yyact = $this->yy_find_shift_action($token);
1420
            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1421
                // reduce action
1422
                $done = 0;
1423
                do {
1424
                    if ($done++ == 100) {
1425
                        $this->yyidx = $yyidx;
1426
                        $this->yystack = $stack;
1427
                        // too much recursion prevents proper detection
1428
                        // so give up
1429
                        return true;
1430
                    }
1431
                    $yyruleno = $yyact - self::YYNSTATE;
1432
                    $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1433
                    $nextstate = $this->yy_find_reduce_action(
1434
                        $this->yystack[$this->yyidx]->stateno,
1435
                        self::$yyRuleInfo[$yyruleno]['lhs']);
1436
                    if (isset(self::$yyExpectedTokens[$nextstate]) &&
1437
                          in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
1438
                        $this->yyidx = $yyidx;
1439
                        $this->yystack = $stack;
1440
                        return true;
1441
                    }
1442
                    if ($nextstate < self::YYNSTATE) {
1443
                        // we need to shift a non-terminal
1444
                        $this->yyidx++;
1445
                        $x = new TP_yyStackEntry;
1446
                        $x->stateno = $nextstate;
1447
                        $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1448
                        $this->yystack[$this->yyidx] = $x;
1449
                        continue 2;
1450
                    } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1451
                        $this->yyidx = $yyidx;
1452
                        $this->yystack = $stack;
1453
                        if (!$token) {
1454
                            // end of input: this is valid
1455
                            return true;
1456
                        }
1457
                        // the last token was just ignored, we can't accept
1458
                        // by ignoring input, this is in essence ignoring a
1459
                        // syntax error!
1460
                        return false;
1461
                    } elseif ($nextstate === self::YY_NO_ACTION) {
1462
                        $this->yyidx = $yyidx;
1463
                        $this->yystack = $stack;
1464
                        // input accepted, but not shifted (I guess)
1465
                        return true;
1466
                    } else {
1467
                        $yyact = $nextstate;
1468
                    }
1469
                } while (true);
1470
            }
1471
            break;
1472
        } while (true);
1473
        $this->yyidx = $yyidx;
1474
        $this->yystack = $stack;
1475
        return true;
1476
    }
1477
 
1478
    /**
1479
     * Find the appropriate action for a parser given the terminal
1480
     * look-ahead token iLookAhead.
1481
     *
1482
     * If the look-ahead token is YYNOCODE, then check to see if the action is
1483
     * independent of the look-ahead.  If it is, return the action, otherwise
1484
     * return YY_NO_ACTION.
1485
     * @param int The look-ahead token
1486
     */
1487
    function yy_find_shift_action($iLookAhead)
1488
    {
1489
        $stateno = $this->yystack[$this->yyidx]->stateno;
1490
 
1491
        /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
1492
        if (!isset(self::$yy_shift_ofst[$stateno])) {
1493
            // no shift actions
1494
            return self::$yy_default[$stateno];
1495
        }
1496
        $i = self::$yy_shift_ofst[$stateno];
1497
        if ($i === self::YY_SHIFT_USE_DFLT) {
1498
            return self::$yy_default[$stateno];
1499
        }
1500
        if ($iLookAhead == self::YYNOCODE) {
1501
            return self::YY_NO_ACTION;
1502
        }
1503
        $i += $iLookAhead;
1504
        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1505
              self::$yy_lookahead[$i] != $iLookAhead) {
1506
            if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
1507
                   && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
1508
                if (self::$yyTraceFILE) {
1509
                    fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
1510
                        $this->yyTokenName[$iLookAhead] . " => " .
1511
                        $this->yyTokenName[$iFallback] . "\n");
1512
                }
1513
                return $this->yy_find_shift_action($iFallback);
1514
            }
1515
            return self::$yy_default[$stateno];
1516
        } else {
1517
            return self::$yy_action[$i];
1518
        }
1519
    }
1520
 
1521
    /**
1522
     * Find the appropriate action for a parser given the non-terminal
1523
     * look-ahead token $iLookAhead.
1524
     *
1525
     * If the look-ahead token is self::YYNOCODE, then check to see if the action is
1526
     * independent of the look-ahead.  If it is, return the action, otherwise
1527
     * return self::YY_NO_ACTION.
1528
     * @param int Current state number
1529
     * @param int The look-ahead token
1530
     */
1531
    function yy_find_reduce_action($stateno, $iLookAhead)
1532
    {
1533
        /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1534
 
1535
        if (!isset(self::$yy_reduce_ofst[$stateno])) {
1536
            return self::$yy_default[$stateno];
1537
        }
1538
        $i = self::$yy_reduce_ofst[$stateno];
1539
        if ($i == self::YY_REDUCE_USE_DFLT) {
1540
            return self::$yy_default[$stateno];
1541
        }
1542
        if ($iLookAhead == self::YYNOCODE) {
1543
            return self::YY_NO_ACTION;
1544
        }
1545
        $i += $iLookAhead;
1546
        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1547
              self::$yy_lookahead[$i] != $iLookAhead) {
1548
            return self::$yy_default[$stateno];
1549
        } else {
1550
            return self::$yy_action[$i];
1551
        }
1552
    }
1553
 
1554
    /**
1555
     * Perform a shift action.
1556
     * @param int The new state to shift in
1557
     * @param int The major token to shift in
1558
     * @param mixed the minor token to shift in
1559
     */
1560
    function yy_shift($yyNewState, $yyMajor, $yypMinor)
1561
    {
1562
        $this->yyidx++;
1563
        if ($this->yyidx >= self::YYSTACKDEPTH) {
1564
            $this->yyidx--;
1565
            if (self::$yyTraceFILE) {
1566
                fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
1567
            }
1568
            while ($this->yyidx >= 0) {
1569
                $this->yy_pop_parser_stack();
1570
            }
1571
            /* Here code is inserted which will execute if the parser
1572
            ** stack ever overflows */
1573
            return;
1574
        }
1575
        $yytos = new TP_yyStackEntry;
1576
        $yytos->stateno = $yyNewState;
1577
        $yytos->major = $yyMajor;
1578
        $yytos->minor = $yypMinor;
1579
        array_push($this->yystack, $yytos);
1580
        if (self::$yyTraceFILE && $this->yyidx > 0) {
1581
            fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
1582
                $yyNewState);
1583
            fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
1584
            for($i = 1; $i <= $this->yyidx; $i++) {
1585
                fprintf(self::$yyTraceFILE, " %s",
1586
                    $this->yyTokenName[$this->yystack[$i]->major]);
1587
            }
1588
            fwrite(self::$yyTraceFILE,"\n");
1589
        }
1590
    }
1591
 
1592
    /**
1593
     * The following table contains information about every rule that
1594
     * is used during the reduce.
1595
     *
1596
     * <pre>
1597
     * array(
1598
     *  array(
1599
     *   int $lhs;         Symbol on the left-hand side of the rule
1600
     *   int $nrhs;     Number of right-hand side symbols in the rule
1601
     *  ),...
1602
     * );
1603
     * </pre>
1604
     */
1605
    static public $yyRuleInfo = array(
1606
  array( 'lhs' => 71, 'rhs' => 1 ),
1607
  array( 'lhs' => 72, 'rhs' => 1 ),
1608
  array( 'lhs' => 72, 'rhs' => 2 ),
1609
  array( 'lhs' => 73, 'rhs' => 1 ),
1610
  array( 'lhs' => 73, 'rhs' => 3 ),
1611
  array( 'lhs' => 73, 'rhs' => 3 ),
1612
  array( 'lhs' => 73, 'rhs' => 1 ),
1613
  array( 'lhs' => 73, 'rhs' => 1 ),
1614
  array( 'lhs' => 73, 'rhs' => 3 ),
1615
  array( 'lhs' => 73, 'rhs' => 4 ),
1616
  array( 'lhs' => 73, 'rhs' => 1 ),
1617
  array( 'lhs' => 73, 'rhs' => 1 ),
1618
  array( 'lhs' => 73, 'rhs' => 1 ),
1619
  array( 'lhs' => 74, 'rhs' => 4 ),
1620
  array( 'lhs' => 74, 'rhs' => 6 ),
1621
  array( 'lhs' => 74, 'rhs' => 4 ),
1622
  array( 'lhs' => 74, 'rhs' => 6 ),
1623
  array( 'lhs' => 74, 'rhs' => 6 ),
1624
  array( 'lhs' => 74, 'rhs' => 5 ),
1625
  array( 'lhs' => 74, 'rhs' => 5 ),
1626
  array( 'lhs' => 74, 'rhs' => 11 ),
1627
  array( 'lhs' => 85, 'rhs' => 2 ),
1628
  array( 'lhs' => 85, 'rhs' => 1 ),
1629
  array( 'lhs' => 74, 'rhs' => 8 ),
1630
  array( 'lhs' => 74, 'rhs' => 8 ),
1631
  array( 'lhs' => 74, 'rhs' => 4 ),
1632
  array( 'lhs' => 74, 'rhs' => 5 ),
1633
  array( 'lhs' => 77, 'rhs' => 2 ),
1634
  array( 'lhs' => 77, 'rhs' => 1 ),
1635
  array( 'lhs' => 77, 'rhs' => 0 ),
1636
  array( 'lhs' => 88, 'rhs' => 4 ),
1637
  array( 'lhs' => 88, 'rhs' => 2 ),
1638
  array( 'lhs' => 83, 'rhs' => 1 ),
1639
  array( 'lhs' => 83, 'rhs' => 3 ),
1640
  array( 'lhs' => 82, 'rhs' => 4 ),
1641
  array( 'lhs' => 76, 'rhs' => 1 ),
1642
  array( 'lhs' => 76, 'rhs' => 1 ),
1643
  array( 'lhs' => 76, 'rhs' => 4 ),
1644
  array( 'lhs' => 76, 'rhs' => 3 ),
1645
  array( 'lhs' => 89, 'rhs' => 1 ),
1646
  array( 'lhs' => 89, 'rhs' => 2 ),
1647
  array( 'lhs' => 89, 'rhs' => 3 ),
1648
  array( 'lhs' => 89, 'rhs' => 3 ),
1649
  array( 'lhs' => 89, 'rhs' => 1 ),
1650
  array( 'lhs' => 90, 'rhs' => 1 ),
1651
  array( 'lhs' => 90, 'rhs' => 1 ),
1652
  array( 'lhs' => 86, 'rhs' => 1 ),
1653
  array( 'lhs' => 86, 'rhs' => 1 ),
1654
  array( 'lhs' => 86, 'rhs' => 3 ),
1655
  array( 'lhs' => 86, 'rhs' => 1 ),
1656
  array( 'lhs' => 86, 'rhs' => 1 ),
1657
  array( 'lhs' => 86, 'rhs' => 1 ),
1658
  array( 'lhs' => 86, 'rhs' => 3 ),
1659
  array( 'lhs' => 86, 'rhs' => 3 ),
1660
  array( 'lhs' => 86, 'rhs' => 2 ),
1661
  array( 'lhs' => 86, 'rhs' => 3 ),
1662
  array( 'lhs' => 86, 'rhs' => 2 ),
1663
  array( 'lhs' => 86, 'rhs' => 3 ),
1664
  array( 'lhs' => 86, 'rhs' => 7 ),
1665
  array( 'lhs' => 86, 'rhs' => 4 ),
1666
  array( 'lhs' => 86, 'rhs' => 8 ),
1667
  array( 'lhs' => 86, 'rhs' => 3 ),
1668
  array( 'lhs' => 86, 'rhs' => 5 ),
1669
  array( 'lhs' => 86, 'rhs' => 6 ),
1670
  array( 'lhs' => 86, 'rhs' => 1 ),
1671
  array( 'lhs' => 91, 'rhs' => 1 ),
1672
  array( 'lhs' => 91, 'rhs' => 4 ),
1673
  array( 'lhs' => 91, 'rhs' => 1 ),
1674
  array( 'lhs' => 91, 'rhs' => 3 ),
1675
  array( 'lhs' => 91, 'rhs' => 3 ),
1676
  array( 'lhs' => 78, 'rhs' => 3 ),
1677
  array( 'lhs' => 97, 'rhs' => 2 ),
1678
  array( 'lhs' => 97, 'rhs' => 0 ),
1679
  array( 'lhs' => 99, 'rhs' => 2 ),
1680
  array( 'lhs' => 99, 'rhs' => 2 ),
1681
  array( 'lhs' => 99, 'rhs' => 2 ),
1682
  array( 'lhs' => 99, 'rhs' => 4 ),
1683
  array( 'lhs' => 99, 'rhs' => 3 ),
1684
  array( 'lhs' => 99, 'rhs' => 5 ),
1685
  array( 'lhs' => 99, 'rhs' => 3 ),
1686
  array( 'lhs' => 99, 'rhs' => 2 ),
1687
  array( 'lhs' => 84, 'rhs' => 1 ),
1688
  array( 'lhs' => 84, 'rhs' => 2 ),
1689
  array( 'lhs' => 100, 'rhs' => 1 ),
1690
  array( 'lhs' => 100, 'rhs' => 3 ),
1691
  array( 'lhs' => 98, 'rhs' => 2 ),
1692
  array( 'lhs' => 96, 'rhs' => 1 ),
1693
  array( 'lhs' => 96, 'rhs' => 2 ),
1694
  array( 'lhs' => 101, 'rhs' => 3 ),
1695
  array( 'lhs' => 101, 'rhs' => 3 ),
1696
  array( 'lhs' => 101, 'rhs' => 5 ),
1697
  array( 'lhs' => 101, 'rhs' => 6 ),
1698
  array( 'lhs' => 101, 'rhs' => 2 ),
1699
  array( 'lhs' => 92, 'rhs' => 4 ),
1700
  array( 'lhs' => 94, 'rhs' => 4 ),
1701
  array( 'lhs' => 95, 'rhs' => 3 ),
1702
  array( 'lhs' => 95, 'rhs' => 1 ),
1703
  array( 'lhs' => 95, 'rhs' => 0 ),
1704
  array( 'lhs' => 79, 'rhs' => 3 ),
1705
  array( 'lhs' => 79, 'rhs' => 2 ),
1706
  array( 'lhs' => 80, 'rhs' => 2 ),
1707
  array( 'lhs' => 80, 'rhs' => 0 ),
1708
  array( 'lhs' => 102, 'rhs' => 2 ),
1709
  array( 'lhs' => 102, 'rhs' => 2 ),
1710
  array( 'lhs' => 81, 'rhs' => 1 ),
1711
  array( 'lhs' => 81, 'rhs' => 2 ),
1712
  array( 'lhs' => 81, 'rhs' => 3 ),
1713
  array( 'lhs' => 103, 'rhs' => 1 ),
1714
  array( 'lhs' => 103, 'rhs' => 3 ),
1715
  array( 'lhs' => 103, 'rhs' => 3 ),
1716
  array( 'lhs' => 103, 'rhs' => 3 ),
1717
  array( 'lhs' => 103, 'rhs' => 3 ),
1718
  array( 'lhs' => 103, 'rhs' => 3 ),
1719
  array( 'lhs' => 103, 'rhs' => 3 ),
1720
  array( 'lhs' => 103, 'rhs' => 2 ),
1721
  array( 'lhs' => 103, 'rhs' => 2 ),
1722
  array( 'lhs' => 103, 'rhs' => 3 ),
1723
  array( 'lhs' => 103, 'rhs' => 3 ),
1724
  array( 'lhs' => 103, 'rhs' => 2 ),
1725
  array( 'lhs' => 103, 'rhs' => 2 ),
1726
  array( 'lhs' => 103, 'rhs' => 3 ),
1727
  array( 'lhs' => 103, 'rhs' => 3 ),
1728
  array( 'lhs' => 103, 'rhs' => 3 ),
1729
  array( 'lhs' => 103, 'rhs' => 3 ),
1730
  array( 'lhs' => 104, 'rhs' => 1 ),
1731
  array( 'lhs' => 104, 'rhs' => 1 ),
1732
  array( 'lhs' => 104, 'rhs' => 1 ),
1733
  array( 'lhs' => 104, 'rhs' => 1 ),
1734
  array( 'lhs' => 104, 'rhs' => 1 ),
1735
  array( 'lhs' => 104, 'rhs' => 1 ),
1736
  array( 'lhs' => 104, 'rhs' => 1 ),
1737
  array( 'lhs' => 104, 'rhs' => 1 ),
1738
  array( 'lhs' => 105, 'rhs' => 1 ),
1739
  array( 'lhs' => 105, 'rhs' => 1 ),
1740
  array( 'lhs' => 105, 'rhs' => 1 ),
1741
  array( 'lhs' => 87, 'rhs' => 3 ),
1742
  array( 'lhs' => 106, 'rhs' => 1 ),
1743
  array( 'lhs' => 106, 'rhs' => 3 ),
1744
  array( 'lhs' => 106, 'rhs' => 0 ),
1745
  array( 'lhs' => 107, 'rhs' => 3 ),
1746
  array( 'lhs' => 107, 'rhs' => 3 ),
1747
  array( 'lhs' => 107, 'rhs' => 1 ),
1748
  array( 'lhs' => 93, 'rhs' => 2 ),
1749
  array( 'lhs' => 93, 'rhs' => 1 ),
1750
  array( 'lhs' => 108, 'rhs' => 3 ),
1751
  array( 'lhs' => 108, 'rhs' => 3 ),
1752
  array( 'lhs' => 108, 'rhs' => 2 ),
1753
  array( 'lhs' => 108, 'rhs' => 3 ),
1754
  array( 'lhs' => 108, 'rhs' => 1 ),
1755
  array( 'lhs' => 108, 'rhs' => 2 ),
1756
  array( 'lhs' => 108, 'rhs' => 2 ),
1757
  array( 'lhs' => 108, 'rhs' => 2 ),
1758
  array( 'lhs' => 108, 'rhs' => 1 ),
1759
  array( 'lhs' => 75, 'rhs' => 2 ),
1760
  array( 'lhs' => 75, 'rhs' => 1 ),
1761
  array( 'lhs' => 109, 'rhs' => 1 ),
1762
  array( 'lhs' => 109, 'rhs' => 1 ),
1763
    );
1764
 
1765
    /**
1766
     * The following table contains a mapping of reduce action to method name
1767
     * that handles the reduction.
1768
     *
1769
     * If a rule is not set, it has no handler.
1770
     */
1771
    static public $yyReduceMap = array(
1772
 
1773
        39 => 0,
1774
        46 => 0,
1775
        47 => 0,
1776
        49 => 0,
1777
        50 => 0,
1778
        51 => 0,
1779
        67 => 0,
1780
        136 => 0,
1781
        1 => 1,
1782
        36 => 1,
1783
        43 => 1,
1784
        44 => 1,
1785
        45 => 1,
1786
        81 => 1,
1787
        104 => 1,
1788
        143 => 1,
1789
        152 => 1,
1790
        154 => 1,
1791
        155 => 1,
1792
        156 => 1,
1793
        2 => 2,
1794
        71 => 2,
1795
        142 => 2,
1796
        150 => 2,
1797
        153 => 2,
1798
        3 => 3,
1799
        4 => 4,
1800
        5 => 5,
1801
        6 => 6,
1802
        7 => 7,
1803
        8 => 8,
1804
        9 => 9,
1805
        10 => 10,
1806
        11 => 11,
1807
        12 => 12,
1808
        13 => 13,
1809
        14 => 14,
1810
        15 => 15,
1811
        16 => 16,
1812
        17 => 17,
1813
        18 => 18,
1814
        19 => 19,
1815
        20 => 20,
1816
        21 => 21,
1817
        22 => 22,
1818
        28 => 22,
1819
        96 => 22,
1820
        141 => 22,
1821
        23 => 23,
1822
        24 => 24,
1823
        25 => 25,
1824
        26 => 26,
1825
        27 => 27,
1826
        29 => 29,
1827
        30 => 30,
1828
        31 => 31,
1829
        32 => 32,
1830
        33 => 33,
1831
        34 => 34,
1832
        35 => 35,
1833
        37 => 37,
1834
        38 => 38,
1835
        40 => 40,
1836
        41 => 41,
1837
        42 => 42,
1838
        48 => 48,
1839
        52 => 52,
1840
        53 => 53,
1841
        54 => 54,
1842
        56 => 54,
1843
        55 => 55,
1844
        57 => 57,
1845
        58 => 58,
1846
        59 => 59,
1847
        60 => 60,
1848
        61 => 61,
1849
        62 => 62,
1850
        63 => 63,
1851
        64 => 64,
1852
        65 => 65,
1853
        66 => 66,
1854
        68 => 68,
1855
        69 => 69,
1856
        70 => 70,
1857
        72 => 72,
1858
        101 => 72,
1859
        73 => 73,
1860
        74 => 74,
1861
        75 => 75,
1862
        76 => 76,
1863
        79 => 76,
1864
        77 => 77,
1865
        78 => 78,
1866
        80 => 80,
1867
        82 => 82,
1868
        83 => 83,
1869
        84 => 84,
1870
        106 => 84,
1871
        85 => 85,
1872
        86 => 86,
1873
        87 => 87,
1874
        88 => 88,
1875
        89 => 89,
1876
        90 => 90,
1877
        91 => 91,
1878
        92 => 92,
1879
        93 => 93,
1880
        94 => 94,
1881
        95 => 95,
1882
        97 => 97,
1883
        98 => 98,
1884
        99 => 99,
1885
        100 => 100,
1886
        102 => 102,
1887
        103 => 103,
1888
        105 => 105,
1889
        107 => 107,
1890
        108 => 108,
1891
        111 => 108,
1892
        122 => 108,
1893
        109 => 109,
1894
        110 => 110,
1895
        112 => 112,
1896
        113 => 113,
1897
        114 => 114,
1898
        119 => 114,
1899
        115 => 115,
1900
        118 => 115,
1901
        116 => 116,
1902
        121 => 116,
1903
        117 => 117,
1904
        120 => 117,
1905
        123 => 123,
1906
        124 => 124,
1907
        125 => 125,
1908
        126 => 126,
1909
        127 => 127,
1910
        128 => 128,
1911
        129 => 129,
1912
        130 => 130,
1913
        131 => 131,
1914
        132 => 132,
1915
        133 => 133,
1916
        134 => 134,
1917
        135 => 135,
1918
        137 => 137,
1919
        138 => 138,
1920
        139 => 139,
1921
        140 => 140,
1922
        144 => 144,
1923
        145 => 145,
1924
        146 => 146,
1925
        147 => 147,
1926
        148 => 148,
1927
        149 => 149,
1928
        151 => 151,
1929
    );
1930
    /* Beginning here are the reduction cases.  A typical example
1931
    ** follows:
1932
    **  #line <lineno> <grammarfile>
1933
    **   function yy_r0($yymsp){ ... }           // User supplied code
1934
    **  #line <lineno> <thisfile>
1935
    */
1936
#line 79 "internal.templateparser.y"
1937
    function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;     }
1938
#line 1943 "internal.templateparser.php"
1939
#line 85 "internal.templateparser.y"
1940
    function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;    }
1941
#line 1946 "internal.templateparser.php"
1942
#line 87 "internal.templateparser.y"
1943
    function yy_r2(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
1944
#line 1949 "internal.templateparser.php"
1945
#line 93 "internal.templateparser.y"
1946
    function yy_r3(){if ($this->compiler->has_code) {
1947
                                            $tmp =''; foreach ($this->prefix_code as $code) {$tmp.=$code;} $this->prefix_code=array();
1948
                                            $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor, $this->compiler,$this->nocache,true);
1949
                                         } else { $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;} $this->nocache=false;    }
1950
#line 1955 "internal.templateparser.php"
1951
#line 98 "internal.templateparser.y"
1952
    function yy_r4(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0];    }
1953
#line 1958 "internal.templateparser.php"
1954
#line 101 "internal.templateparser.y"
1955
    function yy_r5(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s2); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->yystack[$this->yyidx + -1]->minor.$s2[0], $this->compiler,false,false);    }
1956
#line 1961 "internal.templateparser.php"
1957
#line 103 "internal.templateparser.y"
1958
    function yy_r6(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->smarty->left_delimiter, $this->compiler,false,false);    }
1959
#line 1964 "internal.templateparser.php"
1960
#line 105 "internal.templateparser.y"
1961
    function yy_r7(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->smarty->right_delimiter, $this->compiler,false,false);    }
1962
#line 1967 "internal.templateparser.php"
1963
#line 107 "internal.templateparser.y"
1964
    function yy_r8(){if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
1965
                                       $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?php".str_replace("'","\'",$this->yystack[$this->yyidx + -1]->minor)."?>';?>\n", $this->compiler, false, false);
1966
                                      } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
1967
                                       $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false, false);
1968
                                      }elseif ($this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
1969
                                       $this->_retvalue = $this->cacher->processNocacheCode('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', $this->compiler, false,true);
1970
                                      }elseif ($this->sec_obj->php_handling == SMARTY_PHP_REMOVE) {
1971
                                       $this->_retvalue = '';
1972
                                      }
1973
                                         }
1974
#line 1979 "internal.templateparser.php"
1975
#line 118 "internal.templateparser.y"
1976
    function yy_r9(){preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0];
1977
                                      if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU || $this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
1978
                                       $this->_retvalue .= $this->cacher->processNocacheCode("<?php echo '<?=$".$this->yystack[$this->yyidx + -1]->minor."?>'?>\n", $this->compiler, false, false);
1979
                                      } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
1980
                                       $this->_retvalue .= $this->cacher->processNocacheCode(htmlspecialchars('<?=$'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false, false);
1981
                                      }elseif ($this->sec_obj == SMARTY_PHP_REMOVE) {
1982
                                       $this->_retvalue .= '';
1983
                                      }
1984
                                         }
1985
#line 1990 "internal.templateparser.php"
1986
#line 129 "internal.templateparser.y"
1987
    function yy_r10(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true, true);    }
1988
#line 1993 "internal.templateparser.php"
1989
#line 130 "internal.templateparser.y"
1990
    function yy_r11(){$this->_retvalue = $this->cacher->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true, true);    }
1991
#line 1996 "internal.templateparser.php"
1992
#line 132 "internal.templateparser.y"
1993
    function yy_r12(){$this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler,false,false);    }
1994
#line 1999 "internal.templateparser.php"
1995
#line 139 "internal.templateparser.y"
1996
    function yy_r13(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag('print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor));    }
1997
#line 2002 "internal.templateparser.php"
1998
#line 141 "internal.templateparser.y"
1999
    function yy_r14(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor));    }
2000
#line 2005 "internal.templateparser.php"
2001
#line 143 "internal.templateparser.y"
2002
    function yy_r15(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor);    }
2003
#line 2008 "internal.templateparser.php"
2004
#line 145 "internal.templateparser.y"
2005
    function yy_r16(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor));    }
2006
#line 2011 "internal.templateparser.php"
2007
#line 147 "internal.templateparser.y"
2008
    function yy_r17(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].'<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
2009
                                                                                                                                                           if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
2010
                                                                      $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
2011
                                                                 } else {
2012
                                                                   if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
2013
                                                                                                                                                                                                    if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
2014
                                                                         $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
2015
                                                                                                                                                                                                    }
2016
                                                                                                                                                                                                 } else {
2017
                                                                      $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
2018
                                                                 }
2019
                                                              }
2020
                                                                        }
2021
#line 2026 "internal.templateparser.php"
2022
#line 161 "internal.templateparser.y"
2023
    function yy_r18(){if (!in_array($this->yystack[$this->yyidx + -3]->minor,array('if','elseif','while'))) {
2024
                                                            $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2025
                                                            }
2026
                                                           preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));    }
2027
#line 2032 "internal.templateparser.php"
2028
#line 165 "internal.templateparser.y"
2029
    function yy_r19(){ if (!in_array($this->yystack[$this->yyidx + -3]->minor,array('if','elseif','while'))) {
2030
                                                            $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2031
                                                            }
2032
                                                           preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));    }
2033
#line 2038 "internal.templateparser.php"
2034
#line 170 "internal.templateparser.y"
2035
    function yy_r20(){
2036
                                                            if ($this->yystack[$this->yyidx + -9]->minor != 'for') {
2037
                                                               $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -9]->minor . "\"");
2038
                                                            }
2039
                                                            preg_match('/\s*/',$this->yystack[$this->yyidx + -10]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('start'=>$this->yystack[$this->yyidx + -7]->minor,'ifexp'=>$this->yystack[$this->yyidx + -5]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor));    }
2040
#line 2045 "internal.templateparser.php"
2041
#line 175 "internal.templateparser.y"
2042
    function yy_r21(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;    }
2043
#line 2048 "internal.templateparser.php"
2044
#line 176 "internal.templateparser.y"
2045
    function yy_r22(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;    }
2046
#line 2051 "internal.templateparser.php"
2047
#line 178 "internal.templateparser.y"
2048
    function yy_r23(){
2049
                                                            if ($this->yystack[$this->yyidx + -6]->minor != 'foreach') {
2050
                                                               $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -6]->minor . "\"");
2051
                                                            }
2052
                                                            preg_match('/\s*/',$this->yystack[$this->yyidx + -7]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor));    }
2053
#line 2058 "internal.templateparser.php"
2054
#line 183 "internal.templateparser.y"
2055
    function yy_r24(){
2056
                                                            if ($this->yystack[$this->yyidx + -6]->minor != 'foreach') {
2057
                                                               $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -6]->minor . "\"");
2058
                                                            }
2059
                                                            preg_match('/\s*/',$this->yystack[$this->yyidx + -7]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor));    }
2060
#line 2065 "internal.templateparser.php"
2061
#line 190 "internal.templateparser.y"
2062
    function yy_r25(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor);    }
2063
#line 2068 "internal.templateparser.php"
2064
#line 192 "internal.templateparser.y"
2065
    function yy_r26(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor));    }
2066
#line 2071 "internal.templateparser.php"
2067
#line 199 "internal.templateparser.y"
2068
    function yy_r27(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);    }
2069
#line 2074 "internal.templateparser.php"
2070
#line 203 "internal.templateparser.y"
2071
    function yy_r29(){ $this->_retvalue = array();    }
2072
#line 2077 "internal.templateparser.php"
2073
#line 206 "internal.templateparser.y"
2074
    function yy_r30(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);    }
2075
#line 2080 "internal.templateparser.php"
2076
#line 207 "internal.templateparser.y"
2077
    function yy_r31(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true');    }
2078
#line 2083 "internal.templateparser.php"
2079
#line 212 "internal.templateparser.y"
2080
    function yy_r32(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);    }
2081
#line 2086 "internal.templateparser.php"
2082
#line 213 "internal.templateparser.y"
2083
    function yy_r33(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;    }
2084
#line 2089 "internal.templateparser.php"
2085
#line 215 "internal.templateparser.y"
2086
    function yy_r34(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);    }
2087
#line 2092 "internal.templateparser.php"
2088
#line 221 "internal.templateparser.y"
2089
    function yy_r35(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';     }
2090
#line 2095 "internal.templateparser.php"
2091
#line 225 "internal.templateparser.y"
2092
    function yy_r37(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')';    }
2093
#line 2098 "internal.templateparser.php"
2094
#line 226 "internal.templateparser.y"
2095
    function yy_r38(){            
2096
                                                            if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -1]->minor[0],'modifier')) {
2097
                                                                      $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2098
                                                                 } else {
2099
                                                                   if (is_callable($this->yystack[$this->yyidx + -1]->minor[0])) {
2100
                                                                                                                                                                                                    if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -1]->minor[0], $this->compiler)) {
2101
                                                                         $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2102
                                                                                                                                                                                                    }
2103
                                                                                                                                                                                                 } else {
2104
                                                                      $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -1]->minor[0] . "\"");
2105
                                                                 }
2106
                                                              }
2107
                                                                }
2108
#line 2113 "internal.templateparser.php"
2109
#line 243 "internal.templateparser.y"
2110
    function yy_r40(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;     }
2111
#line 2116 "internal.templateparser.php"
2112
#line 245 "internal.templateparser.y"
2113
    function yy_r41(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor;     }
2114
#line 2119 "internal.templateparser.php"
2115
#line 247 "internal.templateparser.y"
2116
    function yy_r42(){ $this->_retvalue = '('. $this->yystack[$this->yyidx + -2]->minor . ').(' . $this->yystack[$this->yyidx + 0]->minor. ')';     }
2117
#line 2122 "internal.templateparser.php"
2118
#line 267 "internal.templateparser.y"
2119
    function yy_r48(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;     }
2120
#line 2125 "internal.templateparser.php"
2121
#line 275 "internal.templateparser.y"
2122
    function yy_r52(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")";     }
2123
#line 2128 "internal.templateparser.php"
2124
#line 277 "internal.templateparser.y"
2125
    function yy_r53(){ $this->_retvalue = "'".$this->yystack[$this->yyidx + -1]->minor."'";     }
2126
#line 2131 "internal.templateparser.php"
2127
#line 278 "internal.templateparser.y"
2128
    function yy_r54(){ $this->_retvalue = "''";     }
2129
#line 2134 "internal.templateparser.php"
2130
#line 280 "internal.templateparser.y"
2131
    function yy_r55(){ $this->_retvalue = '"'.$this->yystack[$this->yyidx + -1]->minor.'"';     }
2132
#line 2137 "internal.templateparser.php"
2133
#line 283 "internal.templateparser.y"
2134
    function yy_r57(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor;     }
2135
#line 2140 "internal.templateparser.php"
2136
#line 284 "internal.templateparser.y"
2137
    function yy_r58(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')';     }
2138
#line 2143 "internal.templateparser.php"
2139
#line 286 "internal.templateparser.y"
2140
    function yy_r59(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;     }
2141
#line 2146 "internal.templateparser.php"
2142
#line 287 "internal.templateparser.y"
2143
    function yy_r60(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor;     }
2144
#line 2149 "internal.templateparser.php"
2145
#line 289 "internal.templateparser.y"
2146
    function yy_r61(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor;    }
2147
#line 2152 "internal.templateparser.php"
2148
#line 291 "internal.templateparser.y"
2149
    function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
2150
#line 2155 "internal.templateparser.php"
2151
#line 293 "internal.templateparser.y"
2152
    function yy_r63(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
2153
#line 2158 "internal.templateparser.php"
2154
#line 295 "internal.templateparser.y"
2155
    function yy_r64(){ $this->prefix_number++; $this->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number;     }
2156
#line 2161 "internal.templateparser.php"
2157
#line 301 "internal.templateparser.y"
2158
    function yy_r65(){if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue =  $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + 0]->minor['index']);} else {
2159
                                                         $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['index']; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"))->nocache;}    }
2160
#line 2165 "internal.templateparser.php"
2161
#line 304 "internal.templateparser.y"
2162
    function yy_r66(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"))->nocache;    }
2163
#line 2168 "internal.templateparser.php"
2164
#line 308 "internal.templateparser.y"
2165
    function yy_r68(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')';    }
2166
#line 2171 "internal.templateparser.php"
2167
#line 309 "internal.templateparser.y"
2168
    function yy_r69(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')';    }
2169
#line 2174 "internal.templateparser.php"
2170
#line 312 "internal.templateparser.y"
2171
    function yy_r70(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'index'=>$this->yystack[$this->yyidx + 0]->minor);    }
2172
#line 2177 "internal.templateparser.php"
2173
#line 320 "internal.templateparser.y"
2174
    function yy_r72(){return;    }
2175
#line 2180 "internal.templateparser.php"
2176
#line 324 "internal.templateparser.y"
2177
    function yy_r73(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']";    }
2178
#line 2183 "internal.templateparser.php"
2179
#line 325 "internal.templateparser.y"
2180
    function yy_r74(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]";    }
2181
#line 2186 "internal.templateparser.php"
2182
#line 326 "internal.templateparser.y"
2183
    function yy_r75(){ $this->_retvalue = "[".$this->yystack[$this->yyidx + 0]->minor."]";    }
2184
#line 2189 "internal.templateparser.php"
2185
#line 327 "internal.templateparser.y"
2186
    function yy_r76(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]";    }
2187
#line 2192 "internal.templateparser.php"
2188
#line 329 "internal.templateparser.y"
2189
    function yy_r77(){ $this->_retvalue = '['.$this->compiler->compileTag('internal_smarty_var','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';    }
2190
#line 2195 "internal.templateparser.php"
2191
#line 330 "internal.templateparser.y"
2192
    function yy_r78(){ $this->_retvalue = '['.$this->compiler->compileTag('internal_smarty_var','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';    }
2193
#line 2198 "internal.templateparser.php"
2194
#line 334 "internal.templateparser.y"
2195
    function yy_r80(){$this->_retvalue = '';    }
2196
#line 2201 "internal.templateparser.php"
2197
#line 342 "internal.templateparser.y"
2198
    function yy_r82(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;    }
2199
#line 2204 "internal.templateparser.php"
2200
#line 344 "internal.templateparser.y"
2201
    function yy_r83(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';    }
2202
#line 2207 "internal.templateparser.php"
2203
#line 346 "internal.templateparser.y"
2204
    function yy_r84(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';    }
2205
#line 2210 "internal.templateparser.php"
2206
#line 351 "internal.templateparser.y"
2207
    function yy_r85(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue =  $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + -1]->minor['index']).$this->yystack[$this->yyidx + 0]->minor;} else {
2208
                                                         $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -1]->minor['index'].$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor['var'],"'"))->nocache;}    }
2209
#line 2214 "internal.templateparser.php"
2210
#line 354 "internal.templateparser.y"
2211
    function yy_r86(){$this->_retvalue  = $this->yystack[$this->yyidx + 0]->minor;     }
2212
#line 2217 "internal.templateparser.php"
2213
#line 356 "internal.templateparser.y"
2214
    function yy_r87(){$this->_retvalue  = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;     }
2215
#line 2220 "internal.templateparser.php"
2216
#line 358 "internal.templateparser.y"
2217
    function yy_r88(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
2218
#line 2223 "internal.templateparser.php"
2219
#line 359 "internal.templateparser.y"
2220
    function yy_r89(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';    }
2221
#line 2226 "internal.templateparser.php"
2222
#line 360 "internal.templateparser.y"
2223
    function yy_r90(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';    }
2224
#line 2229 "internal.templateparser.php"
2225
#line 361 "internal.templateparser.y"
2226
    function yy_r91(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';    }
2227
#line 2232 "internal.templateparser.php"
2228
#line 363 "internal.templateparser.y"
2229
    function yy_r92(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;    }
2230
#line 2235 "internal.templateparser.php"
2231
#line 369 "internal.templateparser.y"
2232
    function yy_r93(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
2233
                                                                                                                                                                                    if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
2234
                                                                                                                                                                                        $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
2235
                                                                                                                                                                                    } else {
2236
                                                       $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2237
                                                      }
2238
                                                    }    }
2239
#line 2244 "internal.templateparser.php"
2240
#line 380 "internal.templateparser.y"
2241
    function yy_r94(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";    }
2242
#line 2247 "internal.templateparser.php"
2243
#line 384 "internal.templateparser.y"
2244
    function yy_r95(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor;    }
2245
#line 2250 "internal.templateparser.php"
2246
#line 388 "internal.templateparser.y"
2247
    function yy_r97(){ return;    }
2248
#line 2253 "internal.templateparser.php"
2249
#line 393 "internal.templateparser.y"
2250
    function yy_r98(){ $this->_retvalue =  array($this->yystack[$this->yyidx + 0]->minor,'false');    }
2251
#line 2256 "internal.templateparser.php"
2252
#line 394 "internal.templateparser.y"
2253
    function yy_r99(){ $this->_retvalue =  array($this->yystack[$this->yyidx + 0]->minor,'true');    }
2254
#line 2259 "internal.templateparser.php"
2255
#line 401 "internal.templateparser.y"
2256
    function yy_r100(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
2257
#line 2262 "internal.templateparser.php"
2258
#line 405 "internal.templateparser.y"
2259
    function yy_r102(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor;    }
2260
#line 2265 "internal.templateparser.php"
2261
#line 406 "internal.templateparser.y"
2262
    function yy_r103(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\'';    }
2263
#line 2268 "internal.templateparser.php"
2264
#line 413 "internal.templateparser.y"
2265
    function yy_r105(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;    }
2266
#line 2271 "internal.templateparser.php"
2267
#line 418 "internal.templateparser.y"
2268
    function yy_r107(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor;    }
2269
#line 2274 "internal.templateparser.php"
2270
#line 419 "internal.templateparser.y"
2271
    function yy_r108(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
2272
#line 2277 "internal.templateparser.php"
2273
#line 420 "internal.templateparser.y"
2274
    function yy_r109(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';    }
2275
#line 2280 "internal.templateparser.php"
2276
#line 421 "internal.templateparser.y"
2277
    function yy_r110(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';    }
2278
#line 2283 "internal.templateparser.php"
2279
#line 423 "internal.templateparser.y"
2280
    function yy_r112(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';    }
2281
#line 2286 "internal.templateparser.php"
2282
#line 424 "internal.templateparser.y"
2283
    function yy_r113(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';    }
2284
#line 2289 "internal.templateparser.php"
2285
#line 425 "internal.templateparser.y"
2286
    function yy_r114(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';    }
2287
#line 2292 "internal.templateparser.php"
2288
#line 426 "internal.templateparser.y"
2289
    function yy_r115(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';    }
2290
#line 2295 "internal.templateparser.php"
2291
#line 427 "internal.templateparser.y"
2292
    function yy_r116(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';    }
2293
#line 2298 "internal.templateparser.php"
2294
#line 428 "internal.templateparser.y"
2295
    function yy_r117(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';    }
2296
#line 2301 "internal.templateparser.php"
2297
#line 434 "internal.templateparser.y"
2298
    function yy_r123(){$this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number;    }
2299
#line 2304 "internal.templateparser.php"
2300
#line 436 "internal.templateparser.y"
2301
    function yy_r124(){$this->_retvalue = '==';    }
2302
#line 2307 "internal.templateparser.php"
2303
#line 437 "internal.templateparser.y"
2304
    function yy_r125(){$this->_retvalue = '!=';    }
2305
#line 2310 "internal.templateparser.php"
2306
#line 438 "internal.templateparser.y"
2307
    function yy_r126(){$this->_retvalue = '>';    }
2308
#line 2313 "internal.templateparser.php"
2309
#line 439 "internal.templateparser.y"
2310
    function yy_r127(){$this->_retvalue = '<';    }
2311
#line 2316 "internal.templateparser.php"
2312
#line 440 "internal.templateparser.y"
2313
    function yy_r128(){$this->_retvalue = '>=';    }
2314
#line 2319 "internal.templateparser.php"
2315
#line 441 "internal.templateparser.y"
2316
    function yy_r129(){$this->_retvalue = '<=';    }
2317
#line 2322 "internal.templateparser.php"
2318
#line 442 "internal.templateparser.y"
2319
    function yy_r130(){$this->_retvalue = '===';    }
2320
#line 2325 "internal.templateparser.php"
2321
#line 443 "internal.templateparser.y"
2322
    function yy_r131(){$this->_retvalue = '!==';    }
2323
#line 2328 "internal.templateparser.php"
2324
#line 445 "internal.templateparser.y"
2325
    function yy_r132(){$this->_retvalue = '&&';    }
2326
#line 2331 "internal.templateparser.php"
2327
#line 446 "internal.templateparser.y"
2328
    function yy_r133(){$this->_retvalue = '||';    }
2329
#line 2334 "internal.templateparser.php"
2330
#line 447 "internal.templateparser.y"
2331
    function yy_r134(){$this->_retvalue = ' XOR ';    }
2332
#line 2337 "internal.templateparser.php"
2333
#line 452 "internal.templateparser.y"
2334
    function yy_r135(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';    }
2335
#line 2340 "internal.templateparser.php"
2336
#line 454 "internal.templateparser.y"
2337
    function yy_r137(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;     }
2338
#line 2343 "internal.templateparser.php"
2339
#line 455 "internal.templateparser.y"
2340
    function yy_r138(){ return;     }
2341
#line 2346 "internal.templateparser.php"
2342
#line 456 "internal.templateparser.y"
2343
    function yy_r139(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;    }
2344
#line 2349 "internal.templateparser.php"
2345
#line 457 "internal.templateparser.y"
2346
    function yy_r140(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;    }
2347
#line 2352 "internal.templateparser.php"
2348
#line 465 "internal.templateparser.y"
2349
    function yy_r144(){$this->_retvalue = "`".$this->yystack[$this->yyidx + -1]->minor."`";    }
2350
#line 2355 "internal.templateparser.php"
2351
#line 466 "internal.templateparser.y"
2352
    function yy_r145(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."';    }
2353
#line 2358 "internal.templateparser.php"
2354
#line 467 "internal.templateparser.y"
2355
    function yy_r146(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + 0]->minor .'\')->value'.'."'; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"))->nocache;    }
2356
#line 2361 "internal.templateparser.php"
2357
#line 468 "internal.templateparser.y"
2358
    function yy_r147(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0].'".('.$this->yystack[$this->yyidx + -1]->minor.')."';    }
2359
#line 2364 "internal.templateparser.php"
2360
#line 469 "internal.templateparser.y"
2361
    function yy_r148(){ $this->prefix_number++; $this->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '".$_tmp'.$this->prefix_number.'."';     }
2362
#line 2367 "internal.templateparser.php"
2363
#line 470 "internal.templateparser.y"
2364
    function yy_r149(){$this->_retvalue = '$'.$this->yystack[$this->yyidx + 0]->minor;    }
2365
#line 2370 "internal.templateparser.php"
2366
#line 472 "internal.templateparser.y"
2367
    function yy_r151(){$this->_retvalue = '`'.$this->yystack[$this->yyidx + 0]->minor;    }
2368
#line 2373 "internal.templateparser.php"
2369
 
2370
    /**
2371
     * placeholder for the left hand side in a reduce operation.
2372
     *
2373
     * For a parser with a rule like this:
2374
     * <pre>
2375
     * rule(A) ::= B. { A = 1; }
2376
     * </pre>
2377
     *
2378
     * The parser will translate to something like:
2379
     *
2380
     * <code>
2381
     * function yy_r0(){$this->_retvalue = 1;}
2382
     * </code>
2383
     */
2384
    private $_retvalue;
2385
 
2386
    /**
2387
     * Perform a reduce action and the shift that must immediately
2388
     * follow the reduce.
2389
     *
2390
     * For a rule such as:
2391
     *
2392
     * <pre>
2393
     * A ::= B blah C. { dosomething(); }
2394
     * </pre>
2395
     *
2396
     * This function will first call the action, if any, ("dosomething();" in our
2397
     * example), and then it will pop three states from the stack,
2398
     * one for each entry on the right-hand side of the expression
2399
     * (B, blah, and C in our example rule), and then push the result of the action
2400
     * back on to the stack with the resulting state reduced to (as described in the .out
2401
     * file)
2402
     * @param int Number of the rule by which to reduce
2403
     */
2404
    function yy_reduce($yyruleno)
2405
    {
2406
        //int $yygoto;                     /* The next state */
2407
        //int $yyact;                      /* The next action */
2408
        //mixed $yygotominor;        /* The LHS of the rule reduced */
2409
        //TP_yyStackEntry $yymsp;            /* The top of the parser's stack */
2410
        //int $yysize;                     /* Amount to pop the stack */
2411
        $yymsp = $this->yystack[$this->yyidx];
2412
        if (self::$yyTraceFILE && $yyruleno >= 0
2413
              && $yyruleno < count(self::$yyRuleName)) {
2414
            fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
2415
                self::$yyTracePrompt, $yyruleno,
2416
                self::$yyRuleName[$yyruleno]);
2417
        }
2418
 
2419
        $this->_retvalue = $yy_lefthand_side = null;
2420
        if (array_key_exists($yyruleno, self::$yyReduceMap)) {
2421
            // call the action
2422
            $this->_retvalue = null;
2423
            $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
2424
            $yy_lefthand_side = $this->_retvalue;
2425
        }
2426
        $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
2427
        $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
2428
        $this->yyidx -= $yysize;
2429
        for($i = $yysize; $i; $i--) {
2430
            // pop all of the right-hand side parameters
2431
            array_pop($this->yystack);
2432
        }
2433
        $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
2434
        if ($yyact < self::YYNSTATE) {
2435
            /* If we are not debugging and the reduce action popped at least
2436
            ** one element off the stack, then we can push the new element back
2437
            ** onto the stack here, and skip the stack overflow test in yy_shift().
2438
            ** That gives a significant speed improvement. */
2439
            if (!self::$yyTraceFILE && $yysize) {
2440
                $this->yyidx++;
2441
                $x = new TP_yyStackEntry;
2442
                $x->stateno = $yyact;
2443
                $x->major = $yygoto;
2444
                $x->minor = $yy_lefthand_side;
2445
                $this->yystack[$this->yyidx] = $x;
2446
            } else {
2447
                $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
2448
            }
2449
        } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
2450
            $this->yy_accept();
2451
        }
2452
    }
2453
 
2454
    /**
2455
     * The following code executes when the parse fails
2456
     *
2457
     * Code from %parse_fail is inserted here
2458
     */
2459
    function yy_parse_failed()
2460
    {
2461
        if (self::$yyTraceFILE) {
2462
            fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
2463
        }
2464
        while ($this->yyidx >= 0) {
2465
            $this->yy_pop_parser_stack();
2466
        }
2467
        /* Here code is inserted which will be executed whenever the
2468
        ** parser fails */
2469
    }
2470
 
2471
    /**
2472
     * The following code executes when a syntax error first occurs.
2473
     *
2474
     * %syntax_error code is inserted here
2475
     * @param int The major type of the error token
2476
     * @param mixed The minor type of the error token
2477
     */
2478
    function yy_syntax_error($yymajor, $TOKEN)
2479
    {
2480
#line 60 "internal.templateparser.y"
2481
 
2482
    $this->internalError = true;
2483
    $this->yymajor = $yymajor;
2484
    $this->compiler->trigger_template_error();
2485
#line 2491 "internal.templateparser.php"
2486
    }
2487
 
2488
    /**
2489
     * The following is executed when the parser accepts
2490
     *
2491
     * %parse_accept code is inserted here
2492
     */
2493
    function yy_accept()
2494
    {
2495
        if (self::$yyTraceFILE) {
2496
            fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
2497
        }
2498
        while ($this->yyidx >= 0) {
2499
            $stack = $this->yy_pop_parser_stack();
2500
        }
2501
        /* Here code is inserted which will be executed whenever the
2502
        ** parser accepts */
2503
#line 52 "internal.templateparser.y"
2504
 
2505
    $this->successful = !$this->internalError;
2506
    $this->internalError = false;
2507
    $this->retvalue = $this->_retvalue;
2508
    //echo $this->retvalue."\n\n";
2509
#line 2516 "internal.templateparser.php"
2510
    }
2511
 
2512
    /**
2513
     * The main parser program.
2514
     *
2515
     * The first argument is the major token number.  The second is
2516
     * the token value string as scanned from the input.
2517
     *
2518
     * @param int the token number
2519
     * @param mixed the token value
2520
     * @param mixed any extra arguments that should be passed to handlers
2521
     */
2522
    function doParse($yymajor, $yytokenvalue)
2523
    {
2524
//        $yyact;            /* The parser action. */
2525
//        $yyendofinput;     /* True if we are at the end of input */
2526
        $yyerrorhit = 0;   /* True if yymajor has invoked an error */
2527
 
2528
        /* (re)initialize the parser, if necessary */
2529
        if ($this->yyidx === null || $this->yyidx < 0) {
2530
            /* if ($yymajor == 0) return; // not sure why this was here... */
2531
            $this->yyidx = 0;
2532
            $this->yyerrcnt = -1;
2533
            $x = new TP_yyStackEntry;
2534
            $x->stateno = 0;
2535
            $x->major = 0;
2536
            $this->yystack = array();
2537
            array_push($this->yystack, $x);
2538
        }
2539
        $yyendofinput = ($yymajor==0);
2540
 
2541
        if (self::$yyTraceFILE) {
2542
            fprintf(self::$yyTraceFILE, "%sInput %s\n",
2543
                self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2544
        }
2545
 
2546
        do {
2547
            $yyact = $this->yy_find_shift_action($yymajor);
2548
            if ($yymajor < self::YYERRORSYMBOL &&
2549
                  !$this->yy_is_expected_token($yymajor)) {
2550
                // force a syntax error
2551
                $yyact = self::YY_ERROR_ACTION;
2552
            }
2553
            if ($yyact < self::YYNSTATE) {
2554
                $this->yy_shift($yyact, $yymajor, $yytokenvalue);
2555
                $this->yyerrcnt--;
2556
                if ($yyendofinput && $this->yyidx >= 0) {
2557
                    $yymajor = 0;
2558
                } else {
2559
                    $yymajor = self::YYNOCODE;
2560
                }
2561
            } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
2562
                $this->yy_reduce($yyact - self::YYNSTATE);
2563
            } elseif ($yyact == self::YY_ERROR_ACTION) {
2564
                if (self::$yyTraceFILE) {
2565
                    fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
2566
                        self::$yyTracePrompt);
2567
                }
2568
                if (self::YYERRORSYMBOL) {
2569
                    /* A syntax error has occurred.
2570
                    ** The response to an error depends upon whether or not the
2571
                    ** grammar defines an error token "ERROR".  
2572
                    **
2573
                    ** This is what we do if the grammar does define ERROR:
2574
                    **
2575
                    **  * Call the %syntax_error function.
2576
                    **
2577
                    **  * Begin popping the stack until we enter a state where
2578
                    **    it is legal to shift the error symbol, then shift
2579
                    **    the error symbol.
2580
                    **
2581
                    **  * Set the error count to three.
2582
                    **
2583
                    **  * Begin accepting and shifting new tokens.  No new error
2584
                    **    processing will occur until three tokens have been
2585
                    **    shifted successfully.
2586
                    **
2587
                    */
2588
                    if ($this->yyerrcnt < 0) {
2589
                        $this->yy_syntax_error($yymajor, $yytokenvalue);
2590
                    }
2591
                    $yymx = $this->yystack[$this->yyidx]->major;
2592
                    if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
2593
                        if (self::$yyTraceFILE) {
2594
                            fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
2595
                                self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2596
                        }
2597
                        $this->yy_destructor($yymajor, $yytokenvalue);
2598
                        $yymajor = self::YYNOCODE;
2599
                    } else {
2600
                        while ($this->yyidx >= 0 &&
2601
                                 $yymx != self::YYERRORSYMBOL &&
2602
        ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
2603
                              ){
2604
                            $this->yy_pop_parser_stack();
2605
                        }
2606
                        if ($this->yyidx < 0 || $yymajor==0) {
2607
                            $this->yy_destructor($yymajor, $yytokenvalue);
2608
                            $this->yy_parse_failed();
2609
                            $yymajor = self::YYNOCODE;
2610
                        } elseif ($yymx != self::YYERRORSYMBOL) {
2611
                            $u2 = 0;
2612
                            $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
2613
                        }
2614
                    }
2615
                    $this->yyerrcnt = 3;
2616
                    $yyerrorhit = 1;
2617
                } else {
2618
                    /* YYERRORSYMBOL is not defined */
2619
                    /* This is what we do if the grammar does not define ERROR:
2620
                    **
2621
                    **  * Report an error message, and throw away the input token.
2622
                    **
2623
                    **  * If the input token is $, then fail the parse.
2624
                    **
2625
                    ** As before, subsequent error messages are suppressed until
2626
                    ** three input tokens have been successfully shifted.
2627
                    */
2628
                    if ($this->yyerrcnt <= 0) {
2629
                        $this->yy_syntax_error($yymajor, $yytokenvalue);
2630
                    }
2631
                    $this->yyerrcnt = 3;
2632
                    $this->yy_destructor($yymajor, $yytokenvalue);
2633
                    if ($yyendofinput) {
2634
                        $this->yy_parse_failed();
2635
                    }
2636
                    $yymajor = self::YYNOCODE;
2637
                }
2638
            } else {
2639
                $this->yy_accept();
2640
                $yymajor = self::YYNOCODE;
2641
            }            
2642
        } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
2643
    }
2644
}