Flesh out parser and tracer usage cases
This commit is contained in:
@@ -307,6 +307,10 @@ namespace chaiscript
|
||||
}
|
||||
}
|
||||
|
||||
parser::ChaiScript_Parser_Base &get_parser()
|
||||
{
|
||||
return *m_parser;
|
||||
}
|
||||
|
||||
const Boxed_Value eval(const AST_NodePtr &t_ast)
|
||||
{
|
||||
|
@@ -355,6 +355,16 @@ namespace chaiscript
|
||||
m_match_stack.reserve(2);
|
||||
}
|
||||
|
||||
Tracer &get_tracer()
|
||||
{
|
||||
return m_tracer;
|
||||
}
|
||||
|
||||
Optimizer &get_optimizer()
|
||||
{
|
||||
return m_optimizer;
|
||||
}
|
||||
|
||||
ChaiScript_Parser(const ChaiScript_Parser &) = default;
|
||||
ChaiScript_Parser &operator=(const ChaiScript_Parser &) = delete;
|
||||
ChaiScript_Parser(ChaiScript_Parser &&) = default;
|
||||
|
@@ -10,10 +10,11 @@
|
||||
namespace chaiscript {
|
||||
namespace eval {
|
||||
|
||||
struct Noop_Tracer
|
||||
|
||||
struct Noop_Tracer_Detail
|
||||
{
|
||||
template<typename T>
|
||||
static void trace(const chaiscript::detail::Dispatch_State &, const AST_Node_Impl<T> *)
|
||||
void trace(const chaiscript::detail::Dispatch_State &, const AST_Node_Impl<T> *)
|
||||
{
|
||||
}
|
||||
};
|
||||
@@ -28,7 +29,7 @@ namespace chaiscript {
|
||||
}
|
||||
|
||||
void do_trace(const chaiscript::detail::Dispatch_State &ds, const AST_Node_Impl<Tracer<T...>> *node) {
|
||||
(void)std::initializer_list<int>{ (T::trace(ds, node), 0)... };
|
||||
(void)std::initializer_list<int>{ (static_cast<T&>(*this).trace(ds, node), 0)... };
|
||||
}
|
||||
|
||||
static void trace(const chaiscript::detail::Dispatch_State &ds, const AST_Node_Impl<Tracer<T...>> *node) {
|
||||
@@ -36,6 +37,8 @@ namespace chaiscript {
|
||||
}
|
||||
};
|
||||
|
||||
typedef Tracer<Noop_Tracer_Detail> Noop_Tracer;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user