expr-semantic
nearly finished