//**********************************************************
//   CR_PARSE.HPP
//   Coco/R C++ Support Library.
//   Author: Frankie Arzu <farzu@uvg.edu.gt>
//
//   Jun 12, 1996  Version 1.06
//      Many fixes and suggestions thanks to
//      Pat Terry <p.terry@.ru.ac.za>
//   Jun 20, 2001
//      Virtual destructors added
//**********************************************************

#ifndef CR_PARSER_H
#define CR_PARSER_H

#include "cr_abs.hpp"
#include "cr_error.hpp"

class CRParser {
// Abstract Parser
  public:
    CRParser(AbsScanner *S = NULL, CRError *E = NULL);
    // Constructs abstract parser, and associates it with scanner S and
    // customized error reporter E

    virtual ~CRParser() { }

    void Parse();
    // Abstract parser

    void SynError(int ErrorNo);
    // Records syntax error ErrorNo

    void SemError(int ErrorNo);
    // Records semantic error ErrorNo

  protected:
    virtual void Get() = 0;
    int  In(unsigned short int *SymbolSet, int i);
    void Expect(int n);
    void GenError(int ErrorNo);
    AbsScanner *Scanner;
    CRError    *Error;
    int        Sym;
};

#endif // CR_PARSER_H





syntax highlighted by Code2HTML, v. 0.9.1