add semantic rules