aboutsummaryrefslogtreecommitdiff
path: root/Parser.java
diff options
context:
space:
mode:
authorkrolxon <krolyxon@tutanota.com>2024-02-16 00:09:35 +0530
committerkrolxon <krolyxon@tutanota.com>2024-02-16 00:09:35 +0530
commit29eeb5191923e2f1e590b9ad28683f7458e736b5 (patch)
treeeb602c91e380e02f00a1cb63124d9109fc99638a /Parser.java
parentc62432ebdacb54f58b0908f11879235d15460cf0 (diff)
change how your interact with Parser
Diffstat (limited to 'Parser.java')
-rw-r--r--Parser.java18
1 files changed, 12 insertions, 6 deletions
diff --git a/Parser.java b/Parser.java
index 074a6e0..bd2cde9 100644
--- a/Parser.java
+++ b/Parser.java
@@ -8,13 +8,15 @@ import java.util.StringJoiner;
public class Parser {
private String expr;
+ private String postfix;
private Stack<Character> operatorStack;
public Parser(String infixExpr) {
expr = infixExpr.trim().replaceAll("\\s", ""); // remove whitespaces
+ postfix = toPostFix();
}
- public static boolean isOperand(char c) {
+ private boolean isOperand(char c) {
switch (c) {
case '0':
case '1':
@@ -32,11 +34,11 @@ public class Parser {
}
}
- public static boolean isOperand(String c) {
+ private boolean isOperand(String c) {
return isOperand(c.charAt(0));
}
- public int getPresedence(char c) {
+ private int getPresedence(char c) {
switch (c) {
case '^':
return 3;
@@ -53,7 +55,7 @@ public class Parser {
}
}
- public boolean hasLeftAssociativity(char c) {
+ private boolean hasLeftAssociativity(char c) {
if (c == '^') {
return false;
} else {
@@ -61,7 +63,7 @@ public class Parser {
}
}
- public String toPostFix() {
+ private String toPostFix() {
operatorStack = new Stack<>();
StringJoiner output = new StringJoiner(" ");
StringBuilder operand = new StringBuilder();
@@ -136,7 +138,7 @@ public class Parser {
}
}
- public double evalExpr(String postfix) {
+ public double eval() {
Stack<Double> stack = new Stack<Double>();
for (String c : postfix.split(" ")) {
if (isOperand(c)) {
@@ -149,4 +151,8 @@ public class Parser {
}
return stack.pop();
}
+
+ public String getPostfix() {
+ return postfix;
+ }
}