};\r
\r
struct Function {\r
+ Type returnType;\r
std::string name;\r
std::vector<Variable> parameters;\r
Body body;\r
};\r
\r
struct CallExpr {\r
- Function function;\r
+ std::string functionName;\r
std::vector<Expr> arguments;\r
};\r
\r
};\r
\r
struct BracketsExpr {\r
- BracketsExpr() {}\r
- BracketsExpr(const BracketsExpr &) {}\r
- BracketsExpr & operator=(const BracketsExpr &) {return *this;};\r
- std::unique_ptr<Expr> lexpr;\r
- std::unique_ptr<Expr> rexpr;\r
+ std::shared_ptr<Expr> lexpr;\r
+ std::shared_ptr<Expr> rexpr;\r
};\r
\r
enum class OperatorType {\r
};\r
\r
struct OperatorExpr {\r
- OperatorExpr() {}\r
- OperatorExpr(const OperatorExpr &) {}\r
- OperatorExpr & operator=(const OperatorExpr &) {return *this;};\r
- std::unique_ptr<Expr> lexpr;\r
- std::unique_ptr<Expr> rexpr;\r
+ std::shared_ptr<Expr> lexpr;\r
+ std::shared_ptr<Expr> rexpr;\r
OperatorType type;\r
};\r
\r
struct DotExpr {\r
- DotExpr() {}\r
- DotExpr(const DotExpr &) {}\r
- DotExpr & operator=(const DotExpr &) {return *this;};\r
- std::unique_ptr<Expr> lexpr;\r
+ std::shared_ptr<Expr> lexpr;\r
std::string name;\r
};\r
\r