Tidied up the grammer by using the LanguageDef type