7 #include "TocParser.h"
\r
19 struct VariableExpr;
\r
20 struct BracketsExpr;
\r
21 struct OperatorExpr;
\r
41 std::vector<Variable> variables;
\r
42 std::vector<Stmt> statements;
\r
47 std::vector<Variable> parameters;
\r
53 std::vector<Variable> members;
\r
54 std::vector<Function> methods;
\r
58 std::vector<Variable> variables;
\r
59 std::vector<Struct> structs;
\r
60 std::vector<Function> functions;
\r
63 enum class ExprType {
\r
64 Call, Literal, Variable, Brackets, Operator, Dot
\r
69 std::vector<Expr> arguments;
\r
72 struct LiteralExpr {
\r
76 struct VariableExpr {
\r
80 struct BracketsExpr {
\r
82 BracketsExpr(const BracketsExpr &) {}
\r
83 BracketsExpr & operator=(const BracketsExpr &) {return *this;};
\r
84 std::unique_ptr<Expr> lexpr;
\r
85 std::unique_ptr<Expr> rexpr;
\r
88 enum class OperatorType {
\r
89 Plus, Minus, Multiply, Divide,
\r
91 LessThan, GreaterThan
\r
94 struct OperatorExpr {
\r
96 OperatorExpr(const OperatorExpr &) {}
\r
97 OperatorExpr & operator=(const OperatorExpr &) {return *this;};
\r
98 std::unique_ptr<Expr> lexpr;
\r
99 std::unique_ptr<Expr> rexpr;
\r
105 DotExpr(const DotExpr &) {}
\r
106 DotExpr & operator=(const DotExpr &) {return *this;};
\r
107 std::unique_ptr<Expr> lexpr;
\r
115 LiteralExpr _literal;
\r
116 VariableExpr _variable;
\r
117 BracketsExpr _brackets;
\r
118 OperatorExpr _operator;
\r
122 enum class StmtType {
\r
123 If, While, Return, Assign, Expr
\r
136 struct ReturnStmt {
\r
140 struct AssignStmt {
\r
150 ReturnStmt _return;
\r
151 AssignStmt _assign;
\r