X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/f95d2598051e347460e028286ff2d33e5825e548..341d1456832396678c21074a7ec2a07181e12f49:/Driver.cpp?ds=sidebyside diff --git a/Driver.cpp b/Driver.cpp index 6501fbf..5f3ffa1 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 {{{ */ @@ -22,9 +22,11 @@ #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), @@ -42,7 +44,22 @@ CYDriver::~CYDriver() { ScannerDestroy(); } -void CYDriver::Warning(const cy::location &location, const char *message) { +bool CYDriver::Parse() { + CYLocal local(&pool_); + cy::parser parser(*this); +#ifdef YYDEBUG + parser.set_debug_level(debug_); +#endif + return parser.parse() != 0; +} + +void CYDriver::Replace(CYOptions &options) { + CYLocal local(&pool_); + CYContext context(options); + program_->Replace(context); +} + +void CYDriver::Warning(const cy::parser::location_type &location, const char *message) { if (!strict_) return;