logic.test 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. Logical operators
  2. -----
  3. <?php
  4. // boolean ops
  5. $a && $b;
  6. $a || $b;
  7. !$a;
  8. !!$a;
  9. // logical ops
  10. $a and $b;
  11. $a or $b;
  12. $a xor $b;
  13. // precedence
  14. $a && $b || $c && $d;
  15. $a && ($b || $c) && $d;
  16. $a = $b || $c;
  17. $a = $b or $c;
  18. -----
  19. array(
  20. 0: Stmt_Expression(
  21. expr: Expr_BinaryOp_BooleanAnd(
  22. left: Expr_Variable(
  23. name: a
  24. )
  25. right: Expr_Variable(
  26. name: b
  27. )
  28. )
  29. comments: array(
  30. 0: // boolean ops
  31. )
  32. )
  33. 1: Stmt_Expression(
  34. expr: Expr_BinaryOp_BooleanOr(
  35. left: Expr_Variable(
  36. name: a
  37. )
  38. right: Expr_Variable(
  39. name: b
  40. )
  41. )
  42. )
  43. 2: Stmt_Expression(
  44. expr: Expr_BooleanNot(
  45. expr: Expr_Variable(
  46. name: a
  47. )
  48. )
  49. )
  50. 3: Stmt_Expression(
  51. expr: Expr_BooleanNot(
  52. expr: Expr_BooleanNot(
  53. expr: Expr_Variable(
  54. name: a
  55. )
  56. )
  57. )
  58. )
  59. 4: Stmt_Expression(
  60. expr: Expr_BinaryOp_LogicalAnd(
  61. left: Expr_Variable(
  62. name: a
  63. )
  64. right: Expr_Variable(
  65. name: b
  66. )
  67. )
  68. comments: array(
  69. 0: // logical ops
  70. )
  71. )
  72. 5: Stmt_Expression(
  73. expr: Expr_BinaryOp_LogicalOr(
  74. left: Expr_Variable(
  75. name: a
  76. )
  77. right: Expr_Variable(
  78. name: b
  79. )
  80. )
  81. )
  82. 6: Stmt_Expression(
  83. expr: Expr_BinaryOp_LogicalXor(
  84. left: Expr_Variable(
  85. name: a
  86. )
  87. right: Expr_Variable(
  88. name: b
  89. )
  90. )
  91. )
  92. 7: Stmt_Expression(
  93. expr: Expr_BinaryOp_BooleanOr(
  94. left: Expr_BinaryOp_BooleanAnd(
  95. left: Expr_Variable(
  96. name: a
  97. )
  98. right: Expr_Variable(
  99. name: b
  100. )
  101. )
  102. right: Expr_BinaryOp_BooleanAnd(
  103. left: Expr_Variable(
  104. name: c
  105. )
  106. right: Expr_Variable(
  107. name: d
  108. )
  109. )
  110. )
  111. comments: array(
  112. 0: // precedence
  113. )
  114. )
  115. 8: Stmt_Expression(
  116. expr: Expr_BinaryOp_BooleanAnd(
  117. left: Expr_BinaryOp_BooleanAnd(
  118. left: Expr_Variable(
  119. name: a
  120. )
  121. right: Expr_BinaryOp_BooleanOr(
  122. left: Expr_Variable(
  123. name: b
  124. )
  125. right: Expr_Variable(
  126. name: c
  127. )
  128. )
  129. )
  130. right: Expr_Variable(
  131. name: d
  132. )
  133. )
  134. )
  135. 9: Stmt_Expression(
  136. expr: Expr_Assign(
  137. var: Expr_Variable(
  138. name: a
  139. )
  140. expr: Expr_BinaryOp_BooleanOr(
  141. left: Expr_Variable(
  142. name: b
  143. )
  144. right: Expr_Variable(
  145. name: c
  146. )
  147. )
  148. )
  149. )
  150. 10: Stmt_Expression(
  151. expr: Expr_BinaryOp_LogicalOr(
  152. left: Expr_Assign(
  153. var: Expr_Variable(
  154. name: a
  155. )
  156. expr: Expr_Variable(
  157. name: b
  158. )
  159. )
  160. right: Expr_Variable(
  161. name: c
  162. )
  163. )
  164. )
  165. )