/* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2010 Jay Freeman (saurik)
+ * Copyright (C) 2009-2012 Jay Freeman (saurik)
*/
/* GNU Lesser General Public License, Version 3 {{{ */
}
void AddPrev(CYStatement *statement) {
- CYSetLast(statement, statements_);
+ CYSetLast(statement) = statements_;
statements_ = statement;
}
void *scanner_;
CYState state_;
+ bool nobrace_;
std::stack<bool> in_;
const char *data_;
}
void AddPrev(CYExpression *expression) {
- CYSetLast(expression, expressions_);
+ CYSetLast(expression) = expressions_;
expressions_ = expression;
}
virtual CYExpression *Replace(CYContext &context);
void Output(CYOutput &out, CYFlags flags) const;
+
+ virtual CYExpression *Primitive(CYContext &context);
};
struct CYDeclaration;
CYNext<CYComprehension>,
CYThing
{
+ CYComprehension(CYComprehension *next = NULL) :
+ CYNext<CYComprehension>(next)
+ {
+ }
+
virtual const char *Name() const = 0;
virtual CYFunctionParameter *Parameter(CYContext &context) const = 0;
CYIdentifier *name_;
CYExpression *set_;
- CYForInComprehension(CYIdentifier *name, CYExpression *set) :
+ CYForInComprehension(CYIdentifier *name, CYExpression *set, CYComprehension *next = NULL) :
+ CYComprehension(next),
name_(name),
set_(set)
{
virtual void Output(CYOutput &out) const;
};
-struct CYForEachInComprehension :
+struct CYForOfComprehension :
CYComprehension
{
CYIdentifier *name_;
CYExpression *set_;
- CYForEachInComprehension(CYIdentifier *name, CYExpression *set) :
+ CYForOfComprehension(CYIdentifier *name, CYExpression *set, CYComprehension *next = NULL) :
+ CYComprehension(next),
name_(name),
set_(set)
{
virtual void Output(CYOutput &out, CYFlags flags) const;
};
-struct CYForEachIn :
+struct CYForOf :
CYStatement
{
CYForInInitialiser *initialiser_;
CYExpression *set_;
CYStatement *code_;
- CYForEachIn(CYForInInitialiser *initialiser, CYExpression *set, CYStatement *code) :
+ CYForOf(CYForInInitialiser *initialiser, CYExpression *set, CYStatement *code) :
initialiser_(initialiser),
set_(set),
code_(code)