Mercurial > hg > Members > nobuyasu > SampleSource
view Bison-Flex/CALC/Bison-Flex/EUC/#calc-driver.cpp# @ 0:db40c85cad7a default tip
upload sample source
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 09 May 2011 03:11:59 +0900 |
parents | |
children |
line wrap: on
line source
#include <iostream> #include <iomanip> #include "calc-driver.h" #include "calc-parser.hh" // ₯³₯σ₯Ή₯Θ₯ι₯―₯Ώ calc_driver::calc_driver() { } // ₯Η₯Ή₯Θ₯ι₯―₯Ώ calc_driver::~calc_driver() { } // ·Χ»» bool calc_driver::calc(const std::string &f) { file = f; scan_begin(); // ₯Ή₯₯γ₯Κ‘Ό½ι΄ό²½ yy::calc_parser parser(*this); // ₯Ρ‘Ό₯΅‘ΌΉ½ΓΫ int result = parser.parse(); // Ή½ΚΈ²ςΐΟ scan_end(); // ₯Ή₯₯γ₯Κ‘Ό½ͺΞ» if (result != 0) return false; // ₯Ρ‘Ό₯΅‘Ό₯¨₯ι‘Ό return true; } // ₯¨₯ι‘Ό₯α₯Γ₯»‘Ό₯Έ€ς½ΠΞΟ void calc_driver::error(const std::string& m) { std::cerr << m << std::endl; } // ΒεΖώ½θΝύ void calc_driver::assign(const std::string *value, cnode *node) { values[*value] = node->expr(this); delete value; // Έε»ΟΛφ€ΟΌ«Κ¬€ΗΉΤ€¦ delete node; } void calc_driver::print(cnode *node) { std::cout << node->expr(this) << std::endl; delete node; } struct list_action { void operator()(const std::pair<std::string, int> &it) { std::cout << it.first << " = " << it.second << std::endl; } } ; void calc_driver::list() { std::for_each(values.begin(), values.end(), list_action()); }