00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ARCHON_UTILITIES_LR_PARSER_SIMPLE_H
00021 #define ARCHON_UTILITIES_LR_PARSER_SIMPLE_H
00022
00023 #include <vector>
00024
00025 #include <archon/util/cfg.H>
00026 #include <archon/util/lr_parser_base.H>
00027
00028 namespace Archon
00029 {
00030 namespace Utilities
00031 {
00032 using namespace std;
00033
00034 class SlrParser: public LrParserBase
00035 {
00036 vector<int> actionTable;
00037 vector<int> gotoTable;
00038 int numberOfStates;
00039
00040 int getAction(int state, int terminal) const;
00041 int getGoto(int state, int nonterminal) const;
00042
00043 string printItemSets(const vector<pair<int, int> > &,
00044 const vector<set<int> > &, int width);
00045
00046 public:
00047 SlrParser(CFG &, const ActorBase * =0, const Printer * =0);
00048 ~SlrParser();
00049 };
00050 }
00051 }
00052
00053 #endif // ARCHON_UTILITIES_LR_PARSER_SIMPLE_H