Simple expression visitor that logs expression types.
(self, expr)
| 176 | self.log.pop_scope() |
| 177 | |
| 178 | def visit_expr(self, expr): |
| 179 | """Simple expression visitor that logs expression types.""" |
| 180 | if expr is None: |
| 181 | return |
| 182 | |
| 183 | if isinstance(expr, Var): |
| 184 | self.log.add("Var") |
| 185 | elif isinstance(expr, IntImm): |
| 186 | self.log.add("IntImm") |
| 187 | elif isinstance(expr, Add): |
| 188 | self.log.add("Add") |
| 189 | self.log.push_scope() |
| 190 | self.visit_expr(expr.a) |
| 191 | self.visit_expr(expr.b) |
| 192 | self.log.pop_scope() |
| 193 | elif isinstance(expr, Sub): |
| 194 | self.log.add("Sub") |
| 195 | self.log.push_scope() |
| 196 | self.visit_expr(expr.a) |
| 197 | self.visit_expr(expr.b) |
| 198 | self.log.pop_scope() |
| 199 | elif isinstance(expr, Mul): |
| 200 | self.log.add("Mul") |
| 201 | self.log.push_scope() |
| 202 | self.visit_expr(expr.a) |
| 203 | self.visit_expr(expr.b) |
| 204 | self.log.pop_scope() |
| 205 | elif isinstance(expr, EQ): |
| 206 | self.log.add("EQ") |
| 207 | self.log.push_scope() |
| 208 | self.visit_expr(expr.a) |
| 209 | self.visit_expr(expr.b) |
| 210 | self.log.pop_scope() |
| 211 | elif isinstance(expr, LT): |
| 212 | self.log.add("LT") |
| 213 | self.log.push_scope() |
| 214 | self.visit_expr(expr.a) |
| 215 | self.visit_expr(expr.b) |
| 216 | self.log.pop_scope() |
| 217 | elif isinstance(expr, GT): |
| 218 | self.log.add("GT") |
| 219 | self.log.push_scope() |
| 220 | self.visit_expr(expr.a) |
| 221 | self.visit_expr(expr.b) |
| 222 | self.log.pop_scope() |
| 223 | else: |
| 224 | self.log.add(f"Expr::{type(expr).__name__}") |
| 225 | |
| 226 | |
| 227 | class ASTPrinterMutator(StmtMutator): |
no test coverage detected