]> git.saurik.com Git - cycript.git/blobdiff - Driver.cpp
Attempt to make all the identifiers look the same.
[cycript.git] / Driver.cpp
index 7e9c7adbb2fe46d0131ba6eec7a1e63fd4a91e0e..5f3ffa1e2f802730cce806dc1586442741a4f133 100644 (file)
 #include "Cycript.tab.hh"
 #include "Driver.hpp"
 
 #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),
     state_(CYClear),
     data_(data),
+    debug_(0),
     strict_(false),
     commented_(false),
     filename_(filename),
     strict_(false),
     commented_(false),
     filename_(filename),
@@ -42,6 +44,21 @@ CYDriver::~CYDriver() {
     ScannerDestroy();
 }
 
     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);
+    program_->Replace(context);
+}
+
 void CYDriver::Warning(const cy::parser::location_type &location, const char *message) {
     if (!strict_)
         return;
 void CYDriver::Warning(const cy::parser::location_type &location, const char *message) {
     if (!strict_)
         return;