]> git.saurik.com Git - cycript.git/blobdiff - Syntax.hpp
Move all "regular" LexPushInOff/LexPopIn to lexer.
[cycript.git] / Syntax.hpp
index db2b81662b5bf9fdd81cb2c0d58dc003de490a69..f11c2f29b8632c5363e28d176ed3d358492aa2ca 100644 (file)
@@ -896,6 +896,12 @@ struct CYThis :
 struct CYBoolean :
     CYTrivial
 {
+    CYPrecedence(4)
+
+    virtual bool RightHand() const {
+        return true;
+    }
+
     virtual bool Value() const = 0;
     virtual void Output(CYOutput &out, CYFlags flags) const;
 };
@@ -1021,8 +1027,8 @@ struct CYAssignment :
     {
     }
 
-    void SetLeft(CYTarget *lhs) {
-        lhs_ = lhs;
+    void SetRight(CYExpression *rhs) {
+        rhs_ = rhs;
     }
 
     virtual const char *Operator() const = 0;
@@ -1261,6 +1267,8 @@ struct CYProperty :
     {
     }
 
+    virtual bool Update() const;
+
     CYProperty *ReplaceAll(CYContext &context, CYBuilder &builder, CYExpression *self, bool update);
     void Replace(CYContext &context, CYBuilder &builder, CYExpression *self, bool protect);
 
@@ -1328,6 +1336,26 @@ struct CYForIn :
     virtual void Output(CYOutput &out, CYFlags flags) const;
 };
 
+struct CYForInitialized :
+    CYStatement
+{
+    CYDeclaration *declaration_;
+    CYExpression *set_;
+    CYStatement *code_;
+
+    CYForInitialized(CYDeclaration *declaration, CYExpression *set, CYStatement *code) :
+        declaration_(declaration),
+        set_(set),
+        code_(code)
+    {
+    }
+
+    CYCompact(Long)
+
+    virtual CYStatement *Replace(CYContext &context);
+    virtual void Output(CYOutput &out, CYFlags flags) const;
+};
+
 struct CYForOf :
     CYStatement
 {
@@ -1695,6 +1723,8 @@ struct CYPropertyMethod :
     {
     }
 
+    bool Update() const override;
+
     virtual CYFunctionExpression *Constructor();
 
     virtual void Replace(CYContext &context, CYBuilder &builder, CYExpression *self, CYExpression *name, bool protect);