GrammarCheck.java

package progen.kernel.grammar.validations;

import progen.kernel.grammar.Grammar;

/**
 * Clase que encadena y comprueba las distintas comprobaciones que se realizan
 * para comprobar que una gramática está bien formada y puede generar árboles
 * evaluables en la aplicación.
 * 
 * @author jirsis
 * @since 2.0
 * @see progen.kernel.grammar.validations
 */
public class GrammarCheck {
  /** La gramática a comprobar. **/
  private Grammar grammar;

  /**
   * Constructor genérico de la clase que recibe como parámetro la gramática a
   * comprobar.
   * 
   * @param grammar
   *          La gramática a comprobar.
   */
  public GrammarCheck(Grammar grammar) {
    this.grammar = grammar;
  }

  /**
   * Método que realiza todas las validaciones necesarias sobre la gramática. En
   * caso de que no sea correcta, se lanzará una excepción de tipo
   * GrammarNotValidException
   * 
   * @throws GrammarNotValidException
   *           Excepción lanzada si no cumple con las validaciones definidas.
   * @see GrammarNotValidException
   * 
   */
  public void validate(){
    new GrammarNonTerminalSymbolProduction().validate(grammar);
    new InaccesibleProductions().validate(grammar);
    new SuperfluousProductions().validate(grammar);
  }

}