#include "Cycript.tab.hh"
#include "Driver.hpp"
-CYDriver::CYDriver(std::istream &data, const std::string &filename) :
- state_(CYClear),
+CYDriver::CYDriver(CYPool &pool, std::istream &data, const std::string &filename) :
+ pool_(pool),
+ newline_(false),
+ last_(false),
data_(data),
+ debug_(0),
strict_(false),
- commented_(false),
+ highlight_(false),
filename_(filename),
- program_(NULL),
+ script_(NULL),
auto_(false),
context_(NULL),
mode_(AutoNone)
{
memset(&no_, 0, sizeof(no_));
in_.push(false);
+ template_.push(false);
ScannerInit();
}
ScannerDestroy();
}
+bool CYDriver::Parse() {
+ CYLocal<CYPool> local(&pool_);
+ cy::parser parser(*this);
+#ifdef YYDEBUG
+ parser.set_debug_level(debug_);
+#endif
+ return parser.parse() != 0;
+}
+
+void CYDriver::Replace(CYOptions &options) {
+ CYLocal<CYPool> local(&pool_);
+ CYContext context(options);
+ script_->Replace(context);
+}
+
void CYDriver::Warning(const cy::parser::location_type &location, const char *message) {
if (!strict_)
return;