X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/f95d2598051e347460e028286ff2d33e5825e548..c8a2a786eb3f1cda8780b348f27e2c8240621045:/Driver.cpp?ds=sidebyside diff --git a/Driver.cpp b/Driver.cpp index 6501fbf..4bac2c2 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -1,5 +1,5 @@ /* 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 {{{ */ @@ -19,22 +19,31 @@ **/ /* }}} */ -#include "Cycript.tab.hh" #include "Driver.hpp" +#include "Parser.hpp" -CYDriver::CYDriver(std::istream &data, const std::string &filename) : - state_(CYClear), +bool CYParser(CYPool &pool, bool debug); + +CYDriver::CYDriver(CYPool &pool, std::istream &data, const std::string &filename) : + pool_(pool), + newline_(false), + last_(false), + next_(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); + return_.push(false); + template_.push(false); + yield_.push(false); + ScannerInit(); } @@ -42,21 +51,8 @@ CYDriver::~CYDriver() { ScannerDestroy(); } -void CYDriver::Warning(const cy::location &location, const char *message) { - if (!strict_) - return; - - CYDriver::Error error; - error.warning_ = true; - error.location_ = location; - error.message_ = message; - errors_.push_back(error); -} - -void cy::parser::error(const cy::parser::location_type &location, const std::string &message) { - CYDriver::Error error; - error.warning_ = false; - error.location_ = location; - error.message_ = message; - driver.errors_.push_back(error); +void CYDriver::Replace(CYOptions &options) { + CYLocal local(&pool_); + CYContext context(options); + script_->Replace(context); }