main.cxx 725 B

1234567891011121314151617181920212223242526272829303132
  1. //
  2. // main.cpp
  3. // dice-roll
  4. //
  5. // Created by Sam Jaffe on 12/1/18.
  6. // Copyright © 2018 Sam Jaffe. All rights reserved.
  7. //
  8. #include <iostream>
  9. #include "dice-roll/exception.h"
  10. void eval(std::string const & str) {
  11. try {
  12. auto d = dice::from_string(str);
  13. auto rs = dice::roller()(d);
  14. std::cout << std::make_pair(d, rs) << '\n';
  15. } catch (dice::unexpected_token const & ut) {
  16. std::cerr << "Error in roll: '" << str << "': " << ut.what() << "\n";
  17. std::cerr << " " << ut.pointer(str.size() + 1) << std::endl;
  18. }
  19. }
  20. int main(int, const char **) {
  21. std::string line;
  22. std::cout << "> ";
  23. while (std::getline(std::cin, line)) {
  24. eval(line);
  25. std::cout << "> ";
  26. }
  27. return 0;
  28. }