diff options
| author | krolxon <krolyxon@tutanota.com> | 2024-02-16 00:09:35 +0530 |
|---|---|---|
| committer | krolxon <krolyxon@tutanota.com> | 2024-02-16 00:09:35 +0530 |
| commit | 29eeb5191923e2f1e590b9ad28683f7458e736b5 (patch) | |
| tree | eb602c91e380e02f00a1cb63124d9109fc99638a /Parser.java | |
| parent | c62432ebdacb54f58b0908f11879235d15460cf0 (diff) | |
change how your interact with Parser
Diffstat (limited to 'Parser.java')
| -rw-r--r-- | Parser.java | 18 |
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; + } } |
