From 57aeacab2e819d53f6343e5502ef949aabff4402 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Thu, 9 Jul 2009 17:02:46 +0000 Subject: [PATCH] Fixed up annotation printing. Added help command to eval --- chaiscript/main.cpp | 33 +++++++++++++++++++++++---------- dispatchkit/dispatchkit.hpp | 2 -- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/chaiscript/main.cpp b/chaiscript/main.cpp index 370c1e5..9bf6feb 100644 --- a/chaiscript/main.cpp +++ b/chaiscript/main.cpp @@ -2,6 +2,13 @@ #include "chaiscript.hpp" +void print_help() { + std::cout << "ChaiScript evaluator. To evaluate and expression, type it and press ." << std::endl; + std::cout << "Additionally, you can inspect the runtime system using:" << std::endl; + std::cout << " dump_system() - outputs all functions registered to the system" << std::endl; + std::cout << " dump_object(x) - dumps information about the given symbol" << std::endl; +} + int main(int argc, char *argv[]) { std::string input; @@ -15,17 +22,23 @@ int main(int argc, char *argv[]) { dispatchkit::Boxed_Value val; - val = chai.evaluate_string(input); - - if (val.get_type_info().m_bare_type_info && *(val.get_type_info().m_bare_type_info) != typeid(void)) { - - try { - dispatchkit::dispatch(chai.get_eval_engine().get_function("print"), dispatchkit::Param_List_Builder() << val); - } catch (const std::runtime_error &e) { - //do nothing for the time being - } - + if (input == "help") { + print_help(); } + else { + val = chai.evaluate_string(input); + + if (val.get_type_info().m_bare_type_info && *(val.get_type_info().m_bare_type_info) != typeid(void)) { + + try { + dispatchkit::dispatch(chai.get_eval_engine().get_function("print"), dispatchkit::Param_List_Builder() << val); + } catch (const std::runtime_error &e) { + std::cout << e.what() << std::endl; + } + + } + } + std::cout << "eval> "; std::getline(std::cin, input); } diff --git a/dispatchkit/dispatchkit.hpp b/dispatchkit/dispatchkit.hpp index 41c5b8c..7c19650 100644 --- a/dispatchkit/dispatchkit.hpp +++ b/dispatchkit/dispatchkit.hpp @@ -289,9 +289,7 @@ namespace dispatchkit std::string annotation = f.second->annotation(); if (annotation.size() > 0) { - std::cout << "##############" << std::endl; std::cout << annotation; - std::cout << "##############" << std::endl; } dump_type(params.front(), e); std::cout << " " << f.first << "(";