/* 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 <string>
#include <vector>
-#include "location.hh"
-
+#include "Location.hpp"
#include "Parser.hpp"
-enum CYState {
- CYClear,
- CYRestricted,
- CYNewLine
-};
-
-class CYDriver {
+class _visible CYDriver {
public:
+ CYPool &pool_;
void *scanner_;
- CYState state_;
std::stack<bool> in_;
+ bool newline_;
+ bool last_;
+
struct {
bool AtImplementation;
+ bool Class;
bool Function;
bool OpenBrace;
+ bool NewLine;
} no_;
std::istream &data_;
+ int debug_;
bool strict_;
bool commented_;
struct Error {
bool warning_;
- cy::location location_;
+ CYLocation location_;
std::string message_;
};
typedef std::vector<Error> Errors;
- CYProgram *program_;
+ CYScript *script_;
Errors errors_;
bool auto_;
void ScannerDestroy();
public:
- CYDriver(std::istream &data, const std::string &filename = "");
+ CYDriver(CYPool &pool, std::istream &data, const std::string &filename = "");
~CYDriver();
+ bool Parse();
+ void Replace(CYOptions &options);
+
Condition GetCondition();
void SetCondition(Condition condition);
void PushCondition(Condition condition);
void PopCondition();
- void Warning(const cy::location &location, const char *message);
+ void Warning(const CYLocation &location, const char *message);
};
#endif/*CYCRIPT_DRIVER_HPP*/