def parse_expression(clause):
if isinstance(clause, Expression):<EOL><INDENT>return clause<EOL><DEDENT>elif hasattr(clause, "<STR_LIT>") and clause.getName() != "<STR_LIT>":<EOL><INDENT>if clause.getName() == "<STR_LIT>":<EOL><INDENT>return AttributeSelection.from_statement(clause)<EOL><DEDENT>elif clause.getName() == "<STR_LIT>":<EOL><INDENT>return SelectFunction.from_statement(clause)<EOL><DEDENT>else:<EOL><INDENT>return Value(resolve(clause[<NUM_LIT:0>]))<EOL><DEDENT><DEDENT>else:<EOL><INDENT>return Field(clause[<NUM_LIT:0>])<EOL><DEDENT>
For a clause that could be a field, value, or expression