package rebelsky.compiler.parser;

import rebelsky.compiler.lexer.TokenStream;

/**
 * A simple mechanism for describing parsers.  It's not clear that
 * I really need something like this, but I like interfaces.
 *
 * @author Samuel A. Rebelsky
 * @version 1.0 of October 2002
 */
public interface Parser
{
  // +---------+-----------------------------------------------------------
  // | Methods |
  // +---------+

  /**
   * Parse a token stream, returning a parse tree.
   *
   * @exception ParseException 
   *   If a parse error occurs.
   */
  public Node parse(TokenStream ts)
    throws ParseException;

} // interface Parser

