File tree Expand file tree Collapse file tree 9 files changed +53
-9
lines changed
Behavioral/InterpreterPattern/src/io/csie/chris Expand file tree Collapse file tree 9 files changed +53
-9
lines changed Original file line number Diff line number Diff line change 11package io .csie .chris ;
22
33import io .csie .chris .expression .*;
4+ import io .csie .chris .expression .common .Expression ;
5+ import io .csie .chris .expression .operation .Divide ;
6+ import io .csie .chris .expression .operation .Minus ;
7+ import io .csie .chris .expression .operation .Multiplication ;
8+ import io .csie .chris .expression .operation .Plus ;
49
510import java .util .Map ;
611import java .util .Stack ;
@@ -31,6 +36,12 @@ public class Evaluator implements Expression {
3136 final Expression multiExpression = new Multiplication (expressionStack .pop (), expressionStack .pop ());
3237 expressionStack .push (multiExpression );
3338 break ;
39+ case "/" :
40+ final Expression rightOperand = expressionStack .pop ();
41+ final Expression leftOperand = expressionStack .pop ();
42+ final Expression divideExpression = new Divide (leftOperand , rightOperand );
43+ expressionStack .push (divideExpression );
44+ break ;
3445 default :
3546 expressionStack .push (new Variable (token ));
3647 break ;
Original file line number Diff line number Diff line change 11package io .csie .chris ;
22
3- import io .csie .chris .expression .Expression ;
4- import io .csie .chris .expression .Number ;
3+ import io .csie .chris .expression .common . Expression ;
4+ import io .csie .chris .expression .operation . Number ;
55
66import java .util .HashMap ;
77import java .util .Map ;
@@ -10,12 +10,13 @@ public class Main {
1010
1111 public static void main (final String [] args ) {
1212
13- final String expression = "v w x z - + *" ;
13+ final String expression = "u v w x z - + * / " ;
1414
1515 final Evaluator sentence = new Evaluator (expression );
1616
1717 final Map <String , Expression > variables = new HashMap <>();
1818
19+ variables .put ("u" , new Number (108 ));
1920 variables .put ("v" , new Number (2 ));
2021 variables .put ("w" , new Number (5 ));
2122 variables .put ("x" , new Number (10 ));
Original file line number Diff line number Diff line change 11package io .csie .chris .expression ;
22
3+ import io .csie .chris .expression .common .Expression ;
4+
35import java .util .Map ;
46
57public class Variable implements Expression {
Original file line number Diff line number Diff line change 1- package io .csie .chris .expression ;
1+ package io .csie .chris .expression . common ;
22
33import java .util .Map ;
44
Original file line number Diff line number Diff line change 1+ package io .csie .chris .expression .operation ;
2+
3+ import io .csie .chris .expression .common .Expression ;
4+
5+ import java .util .Map ;
6+
7+ public class Divide implements Expression {
8+
9+ private Expression leftOperand ;
10+
11+ private Expression rightOperand ;
12+
13+ public Divide (Expression leftOperand , Expression rightOperand ) {
14+ this .leftOperand = leftOperand ;
15+ this .rightOperand = rightOperand ;
16+ }
17+
18+ @ Override
19+ public int interpret (Map <String , Expression > variables ) {
20+ return leftOperand .interpret (variables ) / rightOperand .interpret (variables );
21+ }
22+ }
Original file line number Diff line number Diff line change 1- package io .csie .chris .expression ;
1+ package io .csie .chris .expression .operation ;
2+
3+ import io .csie .chris .expression .common .Expression ;
24
35import java .util .Map ;
46
Original file line number Diff line number Diff line change 1- package io .csie .chris .expression ;
1+ package io .csie .chris .expression .operation ;
2+
3+ import io .csie .chris .expression .common .Expression ;
24
35import java .util .Map ;
46
5- public class Multiplication implements Expression {
7+ public class Multiplication implements Expression {
68
79 private Expression leftOperand ;
810
Original file line number Diff line number Diff line change 1- package io .csie .chris .expression ;
1+ package io .csie .chris .expression .operation ;
2+
3+ import io .csie .chris .expression .common .Expression ;
24
35import java .util .Map ;
46
Original file line number Diff line number Diff line change 1- package io .csie .chris .expression ;
1+ package io .csie .chris .expression .operation ;
2+
3+ import io .csie .chris .expression .common .Expression ;
24
35import java .util .Map ;
46
You can’t perform that action at this time.
0 commit comments