-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_expressio.cpp
46 lines (42 loc) · 1.33 KB
/
test_expressio.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using namespace std;
#include <iostream>
#include "expressio.hpp"
int main() {
expressio expr(false);
string tipus;
string sortida;
while (cin >> tipus) { // Llegir format d'entrada
if (tipus == "//") {
string s;
getline(cin, s); // Llegir la resta del comentari
cout << "//" << s << endl;
} else {
if (tipus == "INFIXA")
expr.llegir_infixa(cin);
else if (tipus == "POSTFIXA")
expr.llegir_postfixa(cin);
expr = expr.avalua();
cin >> sortida; // Llegir format de sortida.
if (sortida == "INFIXA")
cout << expr.infixa() << endl;
else if (sortida == "POSTFIXA")
cout << expr.postfixa() << endl;
else if (sortida == "OPERANDS") {
list<token> l = expr.operands();
for(list<token>::const_iterator it = l.begin(); it != l.end(); it++)
cout << *it << " ";
cout << endl;
} else if (sortida == "EXPANDEIX") {
// EXPANDEIX llegeix un token i una 2a expressió infixa,
// canvia els tokens de la 1a expressió per la 2a expressió
// i l'expressió resultant l'avalua i la mostra infixa
token t;
cin >> t;
expressio expr2(false);
expr2.llegir_infixa(cin);
expr = expr.expandeix(t, expr2).avalua();
cout << expr.infixa() << endl;
}
}
}
}