1
2
3
4
5
6 #ifndef CMAJOR_BINDER_EXPRESSION_BINDER_INCLUDED
7 #define CMAJOR_BINDER_EXPRESSION_BINDER_INCLUDED
8 #include <sngcm/ast/Node.hpp>
9 #include <cmajor/symbols/Scope.hpp>
10
11 namespace cmajor { namespace binder {
12
13 using sngcm::ast::Node;
14 using cmajor::symbols::ContainerScope;
15
16 class BoundCompileUnit;
17 class BoundFunction;
18 class BoundExpression;
19 class StatementBinder;
20
21 std::unique_ptr<BoundExpression> BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder);
22 std::unique_ptr<BoundExpression> BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder,
23 bool lvalue);
24 std::unique_ptr<BoundExpression> BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder,
25 bool lvalue, bool acceptFunctionGroupOrMemberExpression);
26 std::unique_ptr<BoundExpression> BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder,
27 bool lvalue, bool acceptFunctionGroupOrMemberExpression, bool acceptIncomplete);
28 std::unique_ptr<BoundExpression> BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder,
29 bool lvalue, bool acceptFunctionGroupOrMemberExpression, bool acceptIncomplete, bool moveTemporaryDestructorCalls);
30
31 } }
32
33 #endif // CMAJOR_BINDER_EXPRESSION_BINDER_INCLUDED