1 #ifndef _PARSER_HANDLER_H_
2 #define _PARSER_HANDLER_H_
8 #include "parser_status.h"
21 class GarbageCollector;
28 HandlerData(gc::GarbageCollector& g) : gc(g), chain(false) {}
30 smart_ptr<lexeme::ILexeme> lexm;
31 std::stack<data::Object> stack;
32 std::stack<std::vector<data::Object> > compounds;
33 gc::GarbageCollector& gc;
34 std::stack<PARSERSTATUS> status;
35 std::string error; // syntax errorなどを通知する。
36 bool chain; // 現在のlexemeを維持したまま次のstatusに基づいた処理を行う。
44 virtual ~IParserHandler() {}
46 // 構文木のスタックとstatusのスタックを元に、Treeを
48 bool exec(HandlerData& data);
53 // 処理が行われた場合にはtrue、行われなかった場合にはfalseを
55 virtual bool exec_(HandlerData& data) = 0;
63 #endif /* _PARSER_HANDLER_H_ */