Dictionary meaning of interpreter: A person who interprets, especially one who translates speech orally or into sign language.
Java interpreter design pattern comes under behavioural design patterns. It is used to provide a way to evaluate language grammar and provides an interpreter to deal with this grammar.
Java compiler is one of the example of interpreter design pattern.
Example
Interpreter.java
package com.w3schools; public class Interpreter { public String getBinaryFormat(int i){ return Integer.toBinaryString(i); } public String getOctalFormat(int i){ return Integer.toOctalString(i); } } |
Expression.java
package com.w3schools; public interface Expression { String interpret(Interpreter interpreter); } |
IntToBinaryExpression.java
package com.w3schools; public class IntToBinaryExpression implements Expression { private int num; public IntToBinaryExpression(int num){ this.num=num; } @Override public String interpret(Interpreter interpreter) { return interpreter.getBinaryFormat(this.num); } } |
IntToOctalExpression.java
package com.w3schools; public class IntToOctalExpression implements Expression { private int num; public IntToOctalExpression(int num){ this.num=num; } @Override public String interpret(Interpreter interpreter) { return interpreter.getOctalFormat(this.num); } } |
InterpreterPatternTest.java
package com.w3schools; public class InterpreterPatternTest { public Interpreter interpreter; public InterpreterPatternTest(Interpreter i){ this.interpreter=i; } public String interpret(String str){ Expression exp = null; if(str.contains("Octal")){ exp=new IntToOctalExpression(Integer.parseInt(str.substring(0,str.indexOf(" ")))); }else if(str.contains("Binary")){ exp=new IntToBinaryExpression(Integer.parseInt(str.substring(0,str.indexOf(" ")))); }else return str; return exp.interpret(interpreter); } public static void main(String args[]){ String str1 = "15 in Binary: "; String str2 = "15 in Octal: "; InterpreterPatternTest interpreterPatternTest = new InterpreterPatternTest(new Interpreter()); System.out.println(str1+"= "+interpreterPatternTest.interpret(str1)); System.out.println(str2+"= "+interpreterPatternTest.interpret(str2)); } } |
Output
15 in Binary: = 1111 15 in Octal: = 17 |