X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/9d2b125d81372b42e8ae310c8de8650d13010d1e..9ec2b9397cc7a924bb0aa9a44ba3747fd32fa36d:/Driver.hpp?ds=sidebyside diff --git a/Driver.hpp b/Driver.hpp index 0df39d7..b4f1c1b 100644 --- a/Driver.hpp +++ b/Driver.hpp @@ -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 {{{ */ @@ -29,12 +29,19 @@ #include #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, + CYMarkExpression, }; class _visible CYDriver { @@ -47,22 +54,24 @@ class _visible CYDriver { std::stack in_; std::stack return_; + std::stack super_; std::stack template_; std::stack yield_; + std::stack 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, }; @@ -104,7 +113,10 @@ class _visible CYDriver { AutoPrimary, AutoDirect, AutoIndirect, - AutoMessage + AutoMessage, + AutoResolve, + AutoStruct, + AutoEnum, } mode_; private: @@ -112,12 +124,13 @@ class _visible CYDriver { 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);