Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Created by Amogh Kulkarni
- private void fillTree() {
- //stack: > r > ^ q ! p p
- Deque<VariableNode> variableStack = new ArrayDeque<>();
- OperatorNode lastNode;
- tree = new AbstractSyntaxTree(getOperatorNodeFromString(rpnStack.pop()));
- while (!rpnStack.isEmpty()) {
- String token = rpnStack.peek();
- if (isOperator(token)) {
- lastNode = getOperatorNodeFromString(rpnStack.pop());
- if (!variableStack.isEmpty())
- lastNode.setLeftOperand(variableStack.pop());
- else if (!isOperator(rpnStack.peek()))
- lastNode.setLeftOperand(new VariableNode(rpnStack.peek()));
- else if (!rpnStack.isEmpty())
- lastNode.setLeftOperand(getOperatorNodeFromString(rpnStack.peek()));
- if ("!".equals(token)) {
- lastNode.setRightOperand(null);
- }
- else {
- if (!variableStack.isEmpty())
- lastNode.setRightOperand(variableStack.pop());
- else if (!isOperator(rpnStack.peek()))
- lastNode.setRightOperand(new VariableNode(rpnStack.peek()));
- else if (!rpnStack.isEmpty())
- lastNode.setRightOperand(getOperatorNodeFromString(rpnStack.peek()));
- }
- addToTree(tree, lastNode);
- continue;
- }
- if (Character.isAlphabetic(token.charAt(0))) {
- variableStack.push(new VariableNode(rpnStack.pop()));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement