token_get_all_variation16.phpt 11 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  1. --TEST--
  2. Test token_get_all() function : usage variations - with function constructs
  3. --SKIPIF--
  4. <?php if (!extension_loaded("tokenizer")) print "skip"; ?>
  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. * Testing token_get_all() with different function keywords
  13. * function - T_FUNCTION(333), return - T_RETURN(335)
  14. * different functions:
  15. * include() - T_INCLUDE(262), print() - T_PRINT(266),
  16. * isset() - T_ISSET(349), list() - T_LIST(358),
  17. * require() - T_REQUIRE(259), empty() - T_EMPTY(350),
  18. * declare() - T_DECLARE(324), array() - T_ARRAY(359),
  19. * __halt_compiler() - T_HALT_COMPILER(351)
  20. */
  21. echo "*** Testing token_get_all() : with different function constructs ***\n";
  22. $source = '<?php
  23. declare(VALUE=100);
  24. include("addfile.php");
  25. require("sumfile.php");
  26. function myFunction($a)
  27. {
  28. if($a % 2)
  29. return 1;
  30. else
  31. exit;
  32. }
  33. $a = VALUE;
  34. $b = 20;
  35. $c = array(1,2);
  36. $b >>= 2;
  37. if($b <= 0)
  38. die;
  39. else
  40. print($b);
  41. list($value1,$value2) = $c;
  42. if(empty($value1) && !isset($value1)) {
  43. myFunction();
  44. }
  45. ?>';
  46. $tokens = token_get_all($source);
  47. var_dump($tokens);
  48. echo "Done";
  49. ?>
  50. --EXPECTF--
  51. *** Testing token_get_all() : with different function constructs ***
  52. array(142) {
  53. [0]=>
  54. array(3) {
  55. [0]=>
  56. int(%d)
  57. [1]=>
  58. string(6) "<?php
  59. "
  60. [2]=>
  61. int(1)
  62. }
  63. [1]=>
  64. array(3) {
  65. [0]=>
  66. int(%d)
  67. [1]=>
  68. string(7) "declare"
  69. [2]=>
  70. int(2)
  71. }
  72. [2]=>
  73. string(1) "("
  74. [3]=>
  75. array(3) {
  76. [0]=>
  77. int(%d)
  78. [1]=>
  79. string(5) "VALUE"
  80. [2]=>
  81. int(2)
  82. }
  83. [4]=>
  84. string(1) "="
  85. [5]=>
  86. array(3) {
  87. [0]=>
  88. int(%d)
  89. [1]=>
  90. string(3) "100"
  91. [2]=>
  92. int(2)
  93. }
  94. [6]=>
  95. string(1) ")"
  96. [7]=>
  97. string(1) ";"
  98. [8]=>
  99. array(3) {
  100. [0]=>
  101. int(%d)
  102. [1]=>
  103. string(1) "
  104. "
  105. [2]=>
  106. int(2)
  107. }
  108. [9]=>
  109. array(3) {
  110. [0]=>
  111. int(%d)
  112. [1]=>
  113. string(7) "include"
  114. [2]=>
  115. int(3)
  116. }
  117. [10]=>
  118. string(1) "("
  119. [11]=>
  120. array(3) {
  121. [0]=>
  122. int(%d)
  123. [1]=>
  124. string(13) ""addfile.php""
  125. [2]=>
  126. int(3)
  127. }
  128. [12]=>
  129. string(1) ")"
  130. [13]=>
  131. string(1) ";"
  132. [14]=>
  133. array(3) {
  134. [0]=>
  135. int(%d)
  136. [1]=>
  137. string(1) "
  138. "
  139. [2]=>
  140. int(3)
  141. }
  142. [15]=>
  143. array(3) {
  144. [0]=>
  145. int(%d)
  146. [1]=>
  147. string(7) "require"
  148. [2]=>
  149. int(4)
  150. }
  151. [16]=>
  152. string(1) "("
  153. [17]=>
  154. array(3) {
  155. [0]=>
  156. int(%d)
  157. [1]=>
  158. string(13) ""sumfile.php""
  159. [2]=>
  160. int(4)
  161. }
  162. [18]=>
  163. string(1) ")"
  164. [19]=>
  165. string(1) ";"
  166. [20]=>
  167. array(3) {
  168. [0]=>
  169. int(%d)
  170. [1]=>
  171. string(2) "
  172. "
  173. [2]=>
  174. int(4)
  175. }
  176. [21]=>
  177. array(3) {
  178. [0]=>
  179. int(%d)
  180. [1]=>
  181. string(8) "function"
  182. [2]=>
  183. int(6)
  184. }
  185. [22]=>
  186. array(3) {
  187. [0]=>
  188. int(%d)
  189. [1]=>
  190. string(1) " "
  191. [2]=>
  192. int(6)
  193. }
  194. [23]=>
  195. array(3) {
  196. [0]=>
  197. int(%d)
  198. [1]=>
  199. string(10) "myFunction"
  200. [2]=>
  201. int(6)
  202. }
  203. [24]=>
  204. string(1) "("
  205. [25]=>
  206. array(3) {
  207. [0]=>
  208. int(%d)
  209. [1]=>
  210. string(2) "$a"
  211. [2]=>
  212. int(6)
  213. }
  214. [26]=>
  215. string(1) ")"
  216. [27]=>
  217. array(3) {
  218. [0]=>
  219. int(%d)
  220. [1]=>
  221. string(1) "
  222. "
  223. [2]=>
  224. int(6)
  225. }
  226. [28]=>
  227. string(1) "{"
  228. [29]=>
  229. array(3) {
  230. [0]=>
  231. int(%d)
  232. [1]=>
  233. string(3) "
  234. "
  235. [2]=>
  236. int(7)
  237. }
  238. [30]=>
  239. array(3) {
  240. [0]=>
  241. int(%d)
  242. [1]=>
  243. string(2) "if"
  244. [2]=>
  245. int(8)
  246. }
  247. [31]=>
  248. string(1) "("
  249. [32]=>
  250. array(3) {
  251. [0]=>
  252. int(%d)
  253. [1]=>
  254. string(2) "$a"
  255. [2]=>
  256. int(8)
  257. }
  258. [33]=>
  259. array(3) {
  260. [0]=>
  261. int(%d)
  262. [1]=>
  263. string(1) " "
  264. [2]=>
  265. int(8)
  266. }
  267. [34]=>
  268. string(1) "%"
  269. [35]=>
  270. array(3) {
  271. [0]=>
  272. int(%d)
  273. [1]=>
  274. string(1) " "
  275. [2]=>
  276. int(8)
  277. }
  278. [36]=>
  279. array(3) {
  280. [0]=>
  281. int(%d)
  282. [1]=>
  283. string(1) "2"
  284. [2]=>
  285. int(8)
  286. }
  287. [37]=>
  288. string(1) ")"
  289. [38]=>
  290. array(3) {
  291. [0]=>
  292. int(%d)
  293. [1]=>
  294. string(5) "
  295. "
  296. [2]=>
  297. int(8)
  298. }
  299. [39]=>
  300. array(3) {
  301. [0]=>
  302. int(%d)
  303. [1]=>
  304. string(6) "return"
  305. [2]=>
  306. int(9)
  307. }
  308. [40]=>
  309. array(3) {
  310. [0]=>
  311. int(%d)
  312. [1]=>
  313. string(1) " "
  314. [2]=>
  315. int(9)
  316. }
  317. [41]=>
  318. array(3) {
  319. [0]=>
  320. int(%d)
  321. [1]=>
  322. string(1) "1"
  323. [2]=>
  324. int(9)
  325. }
  326. [42]=>
  327. string(1) ";"
  328. [43]=>
  329. array(3) {
  330. [0]=>
  331. int(%d)
  332. [1]=>
  333. string(3) "
  334. "
  335. [2]=>
  336. int(9)
  337. }
  338. [44]=>
  339. array(3) {
  340. [0]=>
  341. int(%d)
  342. [1]=>
  343. string(4) "else"
  344. [2]=>
  345. int(10)
  346. }
  347. [45]=>
  348. array(3) {
  349. [0]=>
  350. int(%d)
  351. [1]=>
  352. string(5) "
  353. "
  354. [2]=>
  355. int(10)
  356. }
  357. [46]=>
  358. array(3) {
  359. [0]=>
  360. int(%d)
  361. [1]=>
  362. string(4) "exit"
  363. [2]=>
  364. int(11)
  365. }
  366. [47]=>
  367. string(1) ";"
  368. [48]=>
  369. array(3) {
  370. [0]=>
  371. int(%d)
  372. [1]=>
  373. string(1) "
  374. "
  375. [2]=>
  376. int(11)
  377. }
  378. [49]=>
  379. string(1) "}"
  380. [50]=>
  381. array(3) {
  382. [0]=>
  383. int(%d)
  384. [1]=>
  385. string(2) "
  386. "
  387. [2]=>
  388. int(12)
  389. }
  390. [51]=>
  391. array(3) {
  392. [0]=>
  393. int(%d)
  394. [1]=>
  395. string(2) "$a"
  396. [2]=>
  397. int(14)
  398. }
  399. [52]=>
  400. array(3) {
  401. [0]=>
  402. int(%d)
  403. [1]=>
  404. string(1) " "
  405. [2]=>
  406. int(14)
  407. }
  408. [53]=>
  409. string(1) "="
  410. [54]=>
  411. array(3) {
  412. [0]=>
  413. int(%d)
  414. [1]=>
  415. string(1) " "
  416. [2]=>
  417. int(14)
  418. }
  419. [55]=>
  420. array(3) {
  421. [0]=>
  422. int(%d)
  423. [1]=>
  424. string(5) "VALUE"
  425. [2]=>
  426. int(14)
  427. }
  428. [56]=>
  429. string(1) ";"
  430. [57]=>
  431. array(3) {
  432. [0]=>
  433. int(%d)
  434. [1]=>
  435. string(1) "
  436. "
  437. [2]=>
  438. int(14)
  439. }
  440. [58]=>
  441. array(3) {
  442. [0]=>
  443. int(%d)
  444. [1]=>
  445. string(2) "$b"
  446. [2]=>
  447. int(15)
  448. }
  449. [59]=>
  450. array(3) {
  451. [0]=>
  452. int(%d)
  453. [1]=>
  454. string(1) " "
  455. [2]=>
  456. int(15)
  457. }
  458. [60]=>
  459. string(1) "="
  460. [61]=>
  461. array(3) {
  462. [0]=>
  463. int(%d)
  464. [1]=>
  465. string(1) " "
  466. [2]=>
  467. int(15)
  468. }
  469. [62]=>
  470. array(3) {
  471. [0]=>
  472. int(%d)
  473. [1]=>
  474. string(2) "20"
  475. [2]=>
  476. int(15)
  477. }
  478. [63]=>
  479. string(1) ";"
  480. [64]=>
  481. array(3) {
  482. [0]=>
  483. int(%d)
  484. [1]=>
  485. string(1) "
  486. "
  487. [2]=>
  488. int(15)
  489. }
  490. [65]=>
  491. array(3) {
  492. [0]=>
  493. int(%d)
  494. [1]=>
  495. string(2) "$c"
  496. [2]=>
  497. int(16)
  498. }
  499. [66]=>
  500. array(3) {
  501. [0]=>
  502. int(%d)
  503. [1]=>
  504. string(1) " "
  505. [2]=>
  506. int(16)
  507. }
  508. [67]=>
  509. string(1) "="
  510. [68]=>
  511. array(3) {
  512. [0]=>
  513. int(%d)
  514. [1]=>
  515. string(1) " "
  516. [2]=>
  517. int(16)
  518. }
  519. [69]=>
  520. array(3) {
  521. [0]=>
  522. int(%d)
  523. [1]=>
  524. string(5) "array"
  525. [2]=>
  526. int(16)
  527. }
  528. [70]=>
  529. string(1) "("
  530. [71]=>
  531. array(3) {
  532. [0]=>
  533. int(%d)
  534. [1]=>
  535. string(1) "1"
  536. [2]=>
  537. int(16)
  538. }
  539. [72]=>
  540. string(1) ","
  541. [73]=>
  542. array(3) {
  543. [0]=>
  544. int(%d)
  545. [1]=>
  546. string(1) "2"
  547. [2]=>
  548. int(16)
  549. }
  550. [74]=>
  551. string(1) ")"
  552. [75]=>
  553. string(1) ";"
  554. [76]=>
  555. array(3) {
  556. [0]=>
  557. int(%d)
  558. [1]=>
  559. string(1) "
  560. "
  561. [2]=>
  562. int(16)
  563. }
  564. [77]=>
  565. array(3) {
  566. [0]=>
  567. int(%d)
  568. [1]=>
  569. string(2) "$b"
  570. [2]=>
  571. int(17)
  572. }
  573. [78]=>
  574. array(3) {
  575. [0]=>
  576. int(%d)
  577. [1]=>
  578. string(1) " "
  579. [2]=>
  580. int(17)
  581. }
  582. [79]=>
  583. array(3) {
  584. [0]=>
  585. int(%d)
  586. [1]=>
  587. string(3) ">>="
  588. [2]=>
  589. int(17)
  590. }
  591. [80]=>
  592. array(3) {
  593. [0]=>
  594. int(%d)
  595. [1]=>
  596. string(1) " "
  597. [2]=>
  598. int(17)
  599. }
  600. [81]=>
  601. array(3) {
  602. [0]=>
  603. int(%d)
  604. [1]=>
  605. string(1) "2"
  606. [2]=>
  607. int(17)
  608. }
  609. [82]=>
  610. string(1) ";"
  611. [83]=>
  612. array(3) {
  613. [0]=>
  614. int(%d)
  615. [1]=>
  616. string(2) "
  617. "
  618. [2]=>
  619. int(17)
  620. }
  621. [84]=>
  622. array(3) {
  623. [0]=>
  624. int(%d)
  625. [1]=>
  626. string(2) "if"
  627. [2]=>
  628. int(19)
  629. }
  630. [85]=>
  631. string(1) "("
  632. [86]=>
  633. array(3) {
  634. [0]=>
  635. int(%d)
  636. [1]=>
  637. string(2) "$b"
  638. [2]=>
  639. int(19)
  640. }
  641. [87]=>
  642. array(3) {
  643. [0]=>
  644. int(%d)
  645. [1]=>
  646. string(1) " "
  647. [2]=>
  648. int(19)
  649. }
  650. [88]=>
  651. array(3) {
  652. [0]=>
  653. int(%d)
  654. [1]=>
  655. string(2) "<="
  656. [2]=>
  657. int(19)
  658. }
  659. [89]=>
  660. array(3) {
  661. [0]=>
  662. int(%d)
  663. [1]=>
  664. string(1) " "
  665. [2]=>
  666. int(19)
  667. }
  668. [90]=>
  669. array(3) {
  670. [0]=>
  671. int(%d)
  672. [1]=>
  673. string(1) "0"
  674. [2]=>
  675. int(19)
  676. }
  677. [91]=>
  678. string(1) ")"
  679. [92]=>
  680. array(3) {
  681. [0]=>
  682. int(%d)
  683. [1]=>
  684. string(3) "
  685. "
  686. [2]=>
  687. int(19)
  688. }
  689. [93]=>
  690. array(3) {
  691. [0]=>
  692. int(%d)
  693. [1]=>
  694. string(3) "die"
  695. [2]=>
  696. int(20)
  697. }
  698. [94]=>
  699. string(1) ";"
  700. [95]=>
  701. array(3) {
  702. [0]=>
  703. int(%d)
  704. [1]=>
  705. string(1) "
  706. "
  707. [2]=>
  708. int(20)
  709. }
  710. [96]=>
  711. array(3) {
  712. [0]=>
  713. int(%d)
  714. [1]=>
  715. string(4) "else"
  716. [2]=>
  717. int(21)
  718. }
  719. [97]=>
  720. array(3) {
  721. [0]=>
  722. int(%d)
  723. [1]=>
  724. string(3) "
  725. "
  726. [2]=>
  727. int(21)
  728. }
  729. [98]=>
  730. array(3) {
  731. [0]=>
  732. int(%d)
  733. [1]=>
  734. string(5) "print"
  735. [2]=>
  736. int(22)
  737. }
  738. [99]=>
  739. string(1) "("
  740. [100]=>
  741. array(3) {
  742. [0]=>
  743. int(%d)
  744. [1]=>
  745. string(2) "$b"
  746. [2]=>
  747. int(22)
  748. }
  749. [101]=>
  750. string(1) ")"
  751. [102]=>
  752. string(1) ";"
  753. [103]=>
  754. array(3) {
  755. [0]=>
  756. int(%d)
  757. [1]=>
  758. string(2) "
  759. "
  760. [2]=>
  761. int(22)
  762. }
  763. [104]=>
  764. array(3) {
  765. [0]=>
  766. int(%d)
  767. [1]=>
  768. string(4) "list"
  769. [2]=>
  770. int(24)
  771. }
  772. [105]=>
  773. string(1) "("
  774. [106]=>
  775. array(3) {
  776. [0]=>
  777. int(%d)
  778. [1]=>
  779. string(7) "$value1"
  780. [2]=>
  781. int(24)
  782. }
  783. [107]=>
  784. string(1) ","
  785. [108]=>
  786. array(3) {
  787. [0]=>
  788. int(%d)
  789. [1]=>
  790. string(7) "$value2"
  791. [2]=>
  792. int(24)
  793. }
  794. [109]=>
  795. string(1) ")"
  796. [110]=>
  797. array(3) {
  798. [0]=>
  799. int(%d)
  800. [1]=>
  801. string(1) " "
  802. [2]=>
  803. int(24)
  804. }
  805. [111]=>
  806. string(1) "="
  807. [112]=>
  808. array(3) {
  809. [0]=>
  810. int(%d)
  811. [1]=>
  812. string(1) " "
  813. [2]=>
  814. int(24)
  815. }
  816. [113]=>
  817. array(3) {
  818. [0]=>
  819. int(%d)
  820. [1]=>
  821. string(2) "$c"
  822. [2]=>
  823. int(24)
  824. }
  825. [114]=>
  826. string(1) ";"
  827. [115]=>
  828. array(3) {
  829. [0]=>
  830. int(%d)
  831. [1]=>
  832. string(1) "
  833. "
  834. [2]=>
  835. int(24)
  836. }
  837. [116]=>
  838. array(3) {
  839. [0]=>
  840. int(%d)
  841. [1]=>
  842. string(2) "if"
  843. [2]=>
  844. int(25)
  845. }
  846. [117]=>
  847. string(1) "("
  848. [118]=>
  849. array(3) {
  850. [0]=>
  851. int(%d)
  852. [1]=>
  853. string(5) "empty"
  854. [2]=>
  855. int(25)
  856. }
  857. [119]=>
  858. string(1) "("
  859. [120]=>
  860. array(3) {
  861. [0]=>
  862. int(%d)
  863. [1]=>
  864. string(7) "$value1"
  865. [2]=>
  866. int(25)
  867. }
  868. [121]=>
  869. string(1) ")"
  870. [122]=>
  871. array(3) {
  872. [0]=>
  873. int(%d)
  874. [1]=>
  875. string(1) " "
  876. [2]=>
  877. int(25)
  878. }
  879. [123]=>
  880. array(3) {
  881. [0]=>
  882. int(%d)
  883. [1]=>
  884. string(2) "&&"
  885. [2]=>
  886. int(25)
  887. }
  888. [124]=>
  889. array(3) {
  890. [0]=>
  891. int(%d)
  892. [1]=>
  893. string(1) " "
  894. [2]=>
  895. int(25)
  896. }
  897. [125]=>
  898. string(1) "!"
  899. [126]=>
  900. array(3) {
  901. [0]=>
  902. int(%d)
  903. [1]=>
  904. string(5) "isset"
  905. [2]=>
  906. int(25)
  907. }
  908. [127]=>
  909. string(1) "("
  910. [128]=>
  911. array(3) {
  912. [0]=>
  913. int(%d)
  914. [1]=>
  915. string(7) "$value1"
  916. [2]=>
  917. int(25)
  918. }
  919. [129]=>
  920. string(1) ")"
  921. [130]=>
  922. string(1) ")"
  923. [131]=>
  924. array(3) {
  925. [0]=>
  926. int(%d)
  927. [1]=>
  928. string(1) " "
  929. [2]=>
  930. int(25)
  931. }
  932. [132]=>
  933. string(1) "{"
  934. [133]=>
  935. array(3) {
  936. [0]=>
  937. int(%d)
  938. [1]=>
  939. string(3) "
  940. "
  941. [2]=>
  942. int(25)
  943. }
  944. [134]=>
  945. array(3) {
  946. [0]=>
  947. int(%d)
  948. [1]=>
  949. string(10) "myFunction"
  950. [2]=>
  951. int(26)
  952. }
  953. [135]=>
  954. string(1) "("
  955. [136]=>
  956. string(1) ")"
  957. [137]=>
  958. string(1) ";"
  959. [138]=>
  960. array(3) {
  961. [0]=>
  962. int(%d)
  963. [1]=>
  964. string(1) "
  965. "
  966. [2]=>
  967. int(26)
  968. }
  969. [139]=>
  970. string(1) "}"
  971. [140]=>
  972. array(3) {
  973. [0]=>
  974. int(%d)
  975. [1]=>
  976. string(1) "
  977. "
  978. [2]=>
  979. int(27)
  980. }
  981. [141]=>
  982. array(3) {
  983. [0]=>
  984. int(%d)
  985. [1]=>
  986. string(2) "?>"
  987. [2]=>
  988. int(28)
  989. }
  990. }
  991. Done