Implement most of the read_expression loop