refactor expression parsing rules
support single statement block