Loading...
Searching...
No Matches
evalExpr.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include "core/ast/expr.hpp"
5
6namespace by {
7
8 class visitor;
9
15 class _nout evalExpr: public expr {
17
18 public:
19 evalExpr(const node* meObj, const node& subject, const args& a);
25 evalExpr(const node* meObj, const args& a);
26
27 public:
28 using super::eval;
29 str eval(const args& a) override;
30
31 str infer() const override;
32
33 node* getMe();
34 const node* getMe() const BY_CONST_FUNC(getMe())
35
36 void setMe(const node& newMe);
37 void setMe(const node* it) BY_SIDE_FUNC(setMe);
38
39 node& getSubj();
40 const node& getSubj() const;
41
42 void setSubj(const node& new1);
43 void setSubj(const node* it) BY_SIDE_FUNC(setSubj);
44
45 args& getArgs();
46 const args& getArgs() const;
47
48 void onCloneDeep(const clonable& from) override;
49
50 private:
51 str _getSub(str me) const;
52
53 private:
54 str _me;
55 args _args;
56 mutable str _subject;
57 };
58} // namespace by
Function or object evaluation arguments.
Definition args.hpp:22
Function/method call expression.
Definition evalExpr.hpp:15
str infer() const override
Type information for expression nodes
Definition expr.hpp:45
Base class for all expressions.
Definition expr.hpp:36
Base class for all AST nodes in the byeol language.
Definition node.hpp:195
Definition tnarr.hpp:9
to Top