bool _bool;\r
};\r
\r
+// TODO: accessExpr\r
struct IdentifierExpr {\r
std::string name;\r
};\r
};\r
\r
enum class UnaryOperatorType {\r
- Plus, Minus, IncrementPre, DecrementPre, IncrementPost, DecrementPost, LogicalNot, BitwiseNot, Dereference, AddressOf\r
+ Plus, Minus, IncrementPre, DecrementPre, IncrementPost, DecrementPost,\r
+ LogicalNot, BitwiseNot, Dereference, AddressOf,\r
+ COUNT\r
};\r
\r
enum class BinaryOperatorType {\r
Plus, Minus, Multiply, Divide, Modulo, BitwiseAnd, BitwiseOr, BitwiseXor, LessThan, GreaterThan,\r
LeftShift, RightShift, LogicalAnd, LogicalOr, Equals, NotEquals, LessThanEquals, GreaterThanEquals, BitwiseAndEquals, BitwiseOrEquals, BitwiseXorEquals,\r
PlusEquals, MinusEquals, MultiplyEquals, DivideEquals, ModuloEquals,\r
- LeftShiftEquals, RightShiftEquals\r
+ LeftShiftEquals, RightShiftEquals,\r
+ COUNT\r
};\r
static std::string UnaryOperatorTypeStrings[] = {\r
"+", "-", "++", "--", "++", "--", "!", "~", "*", "&" };\r
};\r
\r
struct DotExpr {\r
- std::shared_ptr<Expr> lexpr;\r
+ std::shared_ptr<Expr> expr;\r
IdentifierExpr ident;\r
};\r
\r
+// TODO: paren expr\r
struct Expr {\r
ExprType type;\r
\r
std::vector<SwitchCase> cases;\r
};\r
\r
+// TODO: int i = 0 (var decl)\r
struct ForStmt {\r
- AssignStmt assign;\r
+ std::string varName;\r
+ std::shared_ptr<Expr> initValue;\r
std::shared_ptr<Expr> condition;\r
std::shared_ptr<Expr> action;\r
Body body;\r
};\r
\r
struct AssignStmt {\r
- Expr lexpr;\r
- Expr rexpr;\r
+ std::string name;\r
+ Expr expr;\r
};\r
\r
struct ReturnStmt {\r