1: | <?php
|
2: | |
3: | |
4: | |
5: | |
6: | |
7: | |
8: | |
9: | |
10: |
|
11: |
|
12: | |
13: | |
14: | |
15: | |
16: | |
17: | |
18: | |
19: | |
20: | |
21: |
|
22: | class Smarty_Internal_Configfilelexer
|
23: | {
|
24: | const START = 1;
|
25: | const VALUE = 2;
|
26: | const NAKED_STRING_VALUE = 3;
|
27: | const COMMENT = 4;
|
28: | const SECTION = 5;
|
29: | const TRIPPLE = 6;
|
30: |
|
31: | |
32: | |
33: | |
34: | |
35: |
|
36: | public $data;
|
37: |
|
38: | |
39: | |
40: | |
41: | |
42: |
|
43: | public $dataLength = null;
|
44: |
|
45: | |
46: | |
47: | |
48: | |
49: |
|
50: | public $counter;
|
51: |
|
52: | |
53: | |
54: | |
55: | |
56: |
|
57: | public $token;
|
58: |
|
59: | |
60: | |
61: | |
62: | |
63: |
|
64: | public $value;
|
65: |
|
66: | |
67: | |
68: | |
69: | |
70: |
|
71: | public $line;
|
72: |
|
73: | |
74: | |
75: | |
76: | |
77: |
|
78: | public $state = 1;
|
79: |
|
80: | |
81: | |
82: | |
83: | |
84: |
|
85: | public $smarty = null;
|
86: |
|
87: | |
88: | |
89: | |
90: | |
91: |
|
92: | public $yyTraceFILE;
|
93: |
|
94: | |
95: | |
96: | |
97: | |
98: |
|
99: | public $yyTracePrompt;
|
100: |
|
101: | |
102: | |
103: | |
104: | |
105: |
|
106: | public $state_name = array(
|
107: | 1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE'
|
108: | );
|
109: |
|
110: | |
111: | |
112: | |
113: | |
114: |
|
115: | public $smarty_token_names = array(
|
116: | );
|
117: |
|
118: | |
119: | |
120: | |
121: | |
122: |
|
123: | private $compiler = null;
|
124: |
|
125: | |
126: | |
127: | |
128: | |
129: |
|
130: | private $configBooleanize = false;
|
131: |
|
132: | |
133: | |
134: | |
135: | |
136: |
|
137: | private $yy_global_pattern1 = null;
|
138: |
|
139: | private $yy_global_pattern2 = null;
|
140: |
|
141: | private $yy_global_pattern3 = null;
|
142: |
|
143: | private $yy_global_pattern4 = null;
|
144: |
|
145: | private $yy_global_pattern5 = null;
|
146: |
|
147: | private $yy_global_pattern6 = null;
|
148: |
|
149: | private $_yy_state = 1;
|
150: |
|
151: | private $_yy_stack = array();
|
152: |
|
153: | |
154: | |
155: | |
156: | |
157: | |
158: |
|
159: | public function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
|
160: | {
|
161: | $this->data = $data . "\n";
|
162: | $this->dataLength = strlen($data);
|
163: | $this->counter = 0;
|
164: | if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
|
165: | $this->counter += strlen($match[ 0 ]);
|
166: | }
|
167: | $this->line = 1;
|
168: | $this->compiler = $compiler;
|
169: | $this->smarty = $compiler->smarty;
|
170: | $this->configBooleanize = $this->smarty->config_booleanize;
|
171: | }
|
172: |
|
173: | public function replace($input)
|
174: | {
|
175: | return $input;
|
176: | }
|
177: |
|
178: | public function PrintTrace()
|
179: | {
|
180: | $this->yyTraceFILE = fopen('php://output', 'w');
|
181: | $this->yyTracePrompt = '<br>';
|
182: | }
|
183: |
|
184: | public function yylex()
|
185: | {
|
186: | return $this->{'yylex' . $this->_yy_state}();
|
187: | }
|
188: |
|
189: | public function yypushstate($state)
|
190: | {
|
191: | if ($this->yyTraceFILE) {
|
192: | fprintf(
|
193: | $this->yyTraceFILE,
|
194: | "%sState push %s\n",
|
195: | $this->yyTracePrompt,
|
196: | isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
|
197: | );
|
198: | }
|
199: | array_push($this->_yy_stack, $this->_yy_state);
|
200: | $this->_yy_state = $state;
|
201: | if ($this->yyTraceFILE) {
|
202: | fprintf(
|
203: | $this->yyTraceFILE,
|
204: | "%snew State %s\n",
|
205: | $this->yyTracePrompt,
|
206: | isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
|
207: | );
|
208: | }
|
209: | }
|
210: |
|
211: | public function yypopstate()
|
212: | {
|
213: | if ($this->yyTraceFILE) {
|
214: | fprintf(
|
215: | $this->yyTraceFILE,
|
216: | "%sState pop %s\n",
|
217: | $this->yyTracePrompt,
|
218: | isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
|
219: | );
|
220: | }
|
221: | $this->_yy_state = array_pop($this->_yy_stack);
|
222: | if ($this->yyTraceFILE) {
|
223: | fprintf(
|
224: | $this->yyTraceFILE,
|
225: | "%snew State %s\n",
|
226: | $this->yyTracePrompt,
|
227: | isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
|
228: | );
|
229: | }
|
230: | }
|
231: |
|
232: | public function yybegin($state)
|
233: | {
|
234: | $this->_yy_state = $state;
|
235: | if ($this->yyTraceFILE) {
|
236: | fprintf(
|
237: | $this->yyTraceFILE,
|
238: | "%sState set %s\n",
|
239: | $this->yyTracePrompt,
|
240: | isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
|
241: | );
|
242: | }
|
243: | }
|
244: |
|
245: | public function yylex1()
|
246: | {
|
247: | if (!isset($this->yy_global_pattern1)) {
|
248: | $this->yy_global_pattern1 =
|
249: | $this->replace("/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS");
|
250: | }
|
251: | if (!isset($this->dataLength)) {
|
252: | $this->dataLength = strlen($this->data);
|
253: | }
|
254: | if ($this->counter >= $this->dataLength) {
|
255: | return false;
|
256: | }
|
257: | do {
|
258: | if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, 0, $this->counter)) {
|
259: | if (!isset($yymatches[ 0 ][ 1 ])) {
|
260: | $yymatches = preg_grep("/(.|\s)+/", $yymatches);
|
261: | } else {
|
262: | $yymatches = array_filter($yymatches);
|
263: | }
|
264: | if (empty($yymatches)) {
|
265: | throw new Exception('Error: lexing failed because a rule matched' .
|
266: | ' an empty string. Input "' . substr(
|
267: | $this->data,
|
268: | $this->counter,
|
269: | 5
|
270: | ) . '... state START');
|
271: | }
|
272: | next($yymatches);
|
273: | $this->token = key($yymatches);
|
274: | $this->value = current($yymatches);
|
275: | $r = $this->{'yy_r1_' . $this->token}();
|
276: | if ($r === null) {
|
277: | $this->counter += strlen($this->value);
|
278: | $this->line += substr_count($this->value, "\n");
|
279: |
|
280: | return true;
|
281: | } elseif ($r === true) {
|
282: |
|
283: |
|
284: | return $this->yylex();
|
285: | } elseif ($r === false) {
|
286: | $this->counter += strlen($this->value);
|
287: | $this->line += substr_count($this->value, "\n");
|
288: | if ($this->counter >= $this->dataLength) {
|
289: | return false;
|
290: | }
|
291: |
|
292: | continue;
|
293: | }
|
294: | } else {
|
295: | throw new Exception('Unexpected input at line' . $this->line .
|
296: | ': ' . $this->data[ $this->counter ]);
|
297: | }
|
298: | break;
|
299: | } while (true);
|
300: | }
|
301: |
|
302: | public function yy_r1_1()
|
303: | {
|
304: | $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
|
305: | $this->yypushstate(self::COMMENT);
|
306: | }
|
307: |
|
308: | public function yy_r1_2()
|
309: | {
|
310: | $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
|
311: | $this->yypushstate(self::SECTION);
|
312: | }
|
313: |
|
314: | public function yy_r1_3()
|
315: | {
|
316: | $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
|
317: | }
|
318: |
|
319: | public function yy_r1_4()
|
320: | {
|
321: | $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
|
322: | $this->yypushstate(self::VALUE);
|
323: | }
|
324: |
|
325: | public function yy_r1_5()
|
326: | {
|
327: | return false;
|
328: | }
|
329: |
|
330: | public function yy_r1_6()
|
331: | {
|
332: | $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
|
333: | }
|
334: |
|
335: | public function yy_r1_7()
|
336: | {
|
337: | $this->token = Smarty_Internal_Configfileparser::TPC_ID;
|
338: | }
|
339: |
|
340: | public function yy_r1_8()
|
341: | {
|
342: | $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
|
343: | }
|
344: |
|
345: | public function yylex2()
|
346: | {
|
347: | if (!isset($this->yy_global_pattern2)) {
|
348: | $this->yy_global_pattern2 =
|
349: | $this->replace("/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
|
350: | }
|
351: | if (!isset($this->dataLength)) {
|
352: | $this->dataLength = strlen($this->data);
|
353: | }
|
354: | if ($this->counter >= $this->dataLength) {
|
355: | return false;
|
356: | }
|
357: | do {
|
358: | if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, 0, $this->counter)) {
|
359: | if (!isset($yymatches[ 0 ][ 1 ])) {
|
360: | $yymatches = preg_grep("/(.|\s)+/", $yymatches);
|
361: | } else {
|
362: | $yymatches = array_filter($yymatches);
|
363: | }
|
364: | if (empty($yymatches)) {
|
365: | throw new Exception('Error: lexing failed because a rule matched' .
|
366: | ' an empty string. Input "' . substr(
|
367: | $this->data,
|
368: | $this->counter,
|
369: | 5
|
370: | ) . '... state VALUE');
|
371: | }
|
372: | next($yymatches);
|
373: | $this->token = key($yymatches);
|
374: | $this->value = current($yymatches);
|
375: | $r = $this->{'yy_r2_' . $this->token}();
|
376: | if ($r === null) {
|
377: | $this->counter += strlen($this->value);
|
378: | $this->line += substr_count($this->value, "\n");
|
379: |
|
380: | return true;
|
381: | } elseif ($r === true) {
|
382: |
|
383: |
|
384: | return $this->yylex();
|
385: | } elseif ($r === false) {
|
386: | $this->counter += strlen($this->value);
|
387: | $this->line += substr_count($this->value, "\n");
|
388: | if ($this->counter >= $this->dataLength) {
|
389: | return false;
|
390: | }
|
391: |
|
392: | continue;
|
393: | }
|
394: | } else {
|
395: | throw new Exception('Unexpected input at line' . $this->line .
|
396: | ': ' . $this->data[ $this->counter ]);
|
397: | }
|
398: | break;
|
399: | } while (true);
|
400: | }
|
401: |
|
402: | public function yy_r2_1()
|
403: | {
|
404: | return false;
|
405: | }
|
406: |
|
407: | public function yy_r2_2()
|
408: | {
|
409: | $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
|
410: | $this->yypopstate();
|
411: | }
|
412: |
|
413: | public function yy_r2_3()
|
414: | {
|
415: | $this->token = Smarty_Internal_Configfileparser::TPC_INT;
|
416: | $this->yypopstate();
|
417: | }
|
418: |
|
419: | public function yy_r2_4()
|
420: | {
|
421: | $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
|
422: | $this->yypushstate(self::TRIPPLE);
|
423: | }
|
424: |
|
425: | public function yy_r2_5()
|
426: | {
|
427: | $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
|
428: | $this->yypopstate();
|
429: | }
|
430: |
|
431: | public function yy_r2_6()
|
432: | {
|
433: | $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
|
434: | $this->yypopstate();
|
435: | }
|
436: |
|
437: | public function yy_r2_7()
|
438: | {
|
439: | if (!$this->configBooleanize ||
|
440: | !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no'))) {
|
441: | $this->yypopstate();
|
442: | $this->yypushstate(self::NAKED_STRING_VALUE);
|
443: | return true;
|
444: | } else {
|
445: | $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
|
446: | $this->yypopstate();
|
447: | }
|
448: | }
|
449: |
|
450: | public function yy_r2_8()
|
451: | {
|
452: | $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
|
453: | $this->yypopstate();
|
454: | }
|
455: |
|
456: | public function yy_r2_9()
|
457: | {
|
458: | $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
|
459: | $this->value = '';
|
460: | $this->yypopstate();
|
461: | }
|
462: |
|
463: | public function yylex3()
|
464: | {
|
465: | if (!isset($this->yy_global_pattern3)) {
|
466: | $this->yy_global_pattern3 = $this->replace("/\G([^\n]+?(?=[ \t\r]*\n))/isS");
|
467: | }
|
468: | if (!isset($this->dataLength)) {
|
469: | $this->dataLength = strlen($this->data);
|
470: | }
|
471: | if ($this->counter >= $this->dataLength) {
|
472: | return false;
|
473: | }
|
474: | do {
|
475: | if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, 0, $this->counter)) {
|
476: | if (!isset($yymatches[ 0 ][ 1 ])) {
|
477: | $yymatches = preg_grep("/(.|\s)+/", $yymatches);
|
478: | } else {
|
479: | $yymatches = array_filter($yymatches);
|
480: | }
|
481: | if (empty($yymatches)) {
|
482: | throw new Exception('Error: lexing failed because a rule matched' .
|
483: | ' an empty string. Input "' . substr(
|
484: | $this->data,
|
485: | $this->counter,
|
486: | 5
|
487: | ) . '... state NAKED_STRING_VALUE');
|
488: | }
|
489: | next($yymatches);
|
490: | $this->token = key($yymatches);
|
491: | $this->value = current($yymatches);
|
492: | $r = $this->{'yy_r3_' . $this->token}();
|
493: | if ($r === null) {
|
494: | $this->counter += strlen($this->value);
|
495: | $this->line += substr_count($this->value, "\n");
|
496: |
|
497: | return true;
|
498: | } elseif ($r === true) {
|
499: |
|
500: |
|
501: | return $this->yylex();
|
502: | } elseif ($r === false) {
|
503: | $this->counter += strlen($this->value);
|
504: | $this->line += substr_count($this->value, "\n");
|
505: | if ($this->counter >= $this->dataLength) {
|
506: | return false;
|
507: | }
|
508: |
|
509: | continue;
|
510: | }
|
511: | } else {
|
512: | throw new Exception('Unexpected input at line' . $this->line .
|
513: | ': ' . $this->data[ $this->counter ]);
|
514: | }
|
515: | break;
|
516: | } while (true);
|
517: | }
|
518: |
|
519: | public function yy_r3_1()
|
520: | {
|
521: | $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
|
522: | $this->yypopstate();
|
523: | }
|
524: |
|
525: | public function yylex4()
|
526: | {
|
527: | if (!isset($this->yy_global_pattern4)) {
|
528: | $this->yy_global_pattern4 = $this->replace("/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
|
529: | }
|
530: | if (!isset($this->dataLength)) {
|
531: | $this->dataLength = strlen($this->data);
|
532: | }
|
533: | if ($this->counter >= $this->dataLength) {
|
534: | return false;
|
535: | }
|
536: | do {
|
537: | if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, 0, $this->counter)) {
|
538: | if (!isset($yymatches[ 0 ][ 1 ])) {
|
539: | $yymatches = preg_grep("/(.|\s)+/", $yymatches);
|
540: | } else {
|
541: | $yymatches = array_filter($yymatches);
|
542: | }
|
543: | if (empty($yymatches)) {
|
544: | throw new Exception('Error: lexing failed because a rule matched' .
|
545: | ' an empty string. Input "' . substr(
|
546: | $this->data,
|
547: | $this->counter,
|
548: | 5
|
549: | ) . '... state COMMENT');
|
550: | }
|
551: | next($yymatches);
|
552: | $this->token = key($yymatches);
|
553: | $this->value = current($yymatches);
|
554: | $r = $this->{'yy_r4_' . $this->token}();
|
555: | if ($r === null) {
|
556: | $this->counter += strlen($this->value);
|
557: | $this->line += substr_count($this->value, "\n");
|
558: |
|
559: | return true;
|
560: | } elseif ($r === true) {
|
561: |
|
562: |
|
563: | return $this->yylex();
|
564: | } elseif ($r === false) {
|
565: | $this->counter += strlen($this->value);
|
566: | $this->line += substr_count($this->value, "\n");
|
567: | if ($this->counter >= $this->dataLength) {
|
568: | return false;
|
569: | }
|
570: |
|
571: | continue;
|
572: | }
|
573: | } else {
|
574: | throw new Exception('Unexpected input at line' . $this->line .
|
575: | ': ' . $this->data[ $this->counter ]);
|
576: | }
|
577: | break;
|
578: | } while (true);
|
579: | }
|
580: |
|
581: | public function yy_r4_1()
|
582: | {
|
583: | return false;
|
584: | }
|
585: |
|
586: | public function yy_r4_2()
|
587: | {
|
588: | $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
|
589: | }
|
590: |
|
591: | public function yy_r4_3()
|
592: | {
|
593: | $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
|
594: | $this->yypopstate();
|
595: | }
|
596: |
|
597: | public function yylex5()
|
598: | {
|
599: | if (!isset($this->yy_global_pattern5)) {
|
600: | $this->yy_global_pattern5 = $this->replace("/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS");
|
601: | }
|
602: | if (!isset($this->dataLength)) {
|
603: | $this->dataLength = strlen($this->data);
|
604: | }
|
605: | if ($this->counter >= $this->dataLength) {
|
606: | return false;
|
607: | }
|
608: | do {
|
609: | if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, 0, $this->counter)) {
|
610: | if (!isset($yymatches[ 0 ][ 1 ])) {
|
611: | $yymatches = preg_grep("/(.|\s)+/", $yymatches);
|
612: | } else {
|
613: | $yymatches = array_filter($yymatches);
|
614: | }
|
615: | if (empty($yymatches)) {
|
616: | throw new Exception('Error: lexing failed because a rule matched' .
|
617: | ' an empty string. Input "' . substr(
|
618: | $this->data,
|
619: | $this->counter,
|
620: | 5
|
621: | ) . '... state SECTION');
|
622: | }
|
623: | next($yymatches);
|
624: | $this->token = key($yymatches);
|
625: | $this->value = current($yymatches);
|
626: | $r = $this->{'yy_r5_' . $this->token}();
|
627: | if ($r === null) {
|
628: | $this->counter += strlen($this->value);
|
629: | $this->line += substr_count($this->value, "\n");
|
630: |
|
631: | return true;
|
632: | } elseif ($r === true) {
|
633: |
|
634: |
|
635: | return $this->yylex();
|
636: | } elseif ($r === false) {
|
637: | $this->counter += strlen($this->value);
|
638: | $this->line += substr_count($this->value, "\n");
|
639: | if ($this->counter >= $this->dataLength) {
|
640: | return false;
|
641: | }
|
642: |
|
643: | continue;
|
644: | }
|
645: | } else {
|
646: | throw new Exception('Unexpected input at line' . $this->line .
|
647: | ': ' . $this->data[ $this->counter ]);
|
648: | }
|
649: | break;
|
650: | } while (true);
|
651: | }
|
652: |
|
653: | public function yy_r5_1()
|
654: | {
|
655: | $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
|
656: | }
|
657: |
|
658: | public function yy_r5_2()
|
659: | {
|
660: | $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
|
661: | $this->yypopstate();
|
662: | }
|
663: |
|
664: | public function yylex6()
|
665: | {
|
666: | if (!isset($this->yy_global_pattern6)) {
|
667: | $this->yy_global_pattern6 = $this->replace("/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS");
|
668: | }
|
669: | if (!isset($this->dataLength)) {
|
670: | $this->dataLength = strlen($this->data);
|
671: | }
|
672: | if ($this->counter >= $this->dataLength) {
|
673: | return false;
|
674: | }
|
675: | do {
|
676: | if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, 0, $this->counter)) {
|
677: | if (!isset($yymatches[ 0 ][ 1 ])) {
|
678: | $yymatches = preg_grep("/(.|\s)+/", $yymatches);
|
679: | } else {
|
680: | $yymatches = array_filter($yymatches);
|
681: | }
|
682: | if (empty($yymatches)) {
|
683: | throw new Exception('Error: lexing failed because a rule matched' .
|
684: | ' an empty string. Input "' . substr(
|
685: | $this->data,
|
686: | $this->counter,
|
687: | 5
|
688: | ) . '... state TRIPPLE');
|
689: | }
|
690: | next($yymatches);
|
691: | $this->token = key($yymatches);
|
692: | $this->value = current($yymatches);
|
693: | $r = $this->{'yy_r6_' . $this->token}();
|
694: | if ($r === null) {
|
695: | $this->counter += strlen($this->value);
|
696: | $this->line += substr_count($this->value, "\n");
|
697: |
|
698: | return true;
|
699: | } elseif ($r === true) {
|
700: |
|
701: |
|
702: | return $this->yylex();
|
703: | } elseif ($r === false) {
|
704: | $this->counter += strlen($this->value);
|
705: | $this->line += substr_count($this->value, "\n");
|
706: | if ($this->counter >= $this->dataLength) {
|
707: | return false;
|
708: | }
|
709: |
|
710: | continue;
|
711: | }
|
712: | } else {
|
713: | throw new Exception('Unexpected input at line' . $this->line .
|
714: | ': ' . $this->data[ $this->counter ]);
|
715: | }
|
716: | break;
|
717: | } while (true);
|
718: | }
|
719: |
|
720: | public function yy_r6_1()
|
721: | {
|
722: | $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
|
723: | $this->yypopstate();
|
724: | $this->yypushstate(self::START);
|
725: | }
|
726: |
|
727: | public function yy_r6_2()
|
728: | {
|
729: | $to = strlen($this->data);
|
730: | preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
|
731: | if (isset($match[ 0 ][ 1 ])) {
|
732: | $to = $match[ 0 ][ 1 ];
|
733: | } else {
|
734: | $this->compiler->trigger_config_file_error('missing or misspelled literal closing tag');
|
735: | }
|
736: | $this->value = substr($this->data, $this->counter, $to - $this->counter);
|
737: | $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
|
738: | }
|
739: | }
|
740: | |