token_get_all_variation15.phpt 8.8 KB

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