package prolog.model;

import prolog.util.*;

public interface IProgram
{
	/**
	 * clear the programm (clears all items found by the parser)
	 */
	public void clear();

	/**
	 * returns the used symboltable to en- and decode the names
	 */
	public ISymbolTable getSymbolTable();

	/**
	 * returns a list with all queries found by the parser
	 */
	public IQueryList getQuerys();

	/**
	 * returns the fact database used to process a program
	 */
	public IFactDb getFacts();

	/**
	 * returns the statement map used to resolve queries
	 */
	public IStatementMap getStatements();

	/**
	 * the method processing the program
	 * @throws ParameterMatchingError
	 */
	public void run() throws ParameterMatchingError;
}
