-/* 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 {{{ */
#include <vector>
#include "Location.hpp"
-#include "Parser.hpp"
+#include "Options.hpp"
+#include "Pooling.hpp"
+#include "Standard.hpp"
+
+struct CYClassTail;
+struct CYExpression;
+struct CYScript;
+struct CYWord;
enum CYMark {
- CYMarkIgnore,
CYMarkScript,
CYMarkModule,
};
std::stack<bool> in_;
std::stack<bool> return_;
+ std::stack<bool> super_;
std::stack<bool> template_;
std::stack<bool> yield_;
+ std::stack<CYClassTail *> class_;
+
+ CYMark mark_;
+ int hold_;
bool newline_;
bool last_;
- bool next_;
- std::istream &data_;
- CYMark mark_;
+ std::streambuf &data_;
int debug_;
bool strict_;
bool highlight_;
enum Condition {
- RegExpCondition,
XMLContentCondition,
XMLTagCondition,
};
AutoPrimary,
AutoDirect,
AutoIndirect,
- AutoMessage
+ AutoMessage,
+ AutoResolve,
} mode_;
private:
void ScannerDestroy();
public:
- CYDriver(CYPool &pool, std::istream &data, const std::string &filename = "");
+ CYDriver(CYPool &pool, std::streambuf &data, const std::string &filename = "");
~CYDriver();
- bool Parse(CYMark mark = CYMarkScript);
+ bool Parse(CYMark mark = CYMarkModule);
void Replace(CYOptions &options);
+ void SetRegEx(bool equal);
void SetCondition(Condition condition);
void PushCondition(Condition condition);