From 57ab42eabb5a9a7ddf7d6a416bf18eca63336a87 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Mon, 10 Apr 2017 21:41:32 +0200 Subject: Rewrite in D, support for word definitions --- repl.cc | 99 ----------------------------------------------------------------- 1 file changed, 99 deletions(-) delete mode 100644 repl.cc (limited to 'repl.cc') diff --git a/repl.cc b/repl.cc deleted file mode 100644 index 31d8b07..0000000 --- a/repl.cc +++ /dev/null @@ -1,99 +0,0 @@ -#include - -#include -#include -#include - -#include -#include - -#include -#include - -bool is_number(const std::string& token) { - return std::all_of( - token.begin(), - token.end(), - [](char c) { return std::isdigit(c); } - ); -} - -int main(int, char*[]) { - std::stack stack; - std::string token; - - std::unordered_map> builtin{ - { - "+", [&stack]() { - const int b = stack.top(); - stack.pop(); - const int a = stack.top(); - stack.pop(); - - stack.push(a + b); - } - }, - { - "-", [&stack]() { - const int b = stack.top(); - stack.pop(); - const int a = stack.top(); - stack.pop(); - - stack.push(a - b); - } - }, - { - "*", [&stack]() { - const int b = stack.top(); - stack.pop(); - const int a = stack.top(); - stack.pop(); - - stack.push(a * b); - } - }, - { - ".", [&stack]() { - std::cout << stack.top() << std::endl; - } - }, - { - "swp", [&stack]() { - const int b = stack.top(); - stack.pop(); - const int a = stack.top(); - stack.pop(); - - stack.push(b); - stack.push(a); - } - }, - { - "dup", [&stack]() { - stack.push(stack.top()); - } - }, - { - "del", [&stack]() { - stack.pop(); - } - } - }; - - while ( std::cin.good() ) { - if ( std::cin >> token ) { - if ( is_number(token) ) { - stack.push(std::atoi(token.c_str())); - } else { - const auto& impl = builtin.find(token); - - if ( impl != builtin.end() ) { - impl->second(); - } - } - } - } - - return 0; -} -- cgit v1.2.3