1//****************************************************************
2//   CPLUS2\PARSER_H.FRM
3//   Coco/R C++ Support Frames.
4//   Author: Frankie Arzu <farzu@uvg.edu.gt>
5//
6//   Jun 12, 1996  Version 1.06
7//      Many fixes and suggestions thanks to
8//      Pat Terry <p.terry@.ru.ac.za>
9//   May 05, 1999  Version 1.12
10//      Added methods to parser to retrieve token position easily
11//****************************************************************
12
13#ifndef -->ParserClass_INCLUDE
14#define -->ParserClass_INCLUDE
15
16#include "cr_parse.hpp"
17
18const int MAXSYM = -->MaxSymSets;
19const int MAXERROR = -->MaxErr;
20
21class -->ParserClass : CRParser
22{
23  public:
24    -->ParserClass(AbsScanner *S=NULL, CRError *E=NULL) : CRParser(S,E) {};
25    void Parse();
26    inline void LexString(char *lex, int size)
27    { Scanner->GetString(&Scanner->CurrSym, lex, size); };
28    inline void LexName(char *lex, int size)
29    { Scanner->GetName(&Scanner->CurrSym, lex, size); };
30    inline long LexPos()
31    { return Scanner->CurrSym.GetPos(); };
32    inline void LookAheadString(char *lex, int size)
33    { Scanner->GetString(&Scanner->NextSym, lex, size); };
34    inline void LookAheadName(char *lex, int size)
35    { Scanner->GetName(&Scanner->NextSym, lex, size); };
36    inline long LookAheadPos()
37    { return Scanner->NextSym.GetPos(); };
38    inline int Successful()
39    { return Error->Errors == 0; }
40
41  protected:
42    static unsigned short int SymSet[][MAXSYM];
43    virtual void Get();
44    void ExpectWeak (int n, int follow);
45    int  WeakSeparator (int n, int syFol, int repFol);
46  private:
47    -->ProdHeaders
48};
49
50#endif /* -->ParserClass_INCLUDE */
51
52