18 class _nout
exprMaker:
public typeProvidable,
public clonable {
33 me& setSrcFile(
const srcFile& s);
37 const point& getPos()
const;
38 const srcFile& getSrcFile()
const;
40 tstr<src> makeSrc(
const std::string& name)
const;
45 template <
typename T,
typename... Args> T*
birth(
const std::string& name,
const Args&...
args)
const {
47 if(_file) _setSrc(*
ret, *makeSrc(name));
58 template <
typename T,
typename... Args> T*
make(
const Args&...
args)
const {
60 if(_file) _setSrc(*
ret, *makeSrc(
""));
84 func* _makeFunc(
const std::string& name,
const narr&
stmts)
const;
Function or object evaluation arguments
Definition args.hpp:22
Assignment expression
Definition assignExpr.hpp:19
Definition block for organizing object definitions
Definition defBlock.hpp:16
Variable definition expression base class
Definition defVarExpr.hpp:18
Factory for creating expressions with source location information
Definition exprMaker.hpp:18
T * make(const Args &... args) const
Creates a new expression object without a specific name and sets its source location.
Definition exprMaker.hpp:58
func * makeCommonFunc(const defBlock &blk) const
Creates a "common" function associated with a definition block.
T * birth(const std::string &name, const Args &... args) const
Definition exprMaker.hpp:45
func * makeExpandFunc(const defBlock &blk) const
Creates a function specifically for handling "expand" logic within definition blocks.
assignExpr * makeAssignExprFrom(const defVarExpr &e) const
Creates an assignment expression from a variable definition expression.
Function definition in byeol language
Definition func.hpp:38
Base class for all AST nodes in the byeol language
Definition node.hpp:195
Source code file information
Definition srcFile.hpp:14
Source location information
Definition src.hpp:15