1--TEST--
2Test token_get_all() function : usage variations - heredoc string for 'source'
3--INI--
4short_open_tag=On
5--FILE--
6<?php
7/* Prototype  : array token_get_all(string $source)
8 * Description: splits the given source into an array of PHP languange tokens
9 * Source code: ext/tokenizer/tokenizer.c
10*/
11
12/*
13 * Testing token_get_all() with heredoc 'source' string with all different types of token and heredoc string within
14 *     <<<EOT - T_START_HEREDOC(371)
15 *     EOT - T_END_HEREDOC(372)
16*/
17
18echo "*** Testing token_get_all() : with heredoc source string ***\n";
19
20$source = <<<EOT
21<?=
22  \$a = 2;
23  \$b = 1;
24  \$c = <<<EOS
25  This is to test
26  heredoc string
27EOS;
28  echo \$a + \$b;
29  function myFunction(\$a)
30  {
31    var_dump(\$a);
32  }
33  if(\$b < 10) {
34    \$b++;
35  }
36  else
37    \$b--;
38  while(\$a > 0) {
39    echo "*";
40    \$a--;
41  }
42  myFunction(10);
43?>
44EOT;
45var_dump( token_get_all($source));
46
47echo "Done"
48?>
49--EXPECTF--
50*** Testing token_get_all() : with heredoc source string ***
51array(103) {
52  [0]=>
53  array(3) {
54    [0]=>
55    int(369)
56    [1]=>
57    string(3) "<?="
58    [2]=>
59    int(1)
60  }
61  [1]=>
62  array(3) {
63    [0]=>
64    int(371)
65    [1]=>
66    string(4) "
67  "
68    [2]=>
69    int(1)
70  }
71  [2]=>
72  array(3) {
73    [0]=>
74    int(309)
75    [1]=>
76    string(2) "$a"
77    [2]=>
78    int(2)
79  }
80  [3]=>
81  array(3) {
82    [0]=>
83    int(371)
84    [1]=>
85    string(1) " "
86    [2]=>
87    int(2)
88  }
89  [4]=>
90  string(1) "="
91  [5]=>
92  array(3) {
93    [0]=>
94    int(371)
95    [1]=>
96    string(1) " "
97    [2]=>
98    int(2)
99  }
100  [6]=>
101  array(3) {
102    [0]=>
103    int(305)
104    [1]=>
105    string(1) "2"
106    [2]=>
107    int(2)
108  }
109  [7]=>
110  string(1) ";"
111  [8]=>
112  array(3) {
113    [0]=>
114    int(371)
115    [1]=>
116    string(3) "
117  "
118    [2]=>
119    int(2)
120  }
121  [9]=>
122  array(3) {
123    [0]=>
124    int(309)
125    [1]=>
126    string(2) "$b"
127    [2]=>
128    int(3)
129  }
130  [10]=>
131  array(3) {
132    [0]=>
133    int(371)
134    [1]=>
135    string(1) " "
136    [2]=>
137    int(3)
138  }
139  [11]=>
140  string(1) "="
141  [12]=>
142  array(3) {
143    [0]=>
144    int(371)
145    [1]=>
146    string(1) " "
147    [2]=>
148    int(3)
149  }
150  [13]=>
151  array(3) {
152    [0]=>
153    int(305)
154    [1]=>
155    string(1) "1"
156    [2]=>
157    int(3)
158  }
159  [14]=>
160  string(1) ";"
161  [15]=>
162  array(3) {
163    [0]=>
164    int(371)
165    [1]=>
166    string(3) "
167  "
168    [2]=>
169    int(3)
170  }
171  [16]=>
172  array(3) {
173    [0]=>
174    int(309)
175    [1]=>
176    string(2) "$c"
177    [2]=>
178    int(4)
179  }
180  [17]=>
181  array(3) {
182    [0]=>
183    int(371)
184    [1]=>
185    string(1) " "
186    [2]=>
187    int(4)
188  }
189  [18]=>
190  string(1) "="
191  [19]=>
192  array(3) {
193    [0]=>
194    int(371)
195    [1]=>
196    string(1) " "
197    [2]=>
198    int(4)
199  }
200  [20]=>
201  array(3) {
202    [0]=>
203    int(372)
204    [1]=>
205    string(7) "<<<EOS
206"
207    [2]=>
208    int(4)
209  }
210  [21]=>
211  array(3) {
212    [0]=>
213    int(314)
214    [1]=>
215    string(36) "  This is to test
216  heredoc string
217"
218    [2]=>
219    int(5)
220  }
221  [22]=>
222  array(3) {
223    [0]=>
224    int(373)
225    [1]=>
226    string(3) "EOS"
227    [2]=>
228    int(7)
229  }
230  [23]=>
231  string(1) ";"
232  [24]=>
233  array(3) {
234    [0]=>
235    int(371)
236    [1]=>
237    string(3) "
238  "
239    [2]=>
240    int(7)
241  }
242  [25]=>
243  array(3) {
244    [0]=>
245    int(316)
246    [1]=>
247    string(4) "echo"
248    [2]=>
249    int(8)
250  }
251  [26]=>
252  array(3) {
253    [0]=>
254    int(371)
255    [1]=>
256    string(1) " "
257    [2]=>
258    int(8)
259  }
260  [27]=>
261  array(3) {
262    [0]=>
263    int(309)
264    [1]=>
265    string(2) "$a"
266    [2]=>
267    int(8)
268  }
269  [28]=>
270  array(3) {
271    [0]=>
272    int(371)
273    [1]=>
274    string(1) " "
275    [2]=>
276    int(8)
277  }
278  [29]=>
279  string(1) "+"
280  [30]=>
281  array(3) {
282    [0]=>
283    int(371)
284    [1]=>
285    string(1) " "
286    [2]=>
287    int(8)
288  }
289  [31]=>
290  array(3) {
291    [0]=>
292    int(309)
293    [1]=>
294    string(2) "$b"
295    [2]=>
296    int(8)
297  }
298  [32]=>
299  string(1) ";"
300  [33]=>
301  array(3) {
302    [0]=>
303    int(371)
304    [1]=>
305    string(3) "
306  "
307    [2]=>
308    int(8)
309  }
310  [34]=>
311  array(3) {
312    [0]=>
313    int(334)
314    [1]=>
315    string(8) "function"
316    [2]=>
317    int(9)
318  }
319  [35]=>
320  array(3) {
321    [0]=>
322    int(371)
323    [1]=>
324    string(1) " "
325    [2]=>
326    int(9)
327  }
328  [36]=>
329  array(3) {
330    [0]=>
331    int(307)
332    [1]=>
333    string(10) "myFunction"
334    [2]=>
335    int(9)
336  }
337  [37]=>
338  string(1) "("
339  [38]=>
340  array(3) {
341    [0]=>
342    int(309)
343    [1]=>
344    string(2) "$a"
345    [2]=>
346    int(9)
347  }
348  [39]=>
349  string(1) ")"
350  [40]=>
351  array(3) {
352    [0]=>
353    int(371)
354    [1]=>
355    string(3) "
356  "
357    [2]=>
358    int(9)
359  }
360  [41]=>
361  string(1) "{"
362  [42]=>
363  array(3) {
364    [0]=>
365    int(371)
366    [1]=>
367    string(5) "
368    "
369    [2]=>
370    int(10)
371  }
372  [43]=>
373  array(3) {
374    [0]=>
375    int(307)
376    [1]=>
377    string(8) "var_dump"
378    [2]=>
379    int(11)
380  }
381  [44]=>
382  string(1) "("
383  [45]=>
384  array(3) {
385    [0]=>
386    int(309)
387    [1]=>
388    string(2) "$a"
389    [2]=>
390    int(11)
391  }
392  [46]=>
393  string(1) ")"
394  [47]=>
395  string(1) ";"
396  [48]=>
397  array(3) {
398    [0]=>
399    int(371)
400    [1]=>
401    string(3) "
402  "
403    [2]=>
404    int(11)
405  }
406  [49]=>
407  string(1) "}"
408  [50]=>
409  array(3) {
410    [0]=>
411    int(371)
412    [1]=>
413    string(3) "
414  "
415    [2]=>
416    int(12)
417  }
418  [51]=>
419  array(3) {
420    [0]=>
421    int(301)
422    [1]=>
423    string(2) "if"
424    [2]=>
425    int(13)
426  }
427  [52]=>
428  string(1) "("
429  [53]=>
430  array(3) {
431    [0]=>
432    int(309)
433    [1]=>
434    string(2) "$b"
435    [2]=>
436    int(13)
437  }
438  [54]=>
439  array(3) {
440    [0]=>
441    int(371)
442    [1]=>
443    string(1) " "
444    [2]=>
445    int(13)
446  }
447  [55]=>
448  string(1) "<"
449  [56]=>
450  array(3) {
451    [0]=>
452    int(371)
453    [1]=>
454    string(1) " "
455    [2]=>
456    int(13)
457  }
458  [57]=>
459  array(3) {
460    [0]=>
461    int(305)
462    [1]=>
463    string(2) "10"
464    [2]=>
465    int(13)
466  }
467  [58]=>
468  string(1) ")"
469  [59]=>
470  array(3) {
471    [0]=>
472    int(371)
473    [1]=>
474    string(1) " "
475    [2]=>
476    int(13)
477  }
478  [60]=>
479  string(1) "{"
480  [61]=>
481  array(3) {
482    [0]=>
483    int(371)
484    [1]=>
485    string(5) "
486    "
487    [2]=>
488    int(13)
489  }
490  [62]=>
491  array(3) {
492    [0]=>
493    int(309)
494    [1]=>
495    string(2) "$b"
496    [2]=>
497    int(14)
498  }
499  [63]=>
500  array(3) {
501    [0]=>
502    int(297)
503    [1]=>
504    string(2) "++"
505    [2]=>
506    int(14)
507  }
508  [64]=>
509  string(1) ";"
510  [65]=>
511  array(3) {
512    [0]=>
513    int(371)
514    [1]=>
515    string(3) "
516  "
517    [2]=>
518    int(14)
519  }
520  [66]=>
521  string(1) "}"
522  [67]=>
523  array(3) {
524    [0]=>
525    int(371)
526    [1]=>
527    string(3) "
528  "
529    [2]=>
530    int(15)
531  }
532  [68]=>
533  array(3) {
534    [0]=>
535    int(303)
536    [1]=>
537    string(4) "else"
538    [2]=>
539    int(16)
540  }
541  [69]=>
542  array(3) {
543    [0]=>
544    int(371)
545    [1]=>
546    string(5) "
547    "
548    [2]=>
549    int(16)
550  }
551  [70]=>
552  array(3) {
553    [0]=>
554    int(309)
555    [1]=>
556    string(2) "$b"
557    [2]=>
558    int(17)
559  }
560  [71]=>
561  array(3) {
562    [0]=>
563    int(296)
564    [1]=>
565    string(2) "--"
566    [2]=>
567    int(17)
568  }
569  [72]=>
570  string(1) ";"
571  [73]=>
572  array(3) {
573    [0]=>
574    int(371)
575    [1]=>
576    string(3) "
577  "
578    [2]=>
579    int(17)
580  }
581  [74]=>
582  array(3) {
583    [0]=>
584    int(318)
585    [1]=>
586    string(5) "while"
587    [2]=>
588    int(18)
589  }
590  [75]=>
591  string(1) "("
592  [76]=>
593  array(3) {
594    [0]=>
595    int(309)
596    [1]=>
597    string(2) "$a"
598    [2]=>
599    int(18)
600  }
601  [77]=>
602  array(3) {
603    [0]=>
604    int(371)
605    [1]=>
606    string(1) " "
607    [2]=>
608    int(18)
609  }
610  [78]=>
611  string(1) ">"
612  [79]=>
613  array(3) {
614    [0]=>
615    int(371)
616    [1]=>
617    string(1) " "
618    [2]=>
619    int(18)
620  }
621  [80]=>
622  array(3) {
623    [0]=>
624    int(305)
625    [1]=>
626    string(1) "0"
627    [2]=>
628    int(18)
629  }
630  [81]=>
631  string(1) ")"
632  [82]=>
633  array(3) {
634    [0]=>
635    int(371)
636    [1]=>
637    string(1) " "
638    [2]=>
639    int(18)
640  }
641  [83]=>
642  string(1) "{"
643  [84]=>
644  array(3) {
645    [0]=>
646    int(371)
647    [1]=>
648    string(5) "
649    "
650    [2]=>
651    int(18)
652  }
653  [85]=>
654  array(3) {
655    [0]=>
656    int(316)
657    [1]=>
658    string(4) "echo"
659    [2]=>
660    int(19)
661  }
662  [86]=>
663  array(3) {
664    [0]=>
665    int(371)
666    [1]=>
667    string(1) " "
668    [2]=>
669    int(19)
670  }
671  [87]=>
672  array(3) {
673    [0]=>
674    int(315)
675    [1]=>
676    string(3) ""*""
677    [2]=>
678    int(19)
679  }
680  [88]=>
681  string(1) ";"
682  [89]=>
683  array(3) {
684    [0]=>
685    int(371)
686    [1]=>
687    string(5) "
688    "
689    [2]=>
690    int(19)
691  }
692  [90]=>
693  array(3) {
694    [0]=>
695    int(309)
696    [1]=>
697    string(2) "$a"
698    [2]=>
699    int(20)
700  }
701  [91]=>
702  array(3) {
703    [0]=>
704    int(296)
705    [1]=>
706    string(2) "--"
707    [2]=>
708    int(20)
709  }
710  [92]=>
711  string(1) ";"
712  [93]=>
713  array(3) {
714    [0]=>
715    int(371)
716    [1]=>
717    string(3) "
718  "
719    [2]=>
720    int(20)
721  }
722  [94]=>
723  string(1) "}"
724  [95]=>
725  array(3) {
726    [0]=>
727    int(371)
728    [1]=>
729    string(3) "
730  "
731    [2]=>
732    int(21)
733  }
734  [96]=>
735  array(3) {
736    [0]=>
737    int(307)
738    [1]=>
739    string(10) "myFunction"
740    [2]=>
741    int(22)
742  }
743  [97]=>
744  string(1) "("
745  [98]=>
746  array(3) {
747    [0]=>
748    int(305)
749    [1]=>
750    string(2) "10"
751    [2]=>
752    int(22)
753  }
754  [99]=>
755  string(1) ")"
756  [100]=>
757  string(1) ";"
758  [101]=>
759  array(3) {
760    [0]=>
761    int(371)
762    [1]=>
763    string(1) "
764"
765    [2]=>
766    int(22)
767  }
768  [102]=>
769  array(3) {
770    [0]=>
771    int(370)
772    [1]=>
773    string(2) "?>"
774    [2]=>
775    int(23)
776  }
777}
778Done
779