Back to Top page.

EGOAParser.h

Go to the documentation of this file.
00001 /****************************************************************************
00002   
00003   $Id: EGOAParser.h,v 1.3 2002/11/08 03:47:38 motegi Exp $
00004   Copyright (C) Higuchi Lab. All rights reserved.
00005 
00006 *****************************************************************************/
00007 #ifndef INCLUDE__PARSER_H__FILE
00008 #define INCLUDE__PARSER_H__FILE
00009 
00010 #include <string>
00011 #include <iostream>
00012 
00013 class EGOAConstruct;
00014 class EGOAScanner;
00015 
00016 class EGOAParser {
00017 public:
00018   enum Token {
00019     BEGINTAG,     
00020     ENDTAG,       
00021     STRING,       
00022     DONE          
00023   };
00024 
00025   EGOAParser();
00026   EGOAParser(EGOAConstruct*, std::istream*); 
00027   virtual ~EGOAParser();
00028 
00029   virtual void initialize(EGOAConstruct*, std::istream*);
00030 
00031   virtual void parse();
00032   virtual bool checkToken(Token specificToken) const {
00033     return (nowToken == specificToken);
00034   }
00035   virtual void match(Token specificToken);
00036   virtual void changeState(EGOAConstruct* newState){
00037     state = newState;
00038   }
00039   virtual void error(const std::string&,Token);
00040 
00041   virtual Token getNowToken() const {
00042     return nowToken;
00043   }
00044   virtual const std::string& getNowString() const {
00045     return nowString;
00046   }
00047   virtual unsigned getNowLine() const {
00048     return nowLine;
00049   }
00050   virtual const std::string& getNowTag() const {
00051     return nowTag;
00052   }
00053   virtual bool getResult() const {
00054     return flag;
00055   }
00056 
00057   virtual void setNowTag(const std::string& tag) {
00058     nowTag = tag;
00059   }
00060 protected:
00061   EGOAParser(const EGOAParser&);
00062   EGOAParser& operator=(const EGOAParser&);
00063 
00064   EGOAConstruct* state;
00065   EGOAScanner* scanner;
00066   Token nowToken;
00067   std::string nowString;
00068   unsigned nowLine;
00069   std::string nowTag;
00070   bool flag;
00071 };
00072 
00073 #endif  // INCLUDE__PARSER_H__FILE
00074 
00075