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