菜谱项目

constant_expr.test 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. Expressions in static scalar context
  2. -----
  3. <?php
  4. const T_1 = 1 << 1;
  5. const T_2 = 1 / 2;
  6. const T_3 = 1.5 + 1.5;
  7. const T_4 = "foo" . "bar";
  8. const T_5 = (1.5 + 1.5) * 2;
  9. const T_6 = "foo" . 2 . 3 . 4.0;
  10. const T_7 = __LINE__;
  11. const T_8 = <<<ENDOFSTRING
  12. This is a test string
  13. ENDOFSTRING;
  14. const T_9 = ~-1;
  15. const T_10 = (-1?:1) + (0?2:3);
  16. const T_11 = 1 && 0;
  17. const T_12 = 1 and 1;
  18. const T_13 = 0 || 0;
  19. const T_14 = 1 or 0;
  20. const T_15 = 1 xor 1;
  21. const T_16 = 1 xor 0;
  22. const T_17 = 1 < 0;
  23. const T_18 = 0 <= 0;
  24. const T_19 = 1 > 0;
  25. const T_20 = 1 >= 0;
  26. const T_21 = 1 === 1;
  27. const T_22 = 1 !== 1;
  28. const T_23 = 0 != "0";
  29. const T_24 = 1 == "1";
  30. const T_25 = 1 + 2 * 3;
  31. const T_26 = "1" + 2 + "3";
  32. const T_27 = 2 ** 3;
  33. const T_28 = [1, 2, 3][1];
  34. const T_29 = 12 - 13;
  35. const T_30 = 12 ^ 13;
  36. const T_31 = 12 & 13;
  37. const T_32 = 12 | 13;
  38. const T_33 = 12 % 3;
  39. const T_34 = 100 >> 4;
  40. const T_35 = !false;
  41. -----
  42. array(
  43. 0: Stmt_Const(
  44. consts: array(
  45. 0: Const(
  46. name: T_1
  47. value: Expr_BinaryOp_ShiftLeft(
  48. left: Scalar_LNumber(
  49. value: 1
  50. )
  51. right: Scalar_LNumber(
  52. value: 1
  53. )
  54. )
  55. )
  56. )
  57. )
  58. 1: Stmt_Const(
  59. consts: array(
  60. 0: Const(
  61. name: T_2
  62. value: Expr_BinaryOp_Div(
  63. left: Scalar_LNumber(
  64. value: 1
  65. )
  66. right: Scalar_LNumber(
  67. value: 2
  68. )
  69. )
  70. )
  71. )
  72. )
  73. 2: Stmt_Const(
  74. consts: array(
  75. 0: Const(
  76. name: T_3
  77. value: Expr_BinaryOp_Plus(
  78. left: Scalar_DNumber(
  79. value: 1.5
  80. )
  81. right: Scalar_DNumber(
  82. value: 1.5
  83. )
  84. )
  85. )
  86. )
  87. )
  88. 3: Stmt_Const(
  89. consts: array(
  90. 0: Const(
  91. name: T_4
  92. value: Expr_BinaryOp_Concat(
  93. left: Scalar_String(
  94. value: foo
  95. )
  96. right: Scalar_String(
  97. value: bar
  98. )
  99. )
  100. )
  101. )
  102. )
  103. 4: Stmt_Const(
  104. consts: array(
  105. 0: Const(
  106. name: T_5
  107. value: Expr_BinaryOp_Mul(
  108. left: Expr_BinaryOp_Plus(
  109. left: Scalar_DNumber(
  110. value: 1.5
  111. )
  112. right: Scalar_DNumber(
  113. value: 1.5
  114. )
  115. )
  116. right: Scalar_LNumber(
  117. value: 2
  118. )
  119. )
  120. )
  121. )
  122. )
  123. 5: Stmt_Const(
  124. consts: array(
  125. 0: Const(
  126. name: T_6
  127. value: Expr_BinaryOp_Concat(
  128. left: Expr_BinaryOp_Concat(
  129. left: Expr_BinaryOp_Concat(
  130. left: Scalar_String(
  131. value: foo
  132. )
  133. right: Scalar_LNumber(
  134. value: 2
  135. )
  136. )
  137. right: Scalar_LNumber(
  138. value: 3
  139. )
  140. )
  141. right: Scalar_DNumber(
  142. value: 4
  143. )
  144. )
  145. )
  146. )
  147. )
  148. 6: Stmt_Const(
  149. consts: array(
  150. 0: Const(
  151. name: T_7
  152. value: Scalar_MagicConst_Line(
  153. )
  154. )
  155. )
  156. )
  157. 7: Stmt_Const(
  158. consts: array(
  159. 0: Const(
  160. name: T_8
  161. value: Scalar_String(
  162. value: This is a test string
  163. )
  164. )
  165. )
  166. )
  167. 8: Stmt_Const(
  168. consts: array(
  169. 0: Const(
  170. name: T_9
  171. value: Expr_BitwiseNot(
  172. expr: Expr_UnaryMinus(
  173. expr: Scalar_LNumber(
  174. value: 1
  175. )
  176. )
  177. )
  178. )
  179. )
  180. )
  181. 9: Stmt_Const(
  182. consts: array(
  183. 0: Const(
  184. name: T_10
  185. value: Expr_BinaryOp_Plus(
  186. left: Expr_Ternary(
  187. cond: Expr_UnaryMinus(
  188. expr: Scalar_LNumber(
  189. value: 1
  190. )
  191. )
  192. if: null
  193. else: Scalar_LNumber(
  194. value: 1
  195. )
  196. )
  197. right: Expr_Ternary(
  198. cond: Scalar_LNumber(
  199. value: 0
  200. )
  201. if: Scalar_LNumber(
  202. value: 2
  203. )
  204. else: Scalar_LNumber(
  205. value: 3
  206. )
  207. )
  208. )
  209. )
  210. )
  211. )
  212. 10: Stmt_Const(
  213. consts: array(
  214. 0: Const(
  215. name: T_11
  216. value: Expr_BinaryOp_BooleanAnd(
  217. left: Scalar_LNumber(
  218. value: 1
  219. )
  220. right: Scalar_LNumber(
  221. value: 0
  222. )
  223. )
  224. )
  225. )
  226. )
  227. 11: Stmt_Const(
  228. consts: array(
  229. 0: Const(
  230. name: T_12
  231. value: Expr_BinaryOp_LogicalAnd(
  232. left: Scalar_LNumber(
  233. value: 1
  234. )
  235. right: Scalar_LNumber(
  236. value: 1
  237. )
  238. )
  239. )
  240. )
  241. )
  242. 12: Stmt_Const(
  243. consts: array(
  244. 0: Const(
  245. name: T_13
  246. value: Expr_BinaryOp_BooleanOr(
  247. left: Scalar_LNumber(
  248. value: 0
  249. )
  250. right: Scalar_LNumber(
  251. value: 0
  252. )
  253. )
  254. )
  255. )
  256. )
  257. 13: Stmt_Const(
  258. consts: array(
  259. 0: Const(
  260. name: T_14
  261. value: Expr_BinaryOp_LogicalOr(
  262. left: Scalar_LNumber(
  263. value: 1
  264. )
  265. right: Scalar_LNumber(
  266. value: 0
  267. )
  268. )
  269. )
  270. )
  271. )
  272. 14: Stmt_Const(
  273. consts: array(
  274. 0: Const(
  275. name: T_15
  276. value: Expr_BinaryOp_LogicalXor(
  277. left: Scalar_LNumber(
  278. value: 1
  279. )
  280. right: Scalar_LNumber(
  281. value: 1
  282. )
  283. )
  284. )
  285. )
  286. )
  287. 15: Stmt_Const(
  288. consts: array(
  289. 0: Const(
  290. name: T_16
  291. value: Expr_BinaryOp_LogicalXor(
  292. left: Scalar_LNumber(
  293. value: 1
  294. )
  295. right: Scalar_LNumber(
  296. value: 0
  297. )
  298. )
  299. )
  300. )
  301. )
  302. 16: Stmt_Const(
  303. consts: array(
  304. 0: Const(
  305. name: T_17
  306. value: Expr_BinaryOp_Smaller(
  307. left: Scalar_LNumber(
  308. value: 1
  309. )
  310. right: Scalar_LNumber(
  311. value: 0
  312. )
  313. )
  314. )
  315. )
  316. )
  317. 17: Stmt_Const(
  318. consts: array(
  319. 0: Const(
  320. name: T_18
  321. value: Expr_BinaryOp_SmallerOrEqual(
  322. left: Scalar_LNumber(
  323. value: 0
  324. )
  325. right: Scalar_LNumber(
  326. value: 0
  327. )
  328. )
  329. )
  330. )
  331. )
  332. 18: Stmt_Const(
  333. consts: array(
  334. 0: Const(
  335. name: T_19
  336. value: Expr_BinaryOp_Greater(
  337. left: Scalar_LNumber(
  338. value: 1
  339. )
  340. right: Scalar_LNumber(
  341. value: 0
  342. )
  343. )
  344. )
  345. )
  346. )
  347. 19: Stmt_Const(
  348. consts: array(
  349. 0: Const(
  350. name: T_20
  351. value: Expr_BinaryOp_GreaterOrEqual(
  352. left: Scalar_LNumber(
  353. value: 1
  354. )
  355. right: Scalar_LNumber(
  356. value: 0
  357. )
  358. )
  359. )
  360. )
  361. )
  362. 20: Stmt_Const(
  363. consts: array(
  364. 0: Const(
  365. name: T_21
  366. value: Expr_BinaryOp_Identical(
  367. left: Scalar_LNumber(
  368. value: 1
  369. )
  370. right: Scalar_LNumber(
  371. value: 1
  372. )
  373. )
  374. )
  375. )
  376. )
  377. 21: Stmt_Const(
  378. consts: array(
  379. 0: Const(
  380. name: T_22
  381. value: Expr_BinaryOp_NotIdentical(
  382. left: Scalar_LNumber(
  383. value: 1
  384. )
  385. right: Scalar_LNumber(
  386. value: 1
  387. )
  388. )
  389. )
  390. )
  391. )
  392. 22: Stmt_Const(
  393. consts: array(
  394. 0: Const(
  395. name: T_23
  396. value: Expr_BinaryOp_NotEqual(
  397. left: Scalar_LNumber(
  398. value: 0
  399. )
  400. right: Scalar_String(
  401. value: 0
  402. )
  403. )
  404. )
  405. )
  406. )
  407. 23: Stmt_Const(
  408. consts: array(
  409. 0: Const(
  410. name: T_24
  411. value: Expr_BinaryOp_Equal(
  412. left: Scalar_LNumber(
  413. value: 1
  414. )
  415. right: Scalar_String(
  416. value: 1
  417. )
  418. )
  419. )
  420. )
  421. )
  422. 24: Stmt_Const(
  423. consts: array(
  424. 0: Const(
  425. name: T_25
  426. value: Expr_BinaryOp_Plus(
  427. left: Scalar_LNumber(
  428. value: 1
  429. )
  430. right: Expr_BinaryOp_Mul(
  431. left: Scalar_LNumber(
  432. value: 2
  433. )
  434. right: Scalar_LNumber(
  435. value: 3
  436. )
  437. )
  438. )
  439. )
  440. )
  441. )
  442. 25: Stmt_Const(
  443. consts: array(
  444. 0: Const(
  445. name: T_26
  446. value: Expr_BinaryOp_Plus(
  447. left: Expr_BinaryOp_Plus(
  448. left: Scalar_String(
  449. value: 1
  450. )
  451. right: Scalar_LNumber(
  452. value: 2
  453. )
  454. )
  455. right: Scalar_String(
  456. value: 3
  457. )
  458. )
  459. )
  460. )
  461. )
  462. 26: Stmt_Const(
  463. consts: array(
  464. 0: Const(
  465. name: T_27
  466. value: Expr_BinaryOp_Pow(
  467. left: Scalar_LNumber(
  468. value: 2
  469. )
  470. right: Scalar_LNumber(
  471. value: 3
  472. )
  473. )
  474. )
  475. )
  476. )
  477. 27: Stmt_Const(
  478. consts: array(
  479. 0: Const(
  480. name: T_28
  481. value: Expr_ArrayDimFetch(
  482. var: Expr_Array(
  483. items: array(
  484. 0: Expr_ArrayItem(
  485. key: null
  486. value: Scalar_LNumber(
  487. value: 1
  488. )
  489. byRef: false
  490. )
  491. 1: Expr_ArrayItem(
  492. key: null
  493. value: Scalar_LNumber(
  494. value: 2
  495. )
  496. byRef: false
  497. )
  498. 2: Expr_ArrayItem(
  499. key: null
  500. value: Scalar_LNumber(
  501. value: 3
  502. )
  503. byRef: false
  504. )
  505. )
  506. )
  507. dim: Scalar_LNumber(
  508. value: 1
  509. )
  510. )
  511. )
  512. )
  513. )
  514. 28: Stmt_Const(
  515. consts: array(
  516. 0: Const(
  517. name: T_29
  518. value: Expr_BinaryOp_Minus(
  519. left: Scalar_LNumber(
  520. value: 12
  521. )
  522. right: Scalar_LNumber(
  523. value: 13
  524. )
  525. )
  526. )
  527. )
  528. )
  529. 29: Stmt_Const(
  530. consts: array(
  531. 0: Const(
  532. name: T_30
  533. value: Expr_BinaryOp_BitwiseXor(
  534. left: Scalar_LNumber(
  535. value: 12
  536. )
  537. right: Scalar_LNumber(
  538. value: 13
  539. )
  540. )
  541. )
  542. )
  543. )
  544. 30: Stmt_Const(
  545. consts: array(
  546. 0: Const(
  547. name: T_31
  548. value: Expr_BinaryOp_BitwiseAnd(
  549. left: Scalar_LNumber(
  550. value: 12
  551. )
  552. right: Scalar_LNumber(
  553. value: 13
  554. )
  555. )
  556. )
  557. )
  558. )
  559. 31: Stmt_Const(
  560. consts: array(
  561. 0: Const(
  562. name: T_32
  563. value: Expr_BinaryOp_BitwiseOr(
  564. left: Scalar_LNumber(
  565. value: 12
  566. )
  567. right: Scalar_LNumber(
  568. value: 13
  569. )
  570. )
  571. )
  572. )
  573. )
  574. 32: Stmt_Const(
  575. consts: array(
  576. 0: Const(
  577. name: T_33
  578. value: Expr_BinaryOp_Mod(
  579. left: Scalar_LNumber(
  580. value: 12
  581. )
  582. right: Scalar_LNumber(
  583. value: 3
  584. )
  585. )
  586. )
  587. )
  588. )
  589. 33: Stmt_Const(
  590. consts: array(
  591. 0: Const(
  592. name: T_34
  593. value: Expr_BinaryOp_ShiftRight(
  594. left: Scalar_LNumber(
  595. value: 100
  596. )
  597. right: Scalar_LNumber(
  598. value: 4
  599. )
  600. )
  601. )
  602. )
  603. )
  604. 34: Stmt_Const(
  605. consts: array(
  606. 0: Const(
  607. name: T_35
  608. value: Expr_BooleanNot(
  609. expr: Expr_ConstFetch(
  610. name: Name(
  611. parts: array(
  612. 0: false
  613. )
  614. )
  615. )
  616. )
  617. )
  618. )
  619. )
  620. )