(s: Scanner)
| 151 | |
| 152 | |
| 153 | def and_expr(s: Scanner) -> ast.expr: |
| 154 | ret = not_expr(s) |
| 155 | while s.accept(TokenType.AND): |
| 156 | rhs = not_expr(s) |
| 157 | ret = ast.BoolOp(ast.And(), [ret, rhs]) |
| 158 | return ret |
| 159 | |
| 160 | |
| 161 | def not_expr(s: Scanner) -> ast.expr: |