Text this: Syntax-directed semantics-supported editing of algebraic specifications