comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:db40c85cad7a
1 #include <iostream>
2 #include <iomanip>
3 #include "calc-driver.h"
4 #include "calc-parser.hh"
5
6 // ’₯³’₯σ’₯Ή’₯Θ’₯ι’₯―’₯Ώ
7
8 calc_driver::calc_driver()
9 {
10 }
11
12 // ’₯Η’₯Ή’₯Θ’₯ι’₯―’₯Ώ
13
14 calc_driver::~calc_driver()
15 {
16 }
17
18 // ’·Χ’»»
19
20 bool calc_driver::calc(const std::string &f)
21 {
22 file = f;
23 scan_begin(); // ’₯Ή’₯­’₯γ’₯Κ’‘Ό’½ι’΄ό’²½
24 yy::calc_parser parser(*this); // ’₯Ρ’‘Ό’₯΅’‘Ό’Ή½’ΓΫ
25 int result = parser.parse(); // ’Ή½’ΚΈ’²ς’ΐΟ
26 scan_end(); // ’₯Ή’₯­’₯γ’₯Κ’‘Ό’½ͺ’Ξ»
27
28 if (result != 0)
29 return false; // ’₯Ρ’‘Ό’₯΅’‘Ό’₯¨’₯ι’‘Ό
30 return true;
31 }
32
33 // ’₯¨’₯ι’‘Ό’₯α’₯Γ’₯»’‘Ό’₯Έ’€ς’½Π’ΞΟ
34
35 void calc_driver::error(const std::string& m)
36 {
37 std::cerr << m << std::endl;
38 }
39
40 // ’Βε’Ζώ’½θ’Νύ
41
42 void calc_driver::assign(const std::string *value, cnode *node)
43 {
44 values[*value] = node->expr(this);
45 delete value; // ’Έε’»Ο’Λφ’€Ο’Ό«’Κ¬’€Η’ΉΤ’€¦
46 delete node;
47 }
48
49 void calc_driver::print(cnode *node)
50 {
51 std::cout << node->expr(this) << std::endl;
52 delete node;
53 }
54
55 struct list_action {
56 void operator()(const std::pair<std::string, int> &it)
57 {
58 std::cout << it.first << " = " << it.second << std::endl;
59 }
60 } ;
61
62 void calc_driver::list()
63 {
64 std::for_each(values.begin(), values.end(), list_action());
65 }