00001 00002 #ifndef _PARSER_H_ 00003 #define _PARSER_H_ 00004 00005 #include <iostream> 00006 #include <list> 00007 00008 class Alphabet; 00009 class FiniteAlphabet; 00010 00011 using namespace std; 00012 00013 enum AInputType { NONE, SET, FREE_PRES, REL_PRES }; 00014 00015 00016 class Parser 00017 { 00018 public: 00019 Parser(istream& in, const Alphabet* a); 00020 ~Parser(); 00021 void parse(); 00022 00023 char getWordTerminalSymbol( ) const; 00024 00025 const list<int>& getWord()const; 00026 private: 00027 class WordFlexLexer* localFlexLexer; 00028 list<int> theWord; 00029 char theTS; 00030 }; 00031 00032 class AParser 00033 { 00034 public: 00035 AParser(istream& in); 00036 ~AParser(); 00037 void parse(); 00038 AInputType getType()const; 00039 FiniteAlphabet getAlphabet() const; 00040 private: 00041 class AlphabetFlexLexer* localFlexLexer; 00042 AInputType theType; 00043 FiniteAlphabet* theAlphabet; 00044 }; 00045 00046 #endif