generalizer.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include "core/ast/params.hpp"
6
7namespace by {
8
13 class _nout generalizer: public visitor {
14 BY(CLASS(generalizer, visitor))
15
16 public:
18 me& add(const obj& origin);
19 me& add(const param& newParam);
20 me& add(const params& newParams);
21
22 using super::onVisit;
23 nbool onVisit(const visitInfo& i, asExpr& me, nbool) override;
24 nbool onVisit(const visitInfo& i, blockExpr& me, nbool) override;
25 nbool onVisit(const visitInfo& i, defVarExpr& me, nbool) override;
26 nbool onVisit(const visitInfo& i, runExpr& me, nbool) override;
27 nbool onVisit(const visitInfo& i, baseFunc& me, nbool) override;
28 nbool onVisit(const visitInfo& i, ctor& me, nbool) override;
29 nbool onVisit(const visitInfo& i, baseCtor& me, nbool) override;
30 nbool onVisit(const visitInfo& i, params& me);
31 nbool onVisit(const visitInfo& i, FBOExpr& me, nbool) override;
32 nbool onVisit(const visitInfo& i, baseObj& me, nbool) override;
33 nbool onVisit(const visitInfo& i, getGenericExpr& me, nbool) override;
34
35 private:
36 str _findOrigin(const node& toReplace) const;
37 str _findOrigin(const node* it) const BY_SIDE_FUNC(_findOrigin);
38 str _findOriginFrom(const getExpr& expr) const;
39 str _findOriginFrom(const getGenericExpr& expr) const;
40 std::string _makeParamsKey() const;
41
42 private:
43 params _params;
44 mutable std::string _paramsKey;
45 tstr<obj> _org;
46 };
47} // namespace by
Fundamental Binary Operation expression.
Definition: FBOExpr.hpp:17
Type casting expression.
Definition: asExpr.hpp:16
Base class for all constructor types.
Definition: baseCtor.hpp:12
Base class for all function types.
Definition: baseFunc.hpp:18
Base class for all objects in byeol language.
Definition: baseObj.hpp:24
Block expression containing multiple statements.
Definition: blockExpr.hpp:15
Constructor function for byeol objects.
Definition: ctor.hpp:11
Variable definition expression base class.
Definition: defVarExpr.hpp:17
Base class for all expressions.
Definition: expr.hpp:15
Visitor for generic type parameter replacement.
Definition: generalizer.hpp:13
me & add(const obj &origin)
Expression for property and method access.
Definition: getExpr.hpp:17
Generic type access expression.
Definition: getGenericExpr.hpp:15
Base class for all AST nodes in byeol language.
Definition: node.hpp:30
Managed object in byeol programming environment.
Definition: obj.hpp:19
User-defined class origin in byeol language.
Definition: origin.hpp:17
Function parameter definition.
Definition: param.hpp:13
Function parameter list container.
Definition: params.hpp:15
Function/method call expression.
Definition: runExpr.hpp:14
Visitor context information.
Definition: visitInfo.hpp:10
Base visitor class for AST traversal.
Definition: visitor.hpp:20