Validate rule. Valid rule must inherit from Rule and have valid syntax.
        :param rule: Rule to validate.
        :raise NotRuleException: If the parameter doesn't inherit from Rule.

def _validate_rule(self, rule):
        # type: (Type[Rule]) -> None
        """
        Validate rule. Valid rule must inherit from Rule and have valid syntax.
        :param rule: Rule to validate.
        :raise NotRuleException: If the parameter doesn't inherit from Rule.
        """
        if not inspect.isclass(rule) or not issubclass(rule, Rule):
            raise NotRuleException(rule)
        rule.validate(self._grammar)