Added a generic way to add and match language rules
Redefined unparse-expr using the new rule matching system
Made unparse-func to be more concise