// The LexGenParser class specialises on the parser skeleton // provided by the general Parser class. It contains the // recursive descent parser code which is specific to the // language expected by LexGen. class LexGenParser : public Parser { // The type RuleType enumerates the three types of rules // in a LexGen specification. enum RuleType { SETTYPE, TOKENTYPE, IGNORETYPE }; RuleType group; public: // The following functions form the recursive descent parser // for LexGen, with the function specification() being the root. void specification(void); void rule(void); LexRule *ruleHead(void); void ruleBody(LexRule *); LexNode *qwString(); LexNode *expression(void); LexNode *termSeq(void); LexNode *term(void); static char *prelude; static char *postlude; static const char *currentfile; LexGenParser(const char *n) : Parser(n) { currentfile = n; group = SETTYPE; } };