token_get_all_variation8.phpt 9.7 KB

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