We would like to have a grammar checker for Gracle. We imagine such a thing being based on a general Tomita parser which is known to be able to handle a very general class of grammars.
Some people think that it is very hard to write a grammar checker, but we don't believe it necessarily is. A grammar checker does not need to have some deep understanding of the text; it just needs to catch common errors.
One interesting possibility would be to associate a cost with every parse tree, and to have the parser return the parse tree with the lowest cost. Grammar rules would also have a cost associated with them, and each time a rule is applied to form a parse tree, the cost of the rule is added to the overall cost of the parse tree. Common grammar errors would then have rules with nonzero cost associated with them, such as a rule that reduces "than" to "then" and another rule that does the opposite. For French, there would be rules with nonzero cost that reduce "participe passé" to infinitive, and vice versa.