Flesh out parser and tracer usage cases

This commit is contained in:
Jason Turner
2016-10-28 13:36:10 -06:00
parent ffcd7e3a76
commit 359897a442
4 changed files with 48 additions and 3 deletions

View File

@@ -307,6 +307,10 @@ namespace chaiscript
}
}
parser::ChaiScript_Parser_Base &get_parser()
{
return *m_parser;
}
const Boxed_Value eval(const AST_NodePtr &t_ast)
{

View File

@@ -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;

View File

@@ -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;
}
}