Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. public class HelloWorld {
  2. public static void main(String[] args){
  3. Queue postfix = new LinkedList();
  4.  
  5. String str = "(p^r)^q";
  6. //Stack stk = new Stack();
  7. // String token = "(";
  8. /// stk.push(token);
  9. //stk.push("z");
  10. //System.out.println("(".equals(stk.peek()));
  11. // boolean check = isBracket(token);
  12. System.out.println(getPostfix(str));
  13.  
  14. // System.out.println("(".equals(stk.peek()));
  15.  
  16. }
  17. public static boolean isVar(String token){
  18. return (Character.isAlphabetic(token.charAt(0)));
  19. }
  20. public static boolean isOperator(String token){
  21. String operators="!~>^.|";
  22. return operators.contains(token);
  23. }
  24. public static boolean isBracket(String token){
  25. String brackets = "(){}[]";
  26. return brackets.contains(token);
  27. }
  28. public static int getPrecedence(String token){
  29. int precedence;
  30. switch(token){
  31. case "~" :
  32. case "! ": precedence = 5; break;
  33.  
  34. case "&&":
  35. case "+" :
  36. case "^" : precedence = 4; break;
  37.  
  38. case "||":
  39. case "V" :
  40. case "." : precedence = 3; break;
  41.  
  42. case ">" : precedence = 2; break;
  43.  
  44. case "=" :
  45. case "#" : precedence = 1; break;
  46.  
  47. default : precedence = -1; break;
  48.  
  49. }
  50. return precedence;
  51. }
  52. public static Queue getPostfix(String raw){
  53. String[] input=raw.split("(?<=\\G.)");
  54.  
  55. Stack stk = new Stack();
  56. Queue postfix = new LinkedList();
  57.  
  58. for(String token : input){
  59. if(isVar(token)){
  60. postfix.add(token);
  61. }
  62. if(isOperator(token)){
  63. while(!stk.isEmpty() && (getPrecedence((String)stk.peek())) <= getPrecedence(token)){
  64. postfix.add(stk.peek());
  65. stk.pop();
  66. }
  67. stk.add(token);
  68. }
  69. if(isBracket(token)){
  70. switch(token){
  71. case "(":
  72. case "[":
  73. case "{":
  74. stk.push(token);
  75. break;
  76. case ")":
  77. case "]":
  78. case "}":
  79.  
  80. }
  81. }
  82.  
  83. }
  84. while(!stk.isEmpty()){
  85. postfix.add(stk.peek());
  86. stk.pop();
  87. }
  88. return postfix;
  89. }
  90.  
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement