An analysis of rule coverage as a criterion in generating minimal test suites for grammar-based software