math.test 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. Mathematical operators
  2. -----
  3. <?php
  4. // unary ops
  5. ~$a;
  6. +$a;
  7. -$a;
  8. // binary ops
  9. $a & $b;
  10. $a | $b;
  11. $a ^ $b;
  12. $a . $b;
  13. $a / $b;
  14. $a - $b;
  15. $a % $b;
  16. $a * $b;
  17. $a + $b;
  18. $a << $b;
  19. $a >> $b;
  20. $a ** $b;
  21. // associativity
  22. $a * $b * $c;
  23. $a * ($b * $c);
  24. // precedence
  25. $a + $b * $c;
  26. ($a + $b) * $c;
  27. // pow is special
  28. $a ** $b ** $c;
  29. ($a ** $b) ** $c;
  30. -----
  31. array(
  32. 0: Stmt_Expression(
  33. expr: Expr_BitwiseNot(
  34. expr: Expr_Variable(
  35. name: a
  36. )
  37. )
  38. comments: array(
  39. 0: // unary ops
  40. )
  41. )
  42. 1: Stmt_Expression(
  43. expr: Expr_UnaryPlus(
  44. expr: Expr_Variable(
  45. name: a
  46. )
  47. )
  48. )
  49. 2: Stmt_Expression(
  50. expr: Expr_UnaryMinus(
  51. expr: Expr_Variable(
  52. name: a
  53. )
  54. )
  55. )
  56. 3: Stmt_Expression(
  57. expr: Expr_BinaryOp_BitwiseAnd(
  58. left: Expr_Variable(
  59. name: a
  60. )
  61. right: Expr_Variable(
  62. name: b
  63. )
  64. )
  65. comments: array(
  66. 0: // binary ops
  67. )
  68. )
  69. 4: Stmt_Expression(
  70. expr: Expr_BinaryOp_BitwiseOr(
  71. left: Expr_Variable(
  72. name: a
  73. )
  74. right: Expr_Variable(
  75. name: b
  76. )
  77. )
  78. )
  79. 5: Stmt_Expression(
  80. expr: Expr_BinaryOp_BitwiseXor(
  81. left: Expr_Variable(
  82. name: a
  83. )
  84. right: Expr_Variable(
  85. name: b
  86. )
  87. )
  88. )
  89. 6: Stmt_Expression(
  90. expr: Expr_BinaryOp_Concat(
  91. left: Expr_Variable(
  92. name: a
  93. )
  94. right: Expr_Variable(
  95. name: b
  96. )
  97. )
  98. )
  99. 7: Stmt_Expression(
  100. expr: Expr_BinaryOp_Div(
  101. left: Expr_Variable(
  102. name: a
  103. )
  104. right: Expr_Variable(
  105. name: b
  106. )
  107. )
  108. )
  109. 8: Stmt_Expression(
  110. expr: Expr_BinaryOp_Minus(
  111. left: Expr_Variable(
  112. name: a
  113. )
  114. right: Expr_Variable(
  115. name: b
  116. )
  117. )
  118. )
  119. 9: Stmt_Expression(
  120. expr: Expr_BinaryOp_Mod(
  121. left: Expr_Variable(
  122. name: a
  123. )
  124. right: Expr_Variable(
  125. name: b
  126. )
  127. )
  128. )
  129. 10: Stmt_Expression(
  130. expr: Expr_BinaryOp_Mul(
  131. left: Expr_Variable(
  132. name: a
  133. )
  134. right: Expr_Variable(
  135. name: b
  136. )
  137. )
  138. )
  139. 11: Stmt_Expression(
  140. expr: Expr_BinaryOp_Plus(
  141. left: Expr_Variable(
  142. name: a
  143. )
  144. right: Expr_Variable(
  145. name: b
  146. )
  147. )
  148. )
  149. 12: Stmt_Expression(
  150. expr: Expr_BinaryOp_ShiftLeft(
  151. left: Expr_Variable(
  152. name: a
  153. )
  154. right: Expr_Variable(
  155. name: b
  156. )
  157. )
  158. )
  159. 13: Stmt_Expression(
  160. expr: Expr_BinaryOp_ShiftRight(
  161. left: Expr_Variable(
  162. name: a
  163. )
  164. right: Expr_Variable(
  165. name: b
  166. )
  167. )
  168. )
  169. 14: Stmt_Expression(
  170. expr: Expr_BinaryOp_Pow(
  171. left: Expr_Variable(
  172. name: a
  173. )
  174. right: Expr_Variable(
  175. name: b
  176. )
  177. )
  178. )
  179. 15: Stmt_Expression(
  180. expr: Expr_BinaryOp_Mul(
  181. left: Expr_BinaryOp_Mul(
  182. left: Expr_Variable(
  183. name: a
  184. )
  185. right: Expr_Variable(
  186. name: b
  187. )
  188. )
  189. right: Expr_Variable(
  190. name: c
  191. )
  192. )
  193. comments: array(
  194. 0: // associativity
  195. )
  196. )
  197. 16: Stmt_Expression(
  198. expr: Expr_BinaryOp_Mul(
  199. left: Expr_Variable(
  200. name: a
  201. )
  202. right: Expr_BinaryOp_Mul(
  203. left: Expr_Variable(
  204. name: b
  205. )
  206. right: Expr_Variable(
  207. name: c
  208. )
  209. )
  210. )
  211. )
  212. 17: Stmt_Expression(
  213. expr: Expr_BinaryOp_Plus(
  214. left: Expr_Variable(
  215. name: a
  216. )
  217. right: Expr_BinaryOp_Mul(
  218. left: Expr_Variable(
  219. name: b
  220. )
  221. right: Expr_Variable(
  222. name: c
  223. )
  224. )
  225. )
  226. comments: array(
  227. 0: // precedence
  228. )
  229. )
  230. 18: Stmt_Expression(
  231. expr: Expr_BinaryOp_Mul(
  232. left: Expr_BinaryOp_Plus(
  233. left: Expr_Variable(
  234. name: a
  235. )
  236. right: Expr_Variable(
  237. name: b
  238. )
  239. )
  240. right: Expr_Variable(
  241. name: c
  242. )
  243. )
  244. )
  245. 19: Stmt_Expression(
  246. expr: Expr_BinaryOp_Pow(
  247. left: Expr_Variable(
  248. name: a
  249. )
  250. right: Expr_BinaryOp_Pow(
  251. left: Expr_Variable(
  252. name: b
  253. )
  254. right: Expr_Variable(
  255. name: c
  256. )
  257. )
  258. )
  259. comments: array(
  260. 0: // pow is special
  261. )
  262. )
  263. 20: Stmt_Expression(
  264. expr: Expr_BinaryOp_Pow(
  265. left: Expr_BinaryOp_Pow(
  266. left: Expr_Variable(
  267. name: a
  268. )
  269. right: Expr_Variable(
  270. name: b
  271. )
  272. )
  273. right: Expr_Variable(
  274. name: c
  275. )
  276. )
  277. )
  278. )