X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/a5662a5364816f852acb056d5c2b2fc94e0c0a5c..2b1c9594666c525586f1956c064d60ea2e7a0a3b:/Driver.hpp diff --git a/Driver.hpp b/Driver.hpp index 50d513c..dce9213 100644 --- a/Driver.hpp +++ b/Driver.hpp @@ -29,33 +29,48 @@ #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 { + CYMarkScript, + CYMarkModule, +}; class _visible CYDriver { public: CYPool &pool_; void *scanner_; + std::vector buffer_; + bool tail_; + 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_; - struct { - bool AtImplementation; - bool Function; - bool OpenBrace; - bool NewLine; - } no_; - - std::istream &data_; + std::streambuf &data_; int debug_; bool strict_; - bool commented_; + bool highlight_; enum Condition { - RegExpCondition, XMLContentCondition, XMLTagCondition, }; @@ -70,7 +85,7 @@ class _visible CYDriver { typedef std::vector Errors; - CYProgram *program_; + CYScript *script_; Errors errors_; bool auto_; @@ -105,13 +120,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(); + bool Parse(CYMark mark = CYMarkScript); void Replace(CYOptions &options); - Condition GetCondition(); + void SetRegEx(bool equal); void SetCondition(Condition condition); void PushCondition(Condition condition);