blob: 9e6118b6ee9f31a1926300d1e73c79bfaea1534c [file] [log] [blame]
// (C) Copyright Tobias Schwinger
//
// Use modification and distribution are subject to the boost Software License,
// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
//------------------------------------------------------------------------------
#include <string>
#include <iostream>
#include <stdexcept>
#include "interpreter.hpp"
void echo(std::string const & s)
{
std::cout << s << std::endl;
}
void add(int a, int b)
{
std::cout << a + b << std::endl;
}
void repeat(std::string const & s, int n)
{
while (--n >= 0) std::cout << s;
std::cout << std::endl;
}
int main()
{
example::interpreter interpreter;
interpreter.register_function("echo", & echo);
interpreter.register_function("add", & add);
interpreter.register_function("repeat", & repeat);
std::string line = "nonempty";
while (! line.empty())
{
std::cout << std::endl << "] ", std::getline(std::cin,line);
try
{
interpreter.parse_input(line);
}
catch (std::runtime_error &error)
{
std::cerr << error.what() << std::endl;
}
}
return 0;
}