Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. //Created by Amogh Kulkarni
  2.  
  3. private void fillTree() {
  4. //stack: > r > ^ q ! p p
  5. Deque<VariableNode> variableStack = new ArrayDeque<>();
  6. OperatorNode lastNode;
  7.  
  8. tree = new AbstractSyntaxTree(getOperatorNodeFromString(rpnStack.pop()));
  9.  
  10. while (!rpnStack.isEmpty()) {
  11. String token = rpnStack.peek();
  12.  
  13. if (isOperator(token)) {
  14. lastNode = getOperatorNodeFromString(rpnStack.pop());
  15.  
  16. if (!variableStack.isEmpty())
  17. lastNode.setLeftOperand(variableStack.pop());
  18. else if (!isOperator(rpnStack.peek()))
  19. lastNode.setLeftOperand(new VariableNode(rpnStack.peek()));
  20. else if (!rpnStack.isEmpty())
  21. lastNode.setLeftOperand(getOperatorNodeFromString(rpnStack.peek()));
  22.  
  23. if ("!".equals(token)) {
  24. lastNode.setRightOperand(null);
  25. }
  26. else {
  27. if (!variableStack.isEmpty())
  28. lastNode.setRightOperand(variableStack.pop());
  29. else if (!isOperator(rpnStack.peek()))
  30. lastNode.setRightOperand(new VariableNode(rpnStack.peek()));
  31. else if (!rpnStack.isEmpty())
  32. lastNode.setRightOperand(getOperatorNodeFromString(rpnStack.peek()));
  33. }
  34.  
  35. addToTree(tree, lastNode);
  36. continue;
  37. }
  38.  
  39. if (Character.isAlphabetic(token.charAt(0))) {
  40. variableStack.push(new VariableNode(rpnStack.pop()));
  41. }
  42. }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement