00001
00008 #ifndef CSCRIPTPARSER_H
00009 #define CSCRIPTPARSER_H
00010
00011 #include <stdexcept>
00012 #include <string>
00013 #include <list>
00014 #include <set>
00015 #include "cfile.h"
00016
00030 class CScriptparser
00031 {
00032 public:
00037 class ParserError : public std::invalid_argument {
00038 public:
00048 ParserError(const std::string& what)
00049 : std::invalid_argument(what), m_line("")
00050 {}
00051
00062 ParserError(const std::string& what, const std::string& line)
00063 : std::invalid_argument(what), m_line(line)
00064 {}
00065
00075 ~ParserError() throw()
00076 {}
00077
00086 const std::string &getLine()
00087 {
00088 return m_line;
00089 }
00090
00091 private:
00092
00093 std::string m_line;
00094 };
00095
00105 CScriptparser(const std::string& scriptfile);
00106
00116 ~CScriptparser();
00117
00127 void parse();
00128
00129 protected:
00141 void callFunc(const std::string& func, const std::list<std::string>& funcparams);
00142
00155 void read(std::list<std::string> funcparams);
00156
00169 void write(std::list<std::string> funcparams);
00170
00171 private:
00172
00173 std::set<CFile *> m_handlers;
00174 std::string m_scriptfile;
00175 std::string m_curline;
00176 CFile *m_handler;
00177 };
00178
00179 #endif
00180
00181