Guest User

Untitled

a guest
Mar 18th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. interface IExpressable {
  2. public int interpret(final HashMap<String, Integer> variables);
  3. }
  4.  
  5. class Plus implements IExpressable {
  6. private IExpressable leftOperand = null;
  7. private IExpressable rightOperand = null;
  8.  
  9. public Plus(final IExpressable left, final IExpressable right) {
  10. leftOperand = left;
  11. rightOperand = right;
  12. }
  13.  
  14. @Override
  15. public int interpret(final HashMap<String, Integer> variables) {
  16. return leftOperand.interpret(variables)
  17. + rightOperand.interpret(variables);
  18. }
  19.  
  20. public String toString() {
  21. return leftOperand.toString() + " + " + rightOperand.toString();
  22. }
  23. }
  24.  
  25. class Parser {
  26. static public IExpressable parseExpression(final String expression) {
  27. IExpressable syntaxTree = null;
  28. Pattern numberPattern = Pattern.compile("[+-]?\\d+");
  29.  
  30. Stack<IExpressable> expressionStack = new Stack<IExpressable>();
  31. for(String token : expression.split(" ")) {
  32. if(token.equals("+")) {
  33. IExpressable subExpression = new Plus(expressionStack.pop(), expressionStack.pop());
  34. expressionStack.push(subExpression);
  35. } else {
  36. expressionStack.push(new Variable(token));
  37. }
  38. }
  39. syntaxTree = expressionStack.pop();
  40. return syntaxTree;
  41. }
  42. }
Add Comment
Please, Sign In to add comment