(s: Scanner)
| 181 | |
| 182 | |
| 183 | def and_expr(s: Scanner) -> ast.expr: |
| 184 | ret = not_expr(s) |
| 185 | while s.accept(TokenType.AND): |
| 186 | rhs = not_expr(s) |
| 187 | ret = ast.BoolOp(ast.And(), [ret, rhs]) |
| 188 | return ret |
| 189 | |
| 190 | |
| 191 | def not_expr(s: Scanner) -> ast.expr: |