1 : <?php
2 : /**
3 : * Smarty Internal Plugin Templatelexer
4 : *
5 : * This is the lexer to break the template source into tokens
6 : * @package Smarty
7 : * @subpackage Compiler
8 : * @author Uwe Tews
9 : */
10 : /**
11 : * Smarty Internal Plugin Templatelexer
12 : */
13 : class Smarty_Internal_Templatelexer
14 : {
15 : public $data;
16 : public $counter;
17 : public $token;
18 : public $value;
19 : public $node;
20 : public $line;
21 : public $taglineno;
22 : public $state = 1;
23 : public $strip = false;
24 : private $heredoc_id_stack = Array();
25 : public $smarty_token_names = array ( // Text for parser error messages
26 : 'IDENTITY' => '===',
27 : 'NONEIDENTITY' => '!==',
28 : 'EQUALS' => '==',
29 : 'NOTEQUALS' => '!=',
30 : 'GREATEREQUAL' => '(>=,ge)',
31 : 'LESSEQUAL' => '(<=,le)',
32 : 'GREATERTHAN' => '(>,gt)',
33 : 'LESSTHAN' => '(<,lt)',
34 : 'MOD' => '(%,mod)',
35 : 'NOT' => '(!,not)',
36 : 'LAND' => '(&&,and)',
37 : 'LOR' => '(||,or)',
38 : 'LXOR' => 'xor',
39 : 'OPENP' => '(',
40 : 'CLOSEP' => ')',
41 : 'OPENB' => '[',
42 : 'CLOSEB' => ']',
43 : 'PTR' => '->',
44 : 'APTR' => '=>',
45 : 'EQUAL' => '=',
46 : 'NUMBER' => 'number',
47 : 'UNIMATH' => '+" , "-',
48 : 'MATH' => '*" , "/" , "%',
49 : 'INCDEC' => '++" , "--',
50 : 'SPACE' => ' ',
51 : 'DOLLAR' => '$',
52 : 'SEMICOLON' => ';',
53 : 'COLON' => ':',
54 : 'DOUBLECOLON' => '::',
55 : 'AT' => '@',
56 : 'HATCH' => '#',
57 : 'QUOTE' => '"',
58 : 'BACKTICK' => '`',
59 : 'VERT' => '|',
60 : 'DOT' => '.',
61 : 'COMMA' => '","',
62 : 'ANDSYM' => '"&"',
63 : 'QMARK' => '"?"',
64 : 'ID' => 'identifier',
65 : 'OTHER' => 'text',
66 : 'LINEBREAK' => 'newline',
67 : 'FAKEPHPSTARTTAG' => 'Fake PHP start tag',
68 : 'PHPSTARTTAG' => 'PHP start tag',
69 : 'PHPENDTAG' => 'PHP end tag',
70 : 'LITERALSTART' => 'Literal start',
71 : 'LITERALEND' => 'Literal end',
72 : 'LDELSLASH' => 'closing tag',
73 : 'COMMENT' => 'comment',
74 : 'AS' => 'as',
75 : 'TO' => 'to',
76 : );
77 :
78 :
79 : function __construct($data,$compiler)
80 : {
81 : // $this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data);
82 0 : $this->data = $data;
83 0 : $this->counter = 0;
84 0 : $this->line = 1;
85 0 : $this->smarty = $compiler->smarty;
86 0 : $this->compiler = $compiler;
87 0 : $this->ldel = preg_quote($this->smarty->left_delimiter,'/');
88 0 : $this->ldel_length = strlen($this->smarty->left_delimiter);
89 0 : $this->rdel = preg_quote($this->smarty->right_delimiter,'/');
90 0 : $this->smarty_token_names['LDEL'] = $this->smarty->left_delimiter;
91 0 : $this->smarty_token_names['RDEL'] = $this->smarty->right_delimiter;
92 0 : $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
93 0 : }
94 :
95 :
96 : private $_yy_state = 1;
97 : private $_yy_stack = array();
98 :
99 : function yylex()
100 : {
101 0 : return $this->{'yylex' . $this->_yy_state}();
102 : }
103 :
104 : function yypushstate($state)
105 : {
106 0 : array_push($this->_yy_stack, $this->_yy_state);
107 0 : $this->_yy_state = $state;
108 0 : }
109 :
110 : function yypopstate()
111 : {
112 0 : $this->_yy_state = array_pop($this->_yy_stack);
113 0 : }
114 :
115 : function yybegin($state)
116 : {
117 0 : $this->_yy_state = $state;
118 0 : }
119 :
120 :
121 :
122 : function yylex1()
123 : {
124 : $tokenMap = array (
125 0 : 1 => 0,
126 0 : 2 => 0,
127 0 : 3 => 1,
128 0 : 5 => 0,
129 0 : 6 => 0,
130 0 : 7 => 0,
131 0 : 8 => 0,
132 0 : 9 => 0,
133 0 : 10 => 0,
134 0 : 11 => 0,
135 0 : 12 => 1,
136 0 : 14 => 0,
137 0 : 15 => 0,
138 0 : 16 => 0,
139 0 : 17 => 0,
140 0 : 18 => 0,
141 0 : 19 => 0,
142 0 : 20 => 0,
143 0 : 21 => 0,
144 0 : 22 => 0,
145 0 : 23 => 0,
146 0 : 24 => 2,
147 0 : 27 => 0,
148 0 : 28 => 0,
149 0 : );
150 0 : if ($this->counter >= strlen($this->data)) {
151 0 : return false; // end of input
152 : }
153 0 : $yy_global_pattern = "/\G(".$this->ldel."[$]smarty\\.block\\.child".$this->rdel.")|\G(\\{\\})|\G(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|\G([\t ]*[\r\n]+[\t ]*)|\G(".$this->ldel."strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\\s*literal\\s*".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s*setfilter\\s+)|\G(".$this->ldel."\\s{1,})|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|\G(\\?>)|\G(<%)|\G(%>)|\G(([\S\s]*?)(?=([\t ]*[\r\n]+[\t ]*|".$this->ldel."|<\\?|\\?>|<%|%>)))|\G([\S\s]+)|\G(.)/iS";
154 :
155 : do {
156 0 : if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
157 0 : $yysubmatches = $yymatches;
158 0 : $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
159 0 : if (!count($yymatches)) {
160 0 : throw new Exception('Error: lexing failed because a rule matched' .
161 0 : ' an empty string. Input "' . substr($this->data,
162 0 : $this->counter, 5) . '... state TEXT');
163 : }
164 0 : next($yymatches); // skip global match
165 0 : $this->token = key($yymatches); // token number
166 0 : if ($tokenMap[$this->token]) {
167 : // extract sub-patterns for passing to lex function
168 0 : $yysubmatches = array_slice($yysubmatches, $this->token + 1,
169 0 : $tokenMap[$this->token]);
170 0 : } else {
171 0 : $yysubmatches = array();
172 : }
173 0 : $this->value = current($yymatches); // token value
174 0 : $r = $this->{'yy_r1_' . $this->token}($yysubmatches);
175 0 : if ($r === null) {
176 0 : $this->counter += strlen($this->value);
177 0 : $this->line += substr_count($this->value, "\n");
178 : // accept this token
179 0 : return true;
180 0 : } elseif ($r === true) {
181 : // we have changed state
182 : // process this token in the new state
183 0 : return $this->yylex();
184 0 : } elseif ($r === false) {
185 0 : $this->counter += strlen($this->value);
186 0 : $this->line += substr_count($this->value, "\n");
187 0 : if ($this->counter >= strlen($this->data)) {
188 0 : return false; // end of input
189 : }
190 : // skip this token
191 0 : continue;
192 0 : } } else {
193 0 : throw new Exception('Unexpected input at line' . $this->line .
194 0 : ': ' . $this->data[$this->counter]);
195 : }
196 0 : break;
197 0 : } while (true);
198 :
199 0 : } // end function
200 :
201 :
202 : const TEXT = 1;
203 : function yy_r1_1($yy_subpatterns)
204 : {
205 :
206 0 : $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILD;
207 0 : }
208 : function yy_r1_2($yy_subpatterns)
209 : {
210 :
211 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
212 0 : }
213 : function yy_r1_3($yy_subpatterns)
214 : {
215 :
216 0 : $this->token = Smarty_Internal_Templateparser::TP_COMMENT;
217 0 : }
218 : function yy_r1_5($yy_subpatterns)
219 : {
220 :
221 0 : if ($this->strip) {
222 0 : return false;
223 : } else {
224 0 : $this->token = Smarty_Internal_Templateparser::TP_LINEBREAK;
225 : }
226 0 : }
227 : function yy_r1_6($yy_subpatterns)
228 : {
229 :
230 0 : $this->strip = true;
231 0 : return false;
232 : }
233 : function yy_r1_7($yy_subpatterns)
234 : {
235 :
236 0 : if ($this->smarty->auto_literal) {
237 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
238 0 : } else {
239 0 : $this->strip = true;
240 0 : return false;
241 : }
242 0 : }
243 : function yy_r1_8($yy_subpatterns)
244 : {
245 :
246 0 : $this->strip = false;
247 0 : return false;
248 : }
249 : function yy_r1_9($yy_subpatterns)
250 : {
251 :
252 0 : if ($this->smarty->auto_literal) {
253 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
254 0 : } else {
255 0 : $this->strip = false;
256 0 : return false;
257 : }
258 0 : }
259 : function yy_r1_10($yy_subpatterns)
260 : {
261 :
262 0 : $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
263 0 : $this->yypushstate(self::LITERAL);
264 0 : }
265 : function yy_r1_11($yy_subpatterns)
266 : {
267 :
268 0 : if ($this->smarty->auto_literal) {
269 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
270 0 : } else {
271 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
272 0 : $this->yypushstate(self::SMARTY);
273 0 : $this->taglineno = $this->line;
274 : }
275 0 : }
276 : function yy_r1_12($yy_subpatterns)
277 : {
278 :
279 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
280 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
281 0 : } else {
282 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
283 0 : $this->yypushstate(self::SMARTY);
284 0 : $this->taglineno = $this->line;
285 : }
286 0 : }
287 : function yy_r1_14($yy_subpatterns)
288 : {
289 :
290 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
291 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
292 0 : } else {
293 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
294 0 : $this->yypushstate(self::SMARTY);
295 0 : $this->taglineno = $this->line;
296 : }
297 0 : }
298 : function yy_r1_15($yy_subpatterns)
299 : {
300 :
301 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
302 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
303 0 : } else {
304 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
305 0 : $this->yypushstate(self::SMARTY);
306 0 : $this->taglineno = $this->line;
307 : }
308 0 : }
309 : function yy_r1_16($yy_subpatterns)
310 : {
311 :
312 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
313 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
314 0 : } else {
315 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
316 0 : $this->yypushstate(self::SMARTY);
317 0 : $this->taglineno = $this->line;
318 : }
319 0 : }
320 : function yy_r1_17($yy_subpatterns)
321 : {
322 :
323 0 : if ($this->smarty->auto_literal) {
324 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
325 0 : } else {
326 0 : $this->token = Smarty_Internal_Templateparser::TP_LDEL;
327 0 : $this->yypushstate(self::SMARTY);
328 0 : $this->taglineno = $this->line;
329 : }
330 0 : }
331 : function yy_r1_18($yy_subpatterns)
332 : {
333 :
334 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
335 0 : $this->yypushstate(self::SMARTY);
336 0 : $this->taglineno = $this->line;
337 0 : }
338 : function yy_r1_19($yy_subpatterns)
339 : {
340 :
341 0 : $this->token = Smarty_Internal_Templateparser::TP_LDEL;
342 0 : $this->yypushstate(self::SMARTY);
343 0 : $this->taglineno = $this->line;
344 0 : }
345 : function yy_r1_20($yy_subpatterns)
346 : {
347 :
348 0 : if (in_array($this->value, Array('<?', '<?=', '<?php'))) {
349 0 : $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
350 0 : } elseif ($this->value == '<?xml') {
351 0 : $this->token = Smarty_Internal_Templateparser::TP_XMLTAG;
352 0 : } else {
353 0 : $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG;
354 0 : $this->value = substr($this->value, 0, 2);
355 : }
356 0 : }
357 : function yy_r1_21($yy_subpatterns)
358 : {
359 :
360 0 : $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG;
361 0 : }
362 : function yy_r1_22($yy_subpatterns)
363 : {
364 :
365 0 : $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
366 0 : }
367 : function yy_r1_23($yy_subpatterns)
368 : {
369 :
370 0 : $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
371 0 : }
372 : function yy_r1_24($yy_subpatterns)
373 : {
374 :
375 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
376 0 : }
377 : function yy_r1_27($yy_subpatterns)
378 : {
379 :
380 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
381 0 : }
382 : function yy_r1_28($yy_subpatterns)
383 : {
384 :
385 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
386 0 : }
387 :
388 :
389 : function yylex2()
390 : {
391 : $tokenMap = array (
392 0 : 1 => 0,
393 0 : 2 => 0,
394 0 : 3 => 1,
395 0 : 5 => 0,
396 0 : 6 => 0,
397 0 : 7 => 0,
398 0 : 8 => 0,
399 0 : 9 => 0,
400 0 : 10 => 0,
401 0 : 11 => 0,
402 0 : 12 => 0,
403 0 : 13 => 0,
404 0 : 14 => 0,
405 0 : 15 => 0,
406 0 : 16 => 0,
407 0 : 17 => 0,
408 0 : 18 => 0,
409 0 : 19 => 0,
410 0 : 20 => 1,
411 0 : 22 => 1,
412 0 : 24 => 1,
413 0 : 26 => 0,
414 0 : 27 => 0,
415 0 : 28 => 0,
416 0 : 29 => 0,
417 0 : 30 => 0,
418 0 : 31 => 0,
419 0 : 32 => 0,
420 0 : 33 => 0,
421 0 : 34 => 0,
422 0 : 35 => 0,
423 0 : 36 => 0,
424 0 : 37 => 0,
425 0 : 38 => 0,
426 0 : 39 => 0,
427 0 : 40 => 0,
428 0 : 41 => 0,
429 0 : 42 => 0,
430 0 : 43 => 3,
431 0 : 47 => 0,
432 0 : 48 => 0,
433 0 : 49 => 0,
434 0 : 50 => 0,
435 0 : 51 => 0,
436 0 : 52 => 0,
437 0 : 53 => 0,
438 0 : 54 => 0,
439 0 : 55 => 1,
440 0 : 57 => 1,
441 0 : 59 => 0,
442 0 : 60 => 0,
443 0 : 61 => 0,
444 0 : 62 => 0,
445 0 : 63 => 0,
446 0 : 64 => 0,
447 0 : 65 => 0,
448 0 : 66 => 0,
449 0 : 67 => 0,
450 0 : 68 => 0,
451 0 : 69 => 0,
452 0 : 70 => 0,
453 0 : 71 => 0,
454 0 : 72 => 0,
455 0 : 73 => 0,
456 0 : 74 => 0,
457 0 : 75 => 0,
458 0 : 76 => 0,
459 0 : );
460 0 : if ($this->counter >= strlen($this->data)) {
461 0 : return false; // end of input
462 : }
463 0 : $yy_global_pattern = "/\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s{1,})|\G(\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(".$this->rdel.")|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*===\\s*)|\G(\\s*!==\\s*)|\G(\\s*==\\s*|\\s+eq\\s+)|\G(\\s*!=\\s*|\\s*<>\\s*|\\s+(ne|neq)\\s+)|\G(\\s*>=\\s*|\\s+(ge|gte)\\s+)|\G(\\s*<=\\s*|\\s+(le|lte)\\s+)|\G(\\s*>\\s*|\\s+gt\\s+)|\G(\\s*<\\s*|\\s+lt\\s+)|\G(\\s+mod\\s+)|\G(!\\s*|not\\s+)|\G(\\s*&&\\s*|\\s*and\\s+)|\G(\\s*\\|\\|\\s*|\\s*or\\s+)|\G(\\s*xor\\s+)|\G(\\s+is\\s+odd\\s+by\\s+)|\G(\\s+is\\s+not\\s+odd\\s+by\\s+)|\G(\\s+is\\s+odd)|\G(\\s+is\\s+not\\s+odd)|\G(\\s+is\\s+even\\s+by\\s+)|\G(\\s+is\\s+not\\s+even\\s+by\\s+)|\G(\\s+is\\s+even)|\G(\\s+is\\s+not\\s+even)|\G(\\s+is\\s+div\\s+by\\s+)|\G(\\s+is\\s+not\\s+div\\s+by\\s+)|\G(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\)\\s*)|\G(\\(\\s*)|\G(\\s*\\))|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*->\\s*)|\G(\\s*=>\\s*)|\G(\\s*=\\s*)|\G(\\+\\+|--)|\G(\\s*(\\+|-)\\s*)|\G(\\s*(\\*|\/|%)\\s*)|\G(\\$)|\G(\\s*;)|\G(::)|\G(\\s*:\\s*)|\G(@)|\G(#)|\G(\")|\G(`)|\G(\\|)|\G(\\.)|\G(\\s*,\\s*)|\G(\\s*&\\s*)|\G(\\s*\\?\\s*)|\G(0[xX][0-9a-fA-F]+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G(\\s+)|\G(.)/iS";
464 :
465 : do {
466 0 : if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
467 0 : $yysubmatches = $yymatches;
468 0 : $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
469 0 : if (!count($yymatches)) {
470 0 : throw new Exception('Error: lexing failed because a rule matched' .
471 0 : ' an empty string. Input "' . substr($this->data,
472 0 : $this->counter, 5) . '... state SMARTY');
473 : }
474 0 : next($yymatches); // skip global match
475 0 : $this->token = key($yymatches); // token number
476 0 : if ($tokenMap[$this->token]) {
477 : // extract sub-patterns for passing to lex function
478 0 : $yysubmatches = array_slice($yysubmatches, $this->token + 1,
479 0 : $tokenMap[$this->token]);
480 0 : } else {
481 0 : $yysubmatches = array();
482 : }
483 0 : $this->value = current($yymatches); // token value
484 0 : $r = $this->{'yy_r2_' . $this->token}($yysubmatches);
485 0 : if ($r === null) {
486 0 : $this->counter += strlen($this->value);
487 0 : $this->line += substr_count($this->value, "\n");
488 : // accept this token
489 0 : return true;
490 0 : } elseif ($r === true) {
491 : // we have changed state
492 : // process this token in the new state
493 0 : return $this->yylex();
494 0 : } elseif ($r === false) {
495 0 : $this->counter += strlen($this->value);
496 0 : $this->line += substr_count($this->value, "\n");
497 0 : if ($this->counter >= strlen($this->data)) {
498 0 : return false; // end of input
499 : }
500 : // skip this token
501 0 : continue;
502 0 : } } else {
503 0 : throw new Exception('Unexpected input at line' . $this->line .
504 0 : ': ' . $this->data[$this->counter]);
505 : }
506 0 : break;
507 0 : } while (true);
508 :
509 0 : } // end function
510 :
511 :
512 : const SMARTY = 2;
513 : function yy_r2_1($yy_subpatterns)
514 : {
515 :
516 0 : $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
517 0 : }
518 : function yy_r2_2($yy_subpatterns)
519 : {
520 :
521 0 : if ($this->smarty->auto_literal) {
522 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
523 0 : } else {
524 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
525 0 : $this->yypushstate(self::SMARTY);
526 0 : $this->taglineno = $this->line;
527 : }
528 0 : }
529 : function yy_r2_3($yy_subpatterns)
530 : {
531 :
532 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
533 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
534 0 : } else {
535 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
536 0 : $this->yypushstate(self::SMARTY);
537 0 : $this->taglineno = $this->line;
538 : }
539 0 : }
540 : function yy_r2_5($yy_subpatterns)
541 : {
542 :
543 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
544 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
545 0 : } else {
546 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
547 0 : $this->yypushstate(self::SMARTY);
548 0 : $this->taglineno = $this->line;
549 : }
550 0 : }
551 : function yy_r2_6($yy_subpatterns)
552 : {
553 :
554 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
555 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
556 0 : } else {
557 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
558 0 : $this->yypushstate(self::SMARTY);
559 0 : $this->taglineno = $this->line;
560 : }
561 0 : }
562 : function yy_r2_7($yy_subpatterns)
563 : {
564 :
565 0 : if ($this->smarty->auto_literal) {
566 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
567 0 : } else {
568 0 : $this->token = Smarty_Internal_Templateparser::TP_LDEL;
569 0 : $this->yypushstate(self::SMARTY);
570 0 : $this->taglineno = $this->line;
571 : }
572 0 : }
573 : function yy_r2_8($yy_subpatterns)
574 : {
575 :
576 0 : $this->token = Smarty_Internal_Templateparser::TP_RDEL;
577 0 : $this->yypopstate();
578 0 : }
579 : function yy_r2_9($yy_subpatterns)
580 : {
581 :
582 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
583 0 : $this->yypushstate(self::SMARTY);
584 0 : $this->taglineno = $this->line;
585 0 : }
586 : function yy_r2_10($yy_subpatterns)
587 : {
588 :
589 0 : $this->token = Smarty_Internal_Templateparser::TP_LDEL;
590 0 : $this->yypushstate(self::SMARTY);
591 0 : $this->taglineno = $this->line;
592 0 : }
593 : function yy_r2_11($yy_subpatterns)
594 : {
595 :
596 0 : $this->token = Smarty_Internal_Templateparser::TP_RDEL;
597 0 : $this->yypopstate();
598 0 : }
599 : function yy_r2_12($yy_subpatterns)
600 : {
601 :
602 0 : $this->token = Smarty_Internal_Templateparser::TP_ISIN;
603 0 : }
604 : function yy_r2_13($yy_subpatterns)
605 : {
606 :
607 0 : $this->token = Smarty_Internal_Templateparser::TP_AS;
608 0 : }
609 : function yy_r2_14($yy_subpatterns)
610 : {
611 :
612 0 : $this->token = Smarty_Internal_Templateparser::TP_TO;
613 0 : }
614 : function yy_r2_15($yy_subpatterns)
615 : {
616 :
617 0 : $this->token = Smarty_Internal_Templateparser::TP_STEP;
618 0 : }
619 : function yy_r2_16($yy_subpatterns)
620 : {
621 :
622 0 : $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
623 0 : }
624 : function yy_r2_17($yy_subpatterns)
625 : {
626 :
627 0 : $this->token = Smarty_Internal_Templateparser::TP_IDENTITY;
628 0 : }
629 : function yy_r2_18($yy_subpatterns)
630 : {
631 :
632 0 : $this->token = Smarty_Internal_Templateparser::TP_NONEIDENTITY;
633 0 : }
634 : function yy_r2_19($yy_subpatterns)
635 : {
636 :
637 0 : $this->token = Smarty_Internal_Templateparser::TP_EQUALS;
638 0 : }
639 : function yy_r2_20($yy_subpatterns)
640 : {
641 :
642 0 : $this->token = Smarty_Internal_Templateparser::TP_NOTEQUALS;
643 0 : }
644 : function yy_r2_22($yy_subpatterns)
645 : {
646 :
647 0 : $this->token = Smarty_Internal_Templateparser::TP_GREATEREQUAL;
648 0 : }
649 : function yy_r2_24($yy_subpatterns)
650 : {
651 :
652 0 : $this->token = Smarty_Internal_Templateparser::TP_LESSEQUAL;
653 0 : }
654 : function yy_r2_26($yy_subpatterns)
655 : {
656 :
657 0 : $this->token = Smarty_Internal_Templateparser::TP_GREATERTHAN;
658 0 : }
659 : function yy_r2_27($yy_subpatterns)
660 : {
661 :
662 0 : $this->token = Smarty_Internal_Templateparser::TP_LESSTHAN;
663 0 : }
664 : function yy_r2_28($yy_subpatterns)
665 : {
666 :
667 0 : $this->token = Smarty_Internal_Templateparser::TP_MOD;
668 0 : }
669 : function yy_r2_29($yy_subpatterns)
670 : {
671 :
672 0 : $this->token = Smarty_Internal_Templateparser::TP_NOT;
673 0 : }
674 : function yy_r2_30($yy_subpatterns)
675 : {
676 :
677 0 : $this->token = Smarty_Internal_Templateparser::TP_LAND;
678 0 : }
679 : function yy_r2_31($yy_subpatterns)
680 : {
681 :
682 0 : $this->token = Smarty_Internal_Templateparser::TP_LOR;
683 0 : }
684 : function yy_r2_32($yy_subpatterns)
685 : {
686 :
687 0 : $this->token = Smarty_Internal_Templateparser::TP_LXOR;
688 0 : }
689 : function yy_r2_33($yy_subpatterns)
690 : {
691 :
692 0 : $this->token = Smarty_Internal_Templateparser::TP_ISODDBY;
693 0 : }
694 : function yy_r2_34($yy_subpatterns)
695 : {
696 :
697 0 : $this->token = Smarty_Internal_Templateparser::TP_ISNOTODDBY;
698 0 : }
699 : function yy_r2_35($yy_subpatterns)
700 : {
701 :
702 0 : $this->token = Smarty_Internal_Templateparser::TP_ISODD;
703 0 : }
704 : function yy_r2_36($yy_subpatterns)
705 : {
706 :
707 0 : $this->token = Smarty_Internal_Templateparser::TP_ISNOTODD;
708 0 : }
709 : function yy_r2_37($yy_subpatterns)
710 : {
711 :
712 0 : $this->token = Smarty_Internal_Templateparser::TP_ISEVENBY;
713 0 : }
714 : function yy_r2_38($yy_subpatterns)
715 : {
716 :
717 0 : $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVENBY;
718 0 : }
719 : function yy_r2_39($yy_subpatterns)
720 : {
721 :
722 0 : $this->token = Smarty_Internal_Templateparser::TP_ISEVEN;
723 0 : }
724 : function yy_r2_40($yy_subpatterns)
725 : {
726 :
727 0 : $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVEN;
728 0 : }
729 : function yy_r2_41($yy_subpatterns)
730 : {
731 :
732 0 : $this->token = Smarty_Internal_Templateparser::TP_ISDIVBY;
733 0 : }
734 : function yy_r2_42($yy_subpatterns)
735 : {
736 :
737 0 : $this->token = Smarty_Internal_Templateparser::TP_ISNOTDIVBY;
738 0 : }
739 : function yy_r2_43($yy_subpatterns)
740 : {
741 :
742 0 : $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
743 0 : }
744 : function yy_r2_47($yy_subpatterns)
745 : {
746 :
747 0 : $this->token = Smarty_Internal_Templateparser::TP_OPENP;
748 0 : }
749 : function yy_r2_48($yy_subpatterns)
750 : {
751 :
752 0 : $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
753 0 : }
754 : function yy_r2_49($yy_subpatterns)
755 : {
756 :
757 0 : $this->token = Smarty_Internal_Templateparser::TP_OPENB;
758 0 : }
759 : function yy_r2_50($yy_subpatterns)
760 : {
761 :
762 0 : $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
763 0 : }
764 : function yy_r2_51($yy_subpatterns)
765 : {
766 :
767 0 : $this->token = Smarty_Internal_Templateparser::TP_PTR;
768 0 : }
769 : function yy_r2_52($yy_subpatterns)
770 : {
771 :
772 0 : $this->token = Smarty_Internal_Templateparser::TP_APTR;
773 0 : }
774 : function yy_r2_53($yy_subpatterns)
775 : {
776 :
777 0 : $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
778 0 : }
779 : function yy_r2_54($yy_subpatterns)
780 : {
781 :
782 0 : $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
783 0 : }
784 : function yy_r2_55($yy_subpatterns)
785 : {
786 :
787 0 : $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
788 0 : }
789 : function yy_r2_57($yy_subpatterns)
790 : {
791 :
792 0 : $this->token = Smarty_Internal_Templateparser::TP_MATH;
793 0 : }
794 : function yy_r2_59($yy_subpatterns)
795 : {
796 :
797 0 : $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
798 0 : }
799 : function yy_r2_60($yy_subpatterns)
800 : {
801 :
802 0 : $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
803 0 : }
804 : function yy_r2_61($yy_subpatterns)
805 : {
806 :
807 0 : $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
808 0 : }
809 : function yy_r2_62($yy_subpatterns)
810 : {
811 :
812 0 : $this->token = Smarty_Internal_Templateparser::TP_COLON;
813 0 : }
814 : function yy_r2_63($yy_subpatterns)
815 : {
816 :
817 0 : $this->token = Smarty_Internal_Templateparser::TP_AT;
818 0 : }
819 : function yy_r2_64($yy_subpatterns)
820 : {
821 :
822 0 : $this->token = Smarty_Internal_Templateparser::TP_HATCH;
823 0 : }
824 : function yy_r2_65($yy_subpatterns)
825 : {
826 :
827 0 : $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
828 0 : $this->yypushstate(self::DOUBLEQUOTEDSTRING);
829 0 : }
830 : function yy_r2_66($yy_subpatterns)
831 : {
832 :
833 0 : $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
834 0 : $this->yypopstate();
835 0 : }
836 : function yy_r2_67($yy_subpatterns)
837 : {
838 :
839 0 : $this->token = Smarty_Internal_Templateparser::TP_VERT;
840 0 : }
841 : function yy_r2_68($yy_subpatterns)
842 : {
843 :
844 0 : $this->token = Smarty_Internal_Templateparser::TP_DOT;
845 0 : }
846 : function yy_r2_69($yy_subpatterns)
847 : {
848 :
849 0 : $this->token = Smarty_Internal_Templateparser::TP_COMMA;
850 0 : }
851 : function yy_r2_70($yy_subpatterns)
852 : {
853 :
854 0 : $this->token = Smarty_Internal_Templateparser::TP_ANDSYM;
855 0 : }
856 : function yy_r2_71($yy_subpatterns)
857 : {
858 :
859 0 : $this->token = Smarty_Internal_Templateparser::TP_QMARK;
860 0 : }
861 : function yy_r2_72($yy_subpatterns)
862 : {
863 :
864 0 : $this->token = Smarty_Internal_Templateparser::TP_HEX;
865 0 : }
866 : function yy_r2_73($yy_subpatterns)
867 : {
868 :
869 0 : $this->token = Smarty_Internal_Templateparser::TP_ID;
870 0 : }
871 : function yy_r2_74($yy_subpatterns)
872 : {
873 :
874 0 : $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
875 0 : }
876 : function yy_r2_75($yy_subpatterns)
877 : {
878 :
879 0 : $this->token = Smarty_Internal_Templateparser::TP_SPACE;
880 0 : }
881 : function yy_r2_76($yy_subpatterns)
882 : {
883 :
884 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
885 0 : }
886 :
887 :
888 :
889 : function yylex3()
890 : {
891 : $tokenMap = array (
892 0 : 1 => 0,
893 0 : 2 => 0,
894 0 : 3 => 0,
895 0 : 4 => 0,
896 0 : 5 => 0,
897 0 : 6 => 0,
898 0 : 7 => 0,
899 0 : 8 => 2,
900 0 : 11 => 0,
901 0 : );
902 0 : if ($this->counter >= strlen($this->data)) {
903 0 : return false; // end of input
904 : }
905 0 : $yy_global_pattern = "/\G(".$this->ldel."\\s*literal\\s*".$this->rdel.")|\G(".$this->ldel."\\s*\/literal\\s*".$this->rdel.")|\G([\t ]*[\r\n]+[\t ]*)|\G(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|\G(\\?>)|\G(<%)|\G(%>)|\G(([\S\s]*?)(?=([\t ]*[\r\n]+[\t ]*|".$this->ldel."\/?literal".$this->rdel."|<\\?|<%)))|\G(.)/iS";
906 :
907 : do {
908 0 : if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
909 0 : $yysubmatches = $yymatches;
910 0 : $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
911 0 : if (!count($yymatches)) {
912 0 : throw new Exception('Error: lexing failed because a rule matched' .
913 0 : ' an empty string. Input "' . substr($this->data,
914 0 : $this->counter, 5) . '... state LITERAL');
915 : }
916 0 : next($yymatches); // skip global match
917 0 : $this->token = key($yymatches); // token number
918 0 : if ($tokenMap[$this->token]) {
919 : // extract sub-patterns for passing to lex function
920 0 : $yysubmatches = array_slice($yysubmatches, $this->token + 1,
921 0 : $tokenMap[$this->token]);
922 0 : } else {
923 0 : $yysubmatches = array();
924 : }
925 0 : $this->value = current($yymatches); // token value
926 0 : $r = $this->{'yy_r3_' . $this->token}($yysubmatches);
927 0 : if ($r === null) {
928 0 : $this->counter += strlen($this->value);
929 0 : $this->line += substr_count($this->value, "\n");
930 : // accept this token
931 0 : return true;
932 0 : } elseif ($r === true) {
933 : // we have changed state
934 : // process this token in the new state
935 0 : return $this->yylex();
936 0 : } elseif ($r === false) {
937 0 : $this->counter += strlen($this->value);
938 0 : $this->line += substr_count($this->value, "\n");
939 0 : if ($this->counter >= strlen($this->data)) {
940 0 : return false; // end of input
941 : }
942 : // skip this token
943 0 : continue;
944 0 : } } else {
945 0 : throw new Exception('Unexpected input at line' . $this->line .
946 0 : ': ' . $this->data[$this->counter]);
947 : }
948 0 : break;
949 0 : } while (true);
950 :
951 0 : } // end function
952 :
953 :
954 : const LITERAL = 3;
955 : function yy_r3_1($yy_subpatterns)
956 : {
957 :
958 0 : $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
959 0 : $this->yypushstate(self::LITERAL);
960 0 : }
961 : function yy_r3_2($yy_subpatterns)
962 : {
963 :
964 0 : $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
965 0 : $this->yypopstate();
966 0 : }
967 : function yy_r3_3($yy_subpatterns)
968 : {
969 :
970 0 : $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
971 0 : }
972 : function yy_r3_4($yy_subpatterns)
973 : {
974 :
975 0 : if (in_array($this->value, Array('<?', '<?=', '<?php'))) {
976 0 : $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
977 0 : } else {
978 0 : $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG;
979 0 : $this->value = substr($this->value, 0, 2);
980 : }
981 0 : }
982 : function yy_r3_5($yy_subpatterns)
983 : {
984 :
985 0 : $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG;
986 0 : }
987 : function yy_r3_6($yy_subpatterns)
988 : {
989 :
990 0 : $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
991 0 : }
992 : function yy_r3_7($yy_subpatterns)
993 : {
994 :
995 0 : $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
996 0 : }
997 : function yy_r3_8($yy_subpatterns)
998 : {
999 :
1000 0 : $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
1001 0 : }
1002 : function yy_r3_11($yy_subpatterns)
1003 : {
1004 :
1005 0 : $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
1006 0 : }
1007 :
1008 :
1009 : function yylex4()
1010 : {
1011 : $tokenMap = array (
1012 0 : 1 => 0,
1013 0 : 2 => 1,
1014 0 : 4 => 0,
1015 0 : 5 => 0,
1016 0 : 6 => 0,
1017 0 : 7 => 0,
1018 0 : 8 => 0,
1019 0 : 9 => 0,
1020 0 : 10 => 0,
1021 0 : 11 => 0,
1022 0 : 12 => 0,
1023 0 : 13 => 3,
1024 0 : 17 => 0,
1025 0 : 18 => 0,
1026 0 : );
1027 0 : if ($this->counter >= strlen($this->data)) {
1028 0 : return false; // end of input
1029 : }
1030 0 : $yy_global_pattern = "/\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s{1,})|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(\")|\G(`\\$)|\G(\\$[0-9]*[a-zA-Z_]\\w*)|\G(\\$)|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(".$this->ldel."|\\$|`\\$|\")))|\G([\S\s]+)|\G(.)/iS";
1031 :
1032 : do {
1033 0 : if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
1034 0 : $yysubmatches = $yymatches;
1035 0 : $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
1036 0 : if (!count($yymatches)) {
1037 0 : throw new Exception('Error: lexing failed because a rule matched' .
1038 0 : ' an empty string. Input "' . substr($this->data,
1039 0 : $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
1040 : }
1041 0 : next($yymatches); // skip global match
1042 0 : $this->token = key($yymatches); // token number
1043 0 : if ($tokenMap[$this->token]) {
1044 : // extract sub-patterns for passing to lex function
1045 0 : $yysubmatches = array_slice($yysubmatches, $this->token + 1,
1046 0 : $tokenMap[$this->token]);
1047 0 : } else {
1048 0 : $yysubmatches = array();
1049 : }
1050 0 : $this->value = current($yymatches); // token value
1051 0 : $r = $this->{'yy_r4_' . $this->token}($yysubmatches);
1052 0 : if ($r === null) {
1053 0 : $this->counter += strlen($this->value);
1054 0 : $this->line += substr_count($this->value, "\n");
1055 : // accept this token
1056 0 : return true;
1057 0 : } elseif ($r === true) {
1058 : // we have changed state
1059 : // process this token in the new state
1060 0 : return $this->yylex();
1061 0 : } elseif ($r === false) {
1062 0 : $this->counter += strlen($this->value);
1063 0 : $this->line += substr_count($this->value, "\n");
1064 0 : if ($this->counter >= strlen($this->data)) {
1065 0 : return false; // end of input
1066 : }
1067 : // skip this token
1068 0 : continue;
1069 0 : } } else {
1070 0 : throw new Exception('Unexpected input at line' . $this->line .
1071 0 : ': ' . $this->data[$this->counter]);
1072 : }
1073 0 : break;
1074 0 : } while (true);
1075 :
1076 0 : } // end function
1077 :
1078 :
1079 : const DOUBLEQUOTEDSTRING = 4;
1080 : function yy_r4_1($yy_subpatterns)
1081 : {
1082 :
1083 0 : if ($this->smarty->auto_literal) {
1084 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1085 0 : } else {
1086 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
1087 0 : $this->yypushstate(self::SMARTY);
1088 0 : $this->taglineno = $this->line;
1089 : }
1090 0 : }
1091 : function yy_r4_2($yy_subpatterns)
1092 : {
1093 :
1094 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
1095 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1096 0 : } else {
1097 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
1098 0 : $this->yypushstate(self::SMARTY);
1099 0 : $this->taglineno = $this->line;
1100 : }
1101 0 : }
1102 : function yy_r4_4($yy_subpatterns)
1103 : {
1104 :
1105 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
1106 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1107 0 : } else {
1108 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
1109 0 : $this->yypushstate(self::SMARTY);
1110 0 : $this->taglineno = $this->line;
1111 : }
1112 0 : }
1113 : function yy_r4_5($yy_subpatterns)
1114 : {
1115 :
1116 0 : if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
1117 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1118 0 : } else {
1119 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
1120 0 : $this->yypushstate(self::SMARTY);
1121 0 : $this->taglineno = $this->line;
1122 : }
1123 0 : }
1124 : function yy_r4_6($yy_subpatterns)
1125 : {
1126 :
1127 0 : if ($this->smarty->auto_literal) {
1128 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1129 0 : } else {
1130 0 : $this->token = Smarty_Internal_Templateparser::TP_LDEL;
1131 0 : $this->yypushstate(self::SMARTY);
1132 0 : $this->taglineno = $this->line;
1133 : }
1134 0 : }
1135 : function yy_r4_7($yy_subpatterns)
1136 : {
1137 :
1138 0 : $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
1139 0 : $this->yypushstate(self::SMARTY);
1140 0 : $this->taglineno = $this->line;
1141 0 : }
1142 : function yy_r4_8($yy_subpatterns)
1143 : {
1144 :
1145 0 : $this->token = Smarty_Internal_Templateparser::TP_LDEL;
1146 0 : $this->yypushstate(self::SMARTY);
1147 0 : $this->taglineno = $this->line;
1148 0 : }
1149 : function yy_r4_9($yy_subpatterns)
1150 : {
1151 :
1152 0 : $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
1153 0 : $this->yypopstate();
1154 0 : }
1155 : function yy_r4_10($yy_subpatterns)
1156 : {
1157 :
1158 0 : $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
1159 0 : $this->value = substr($this->value,0,-1);
1160 0 : $this->yypushstate(self::SMARTY);
1161 0 : $this->taglineno = $this->line;
1162 0 : }
1163 : function yy_r4_11($yy_subpatterns)
1164 : {
1165 :
1166 0 : $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
1167 0 : }
1168 : function yy_r4_12($yy_subpatterns)
1169 : {
1170 :
1171 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1172 0 : }
1173 : function yy_r4_13($yy_subpatterns)
1174 : {
1175 :
1176 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1177 0 : }
1178 : function yy_r4_17($yy_subpatterns)
1179 : {
1180 :
1181 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1182 0 : }
1183 : function yy_r4_18($yy_subpatterns)
1184 : {
1185 :
1186 0 : $this->token = Smarty_Internal_Templateparser::TP_OTHER;
1187 0 : }
1188 :
1189 : }
|