-
Notifications
You must be signed in to change notification settings - Fork 0
/
tempEXtoPost.cpp
105 lines (105 loc) · 2.66 KB
/
tempEXtoPost.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Function to evaluate Postfix expression and return output
//string InfixToPostfix(string expression)
//{
// // Declaring a Stack from Standard template library in C++.
// stack<char> S;
// string postfix = ""; // Initialize postfix as empty string.
// for (int i = 0; i < expression.length(); i++) {
//
// // Scanning each character from left.
// // If character is a delimitter, move on.
// if (expression[i] == ' ' || expression[i] == ',') continue;
//
// // If character is operator, pop two elements from stack, perform operation and push the result back.
// else if (IsOperator(expression[i]))
// {
// while (!S.empty() && S.top() != '(' && HasHigherPrecedence(S.top(), expression[i]))
// {
// postfix += S.top();
// S.pop();
// }
// S.push(expression[i]);
// }
// // Else if character is an operand
// else if (IsOperand(expression[i]))
// {
// postfix += expression[i];
// }
//
// else if (expression[i] == '(')
// {
// S.push(expression[i]);
// }
//
// else if (expression[i] == ')')
// {
// while (!S.empty() && S.top() != '(') {
// postfix += S.top();
// S.pop();
// }
// S.pop();
// }
// }
//
// while (!S.empty()) {
// postfix += S.top();
// S.pop();
// }
//
// return postfix;
//}
//
//// Function to verify whether a character is english letter or numeric digit.
//// We are assuming in this solution that operand will be a single character
//bool IsOperand(char C)
//{
// if (C >= '0' && C <= '9') return true;
// if (C >= 'a' && C <= 'z') return true;
// if (C >= 'A' && C <= 'Z') return true;
// return false;
//}
//
//// Function to verify whether a character is operator symbol or not.
//
//
//// Function to verify whether an operator is right associative or not.
//int IsRightAssociative(char op)
//{
// if (op == '$') return true;
// return false;
//}
//
//// Function to get weight of an operator. An operator with higher weight will have higher precedence.
//int GetOperatorWeight(char op)
//{
// int weight = -1;
// switch (op)
// {
// case '+':
// case '-':
// weight = 1;
// case '*':
// case '/':
// weight = 2;
// case '$':
// weight = 3;
// }
// return weight;
//}
//
//// Function to perform an operation and return output.
//int HasHigherPrecedence(char op1, char op2)
//{
// int op1Weight = GetOperatorWeight(op1);
// int op2Weight = GetOperatorWeight(op2);
//
// // If operators have equal precedence, return true if they are left associative.
// // return false, if right associative.
// // if operator is left-associative, left one should be given priority.
// if (op1Weight == op2Weight)
// {
// if (IsRightAssociative(op1)) return false;
// else return true;
// }
// return op1Weight > op2Weight ? true : false;
//}