ArkScript
A small, fast, functional and scripting language for video games
|
Handles function macros. More...
#include <Function.hpp>
Public Member Functions | |
bool | applyMacro (Node &node, unsigned depth) override |
bool | canHandle (Node &node) override |
MacroExecutor (MacroProcessor *processor, unsigned debug=0) | |
Construct a new Macro Executor object. | |
Public Member Functions inherited from Ark::internal::MacroExecutor | |
MacroExecutor (MacroProcessor *processor, unsigned debug=0) | |
Construct a new Macro Executor object. | |
virtual | ~MacroExecutor ()=default |
Need a virtual destructor to correctly destroy object. | |
Private Member Functions | |
void | unify (const std::unordered_map< std::string, Node > &map, Node &target, Node *parent, std::size_t index=0, std::size_t unify_depth=0) |
Additional Inherited Members | |
Protected Member Functions inherited from Ark::internal::MacroExecutor | |
const Node * | findNearestMacro (const std::string &name) const |
Find the nearest macro matching a giving name. | |
void | applyMacroProxy (Node &node, unsigned depth) |
Apply a macro on a given node. | |
void | handleMacroNode (Node &node) const |
Registers macros based on their type, expand conditional macros. | |
bool | isTruthy (const Node &node) const |
Check if a node can be evaluated to true. | |
Node | evaluate (Node &node, unsigned depth, bool is_not_body) const |
Evaluate only the macros. | |
Static Protected Member Functions inherited from Ark::internal::MacroExecutor | |
static void | throwMacroProcessingError (const std::string &message, const Node &node) |
Throw a macro processing error. | |
Protected Attributes inherited from Ark::internal::MacroExecutor | |
unsigned int | m_debug |
MacroProcessor * | m_processor |
This is a non-owned pointer. | |
Handles function macros.
Definition at line 24 of file Function.hpp.
|
overridevirtual |
node | |
depth | depth of the macro processor evalution |
Implements Ark::internal::MacroExecutor.
Definition at line 16 of file Function.cpp.
References Ark::internal::MacroExecutor::applyMacroProxy(), Ark::internal::Node::constList(), Ark::internal::MacroExecutor::evaluate(), Ark::internal::MacroExecutor::findNearestMacro(), Ark::internal::getListNode(), Ark::internal::List, Ark::internal::Node::list(), Ark::internal::Language::macros, Ark::internal::Spread, Ark::internal::Node::string(), Ark::internal::Symbol, Ark::internal::MacroExecutor::throwMacroProcessingError(), unify(), and Ark::internal::Node::updateValueAndType().
|
nodiscardoverridevirtual |
node |
Implements Ark::internal::MacroExecutor.
Definition at line 11 of file Function.cpp.
References Ark::internal::Node::constList(), Ark::internal::List, Ark::internal::Node::nodeType(), and Ark::internal::Symbol.
|
explicit |
Construct a new Macro Executor object.
processor | |
debug |
Definition at line 37 of file Executor.cpp.
|
private |
Definition at line 90 of file Function.cpp.
References Ark::internal::Node::isListLike(), Ark::internal::List, Ark::internal::Node::list(), Ark::MaxMacroUnificationDepth, Ark::internal::Node::nodeType(), Ark::internal::Node::setNodeType(), Ark::internal::Spread, Ark::internal::Node::string(), Ark::internal::Symbol, Ark::internal::MacroExecutor::throwMacroProcessingError(), Ark::internal::typeToString(), and unify().
Referenced by applyMacro(), and unify().