/* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2014 Jay Freeman (saurik)
+ * Copyright (C) 2009-2015 Jay Freeman (saurik)
*/
/* GNU Affero General Public License, Version 3 {{{ */
#include "Cycript.tab.hh"
#include "Driver.hpp"
-CYDriver::CYDriver(std::istream &data, const std::string &filename) :
+CYDriver::CYDriver(CYPool &pool, std::istream &data, const std::string &filename) :
+ pool_(pool),
state_(CYClear),
data_(data),
+ debug_(0),
strict_(false),
commented_(false),
filename_(filename),
ScannerDestroy();
}
-void CYDriver::Warning(const cy::location &location, const char *message) {
+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);
+ program_->Replace(context);
+}
+
+void CYDriver::Warning(const cy::parser::location_type &location, const char *message) {
if (!strict_)
return;