X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/9d2b125d81372b42e8ae310c8de8650d13010d1e..2c4a8bb6222b88ff96fbf25372179646ce15f706:/Driver.cpp?ds=sidebyside diff --git a/Driver.cpp b/Driver.cpp index eab0bb9..0bdd62d 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -1,5 +1,5 @@ -/* Cycript - Optimizing JavaScript Compiler/Runtime - * Copyright (C) 2009-2015 Jay Freeman (saurik) +/* Cycript - The Truly Universal Scripting Language + * Copyright (C) 2009-2016 Jay Freeman (saurik) */ /* GNU Affero General Public License, Version 3 {{{ */ @@ -19,14 +19,15 @@ **/ /* }}} */ -#include "Cycript.tab.hh" #include "Driver.hpp" +#include "Syntax.hpp" -CYDriver::CYDriver(CYPool &pool, std::istream &data, const std::string &filename) : +bool CYParser(CYPool &pool, bool debug); + +CYDriver::CYDriver(CYPool &pool, std::streambuf &data, const std::string &filename) : pool_(pool), newline_(false), last_(false), - next_(false), data_(data), debug_(0), strict_(false), @@ -39,6 +40,7 @@ CYDriver::CYDriver(CYPool &pool, std::istream &data, const std::string &filename { in_.push(false); return_.push(false); + super_.push(false); template_.push(false); yield_.push(false); @@ -49,37 +51,8 @@ CYDriver::~CYDriver() { ScannerDestroy(); } -bool CYDriver::Parse(CYMark mark) { - mark_ = mark; - 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); script_->Replace(context); } - -void CYDriver::Warning(const cy::parser::location_type &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); -}