defNestedFuncExpr.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include "core/ast/func.hpp"
5#include "core/ast/expr.hpp"
6
7namespace by {
13 class _nout defNestedFuncExpr: public expr {
14 BY(CLASS(defNestedFuncExpr, expr, expr::exprType), VISIT())
15 friend class visitor;
16
17 public:
18 defNestedFuncExpr(const func& org);
19
20 public:
21 using super::run;
22 str run(const args& a) override;
23
24 const func& getOrigin() const BY_CONST_FUNC(_getOrigin())
25
26 str getEval() const override;
27
28 private:
29 scope* _cloneLocalScope(frame& fr) const;
30 func& _getOrigin();
31
32 private:
33 tstr<func> _org;
34 };
35}
Function call arguments container.
Definition: args.hpp:13
Nested func definition expression (lambda)
Definition: defNestedFuncExpr.hpp:13
Type information for expression nodes
Definition: expr.hpp:22
Base class for all expressions.
Definition: expr.hpp:15
Execution frame for byeol runtime.
Definition: frame.hpp:29
Function definition in byeol language.
Definition: func.hpp:20
Base visitor class for AST traversal.
Definition: visitor.hpp:20