Design Pattern

Interpreter Pattern Design Patterns in Java

<p><strong>Interpreter pattern<&sol;strong> provides a way to evaluate language grammar or expression&period; The term interpreter means a person who interprets the stuff in a foreign language into a language that is understandable&period; In the terms of computer programming&comma; an interpreter is a pattern in which the programming language is evaluated line by line&period; This type of pattern comes under <strong><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;behavioral-design-pattern&sol;">behavioral pattern<&sol;a><&sol;strong> of the <strong><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;design-patterns&lowbar;25&sol;">23 GoF Design Patterns<&sol;a><&sol;strong>&period;<&sol;p>&NewLine;<h2>Interpreter pattern<&sol;h2>&NewLine;<div style&equals;"text-align&colon; left&semi;">&NewLine;<blockquote><p><strong>According to the Gang of Four&colon;<&sol;strong><&sol;p>&NewLine;<div style&equals;"text-align&colon; left&semi;">Given a language&comma; define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language&period;<&sol;div>&NewLine;<&sol;blockquote>&NewLine;<&sol;div>&NewLine;<div style&equals;"background-color&colon; &num;f2f9fc&semi; border-radius&colon; 3px&semi; border&colon; 1px solid &num;c9e6f2&semi; line-height&colon; 1&period;45&semi; padding&colon; 16px 16px 16px 16px&semi;">&NewLine;<h2 dir&equals;"ltr">Spring 5 Design Pattern Book<&sol;h2>&NewLine;<div dir&equals;"ltr" style&equals;"color&colon; &num;20124d&semi; font-family&colon; 'calibri' &comma; sans-serif&semi; font-size&colon; 13pt&semi; text-align&colon; justify&semi;">You could purchase my <strong>Spring 5 book<&sol;strong> that is with title name &&num;8220&semi;<strong>Spring 5 Design Pattern<&sol;strong>&&num;8220&semi;&period; This book is available on the <a href&equals;"https&colon;&sol;&sol;www&period;amazon&period;in&sol;Spring-Design-Patterns-Dinesh-Rajput&sol;dp&sol;1788299450&sol;ref&equals;sr&lowbar;1&lowbar;1&quest;ie&equals;UTF8&amp&semi;qid&equals;1507925340&amp&semi;sr&equals;8-1&amp&semi;keywords&equals;spring&plus;5&plus;design&plus;pattern" target&equals;"&lowbar;blank" rel&equals;"noopener"><strong>Amazon<&sol;strong><&sol;a> and <a href&equals;"https&colon;&sol;&sol;www&period;packtpub&period;com&sol;application-development&sol;spring-5-design-patterns" target&equals;"&lowbar;blank" rel&equals;"noopener"><strong>Packt<&sol;strong><&sol;a> publisher website&period; Learn various <strong>design patterns<&sol;strong> and <strong>best practices<&sol;strong> in Spring 5 and use them to solve common design problems&period; You could use author discount to purchase this book by using code- &&num;8220&semi;<strong>AUTHDIS40<&sol;strong>&&num;8220&semi;&period;<&sol;div>&NewLine;<div dir&equals;"ltr"><&sol;div>&NewLine;<div dir&equals;"ltr"><a href&equals;"https&colon;&sol;&sol;www&period;amazon&period;in&sol;Spring-Design-Patterns-Dinesh-Rajput&sol;dp&sol;1788299450&sol;ref&equals;sr&lowbar;1&lowbar;1&quest;s&equals;books&amp&semi;ie&equals;UTF8&amp&semi;qid&equals;1512607966&amp&semi;sr&equals;1-1&amp&semi;keywords&equals;dinesh&plus;rajput" target&equals;"&lowbar;blank" rel&equals;"noopener"><img class&equals;"aligncenter wp-image-3053 size-medium" title&equals;"Spring-5-Design-Pattern" src&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;wp-content&sol;uploads&sol;2013&sol;03&sol;Spring-5-design-pattern-243x300&period;jpg" width&equals;"243" height&equals;"300" &sol;><&sol;a><&sol;div>&NewLine;<&sol;div>&NewLine;<p>Behavioral pattern is a design pattern through which common communication patterns are identified between different objects&period; This way the communication is carried out in more flexible way&period; The areas of use of this design pattern of the interpreter are symbol processing engine&comma; SQL parsing etc&period;<&sol;p>&NewLine;<div style&equals;"text-align&colon; left&semi;">&NewLine;<blockquote><p><strong>also read&colon;<&sol;strong><&sol;p>&NewLine;<ul style&equals;"text-align&colon; left&semi;">&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;observer-pattern-design-patterns-java&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;observer-pattern-design-patterns-java&sol;">Observer Design Pattern<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;chain-responsibility-pattern&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;chain-responsibility-pattern&sol;">Chain of responsibility Pattern<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;command-pattern-design-patterns-java&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;command-pattern-design-patterns-java&sol;">Command Design Pattern<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;strategy-pattern-design-patterns-java&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;strategy-pattern-design-patterns-java&sol;">Strategy Design Pattern<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;template-method-pattern-design-java&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;template-method-pattern-design-java&sol;">Template method Design Pattern<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;iterator-pattern-design-patterns-java&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;iterator-pattern-design-patterns-java&sol;">Iterator Design Pattern<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;mediator-pattern-design-patterns-java&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;mediator-pattern-design-patterns-java&sol;">Mediator Design Pattern<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;memento-pattern-design-patterns-java&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;memento-pattern-design-patterns-java&sol;">Memento Design Pattern<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;creational-design-patterns&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;creational-design-patterns&sol;&sol;">Creational GoF Design Patterns<&sol;a><&sol;li>&NewLine;<li><a title&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;structural-design-patterns&sol;" href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;structural-design-patterns&sol;">Structural GoF Design Patterns<&sol;a><&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;blockquote>&NewLine;<&sol;div>&NewLine;<h2>UML class diagram for Interpreter Design Pattern<&sol;h2>&NewLine;<p>There is a following UML diagram illustrates about this patterns and its components&period;<&sol;p>&NewLine;<h2><img class&equals;"aligncenter wp-image-3475 size-full" src&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;wp-content&sol;uploads&sol;2017&sol;12&sol;interpreter&period;gif" alt&equals;"Interpreter Pattern " width&equals;"404" height&equals;"266" &sol;><br &sol;>&NewLine;Benefits of Interpreter Pattern<&sol;h2>&NewLine;<p>The following lists the benefits of using the Interpreter pattern&colon;<&sol;p>&NewLine;<ul>&NewLine;<li>This pattern allows you to change and extend the grammar easily&period;<&sol;li>&NewLine;<li>Using the expression language is very easy<&sol;li>&NewLine;<&sol;ul>&NewLine;<h2>Steps to Implementation for this Pattern<&sol;h2>&NewLine;<p>Here are the following steps for the implementation of the interpreter&period;<&sol;p>&NewLine;<h3>Step 1&colon; AbstractExpression &lpar;Expression&rpar;<&sol;h3>&NewLine;<p>The first step for the implementation of the interpreter is the creation of the expression interface &OpenCurlyDoubleQuote;Expression&period;java”&period;<&sol;p>&NewLine;<pre class&equals;"highlight">&sol;&ast;&ast; &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;package com&period;doj&period;patterns&period;behavior&period;interpreter&semi; &NewLine; &NewLine;&sol;&ast;&ast; &NewLine; &ast; &commat;author Dinesh&period;Rajput &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;public abstract class Expression &lbrace; &NewLine;&Tab; &NewLine;&Tab;public void Interpret&lpar;Context context&rpar;&lbrace; &NewLine;&Tab;&Tab;if &lpar;context&period;get&lowbar;input&lpar;&rpar;&period;length&lpar;&rpar; &equals;&equals; 0&rpar; &NewLine;&Tab;&Tab;&Tab;return&semi; &NewLine;&Tab;&Tab;if &lpar;context&period;get&lowbar;input&lpar;&rpar;&period;startsWith&lpar;nine&lpar;&rpar;&rpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;&Tab;context&period;set&lowbar;output&lpar;context&period;get&lowbar;output&lpar;&rpar;&plus; 9 &ast; multiplier&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;&Tab;context&period;set&lowbar;input&lpar;context&period;get&lowbar;input&lpar;&rpar;&period;substring&lpar;2&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;&rcub;else if &lpar;context&period;get&lowbar;input&lpar;&rpar;&period;startsWith&lpar;four&lpar;&rpar;&rpar;&rpar;&lbrace; &NewLine;&Tab;&Tab;&Tab;context&period;set&lowbar;output&lpar;context&period;get&lowbar;output&lpar;&rpar;&plus; 4 &ast; multiplier&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;&Tab;context&period;set&lowbar;input&lpar;context&period;get&lowbar;input&lpar;&rpar;&period;substring&lpar;2&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;&rcub;else if &lpar;context&period;get&lowbar;input&lpar;&rpar;&period;startsWith&lpar;five&lpar;&rpar;&rpar;&rpar;&lbrace; &NewLine;&Tab;&Tab;&Tab;context&period;set&lowbar;output&lpar;context&period;get&lowbar;output&lpar;&rpar;&plus; 5 &ast; multiplier&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;&Tab;context&period;set&lowbar;input&lpar;context&period;get&lowbar;input&lpar;&rpar;&period;substring&lpar;1&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;&rcub; &NewLine; &NewLine;&Tab;&Tab;while &lpar;context&period;get&lowbar;input&lpar;&rpar;&period;startsWith&lpar;one&lpar;&rpar;&rpar;&rpar;&lbrace; &NewLine;&Tab;&Tab;&Tab;context&period;set&lowbar;output&lpar;context&period;get&lowbar;output&lpar;&rpar;&plus; 1 &ast; multiplier&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;&Tab;context&period;set&lowbar;input&lpar;context&period;get&lowbar;input&lpar;&rpar;&period;substring&lpar;1&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;&rcub; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;public abstract String one&lpar;&rpar;&semi; &NewLine; &NewLine; public abstract String four&lpar;&rpar;&semi; &NewLine; &NewLine; public abstract String five&lpar;&rpar;&semi; &NewLine; &NewLine; public abstract String nine&lpar;&rpar;&semi; &NewLine; &NewLine; public abstract int multiplier&lpar;&rpar;&semi; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<h3>Step 2&colon; TerminalExpression &lpar; ThousandExpression&comma; HundredExpression&comma; TenExpression&comma; OneExpression &rpar;<&sol;h3>&NewLine;<p>After the creation of the interface or abstract&comma; the second step is to use the created interface to create concrete classes&period;<&sol;p>&NewLine;<p><strong>ThousandExpression&period;java<&sol;strong><&sol;p>&NewLine;<pre class&equals;"highlight">&sol;&ast;&ast; &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;package com&period;doj&period;patterns&period;behavior&period;interpreter&semi; &NewLine; &NewLine;&sol;&ast;&ast; &NewLine; &ast; &commat;author Dinesh&period;Rajput &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;public class ThousandExpression extends Expression &lbrace; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String one&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "M"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String four&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return " "&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String five&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return " "&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String nine&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return " "&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public int multiplier&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return 1000&semi; &NewLine;&Tab;&rcub; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<p><strong>HundredExpression&period;java<&sol;strong><&sol;p>&NewLine;<pre class&equals;"highlight">&sol;&ast;&ast; &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;package com&period;doj&period;patterns&period;behavior&period;interpreter&semi; &NewLine; &NewLine;&sol;&ast;&ast; &NewLine; &ast; &commat;author Dinesh&period;Rajput &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;public class HundredExpression extends Expression &lbrace; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String one&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "C"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String four&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "CD"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String five&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "D"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String nine&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "CM"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public int multiplier&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return 100&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<p><strong>TenExpression&period;java<&sol;strong><&sol;p>&NewLine;<pre class&equals;"highlight">&sol;&ast;&ast; &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;package com&period;doj&period;patterns&period;behavior&period;interpreter&semi; &NewLine; &NewLine;&sol;&ast;&ast; &NewLine; &ast; &commat;author Dinesh&period;Rajput &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;public class TenExpression extends Expression &lbrace; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String one&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "X"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String four&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "XL"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String five&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "L"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String nine&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "XC"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public int multiplier&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return 10&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<p><strong>OneExpression&period;java<&sol;strong><&sol;p>&NewLine;<pre class&equals;"highlight">&sol;&ast;&ast; &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;package com&period;doj&period;patterns&period;behavior&period;interpreter&semi; &NewLine; &NewLine;&sol;&ast;&ast; &NewLine; &ast; &commat;author Dinesh&period;Rajput &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;public class OneExpression extends Expression &lbrace; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String one&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "I"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String four&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "IV"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String five&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "V"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public String nine&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return "IX"&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&Tab;&commat;Override &NewLine;&Tab;public int multiplier&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return 1&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<h3>Step 3&colon; Context &lpar;Context&period;java&rpar;<&sol;h3>&NewLine;<p>It contains information that is global to the interpreter<&sol;p>&NewLine;<pre class&equals;"highlight">&sol;&ast;&ast; &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;package com&period;doj&period;patterns&period;behavior&period;interpreter&semi; &NewLine; &NewLine;&sol;&ast;&ast; &NewLine; &ast; &commat;author Dinesh&period;Rajput &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;public class Context &lbrace; &NewLine;&Tab;private String &lowbar;input&semi; &NewLine;&Tab;private int &lowbar;output&semi; &NewLine;&Tab; &NewLine;&Tab;public Context&lpar;String &lowbar;input&rpar; &lbrace; &NewLine;&Tab;&Tab;super&lpar;&rpar;&semi; &NewLine;&Tab;&Tab;this&period;&lowbar;input &equals; &lowbar;input&semi; &NewLine;&Tab;&rcub; &NewLine;&Tab;public String get&lowbar;input&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return &lowbar;input&semi; &NewLine;&Tab;&rcub; &NewLine;&Tab;public void set&lowbar;input&lpar;String &lowbar;input&rpar; &lbrace; &NewLine;&Tab;&Tab;this&period;&lowbar;input &equals; &lowbar;input&semi; &NewLine;&Tab;&rcub; &NewLine;&Tab;public int get&lowbar;output&lpar;&rpar; &lbrace; &NewLine;&Tab;&Tab;return &lowbar;output&semi; &NewLine;&Tab;&rcub; &NewLine;&Tab;public void set&lowbar;output&lpar;int &lowbar;output&rpar; &lbrace; &NewLine;&Tab;&Tab;this&period;&lowbar;output &equals; &lowbar;output&semi; &NewLine;&Tab;&rcub; &NewLine;&Tab; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<h3>Step 4&colon; Let&&num;8217&semi;s create Interpreterpatterndemo&period;java file using the expression class to create rules and then parse them&period;<&sol;h3>&NewLine;<pre class&equals;"highlight">&sol;&ast;&ast; &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;package com&period;doj&period;patterns&period;behavior&period;interpreter&semi; &NewLine; &NewLine;import java&period;util&period;ArrayList&semi; &NewLine;import java&period;util&period;List&semi; &NewLine; &NewLine;&sol;&ast;&ast; &NewLine; &ast; &commat;author Dinesh&period;Rajput &NewLine; &ast; &NewLine; &ast;&sol; &NewLine;public class InterpreterPatternDemo &lbrace; &NewLine; &NewLine;&Tab;&sol;&ast;&ast; &NewLine;&Tab; &ast; &commat;param args &NewLine;&Tab; &ast;&sol; &NewLine;&Tab;public static void main&lpar;String&lbrack;&rsqb; args&rpar; &lbrace; &NewLine;&Tab;&Tab;String roman &equals; "MMCDXXVIIVI"&semi; &NewLine;&Tab;&Tab;Context context &equals; new Context&lpar;roman&rpar;&semi; &NewLine; &NewLine;&Tab;&Tab;&sol;&sol; Build the 'parse tree' &NewLine;&Tab;&Tab;List tree &equals; new ArrayList&lt&semi;&gt&semi;&lpar;&rpar;&semi; &NewLine;&Tab;&Tab;tree&period;add&lpar;new ThousandExpression&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;tree&period;add&lpar;new HundredExpression&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;tree&period;add&lpar;new TenExpression&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&Tab;tree&period;add&lpar;new OneExpression&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&Tab; &NewLine;&Tab;&Tab;&sol;&sol; Interpret &NewLine;&Tab;&Tab;for &lpar;Expression exp &colon; tree&rpar;&lbrace; &NewLine;&Tab;&Tab;&Tab;exp&period;Interpret&lpar;context&rpar;&semi; &NewLine;&Tab;&Tab;&rcub; &NewLine;&Tab;&Tab;System&period;out&period;println&lpar;roman&plus;" &equals; "&plus;context&period;get&lowbar;output&lpar;&rpar;&rpar;&semi; &NewLine;&Tab;&rcub; &NewLine; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<h3>Step 5&colon; The fifth and the final step is to verify the output&period;<&sol;h3>&NewLine;<pre class&equals;"highlight">MMCDXXVIIVI &equals; 2427 &NewLine;<&sol;pre>&NewLine;<div class&equals;"wp-post-navigation"> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <div class&equals;"wp-post-navigation-pre"> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;memento-pattern-design-patterns-java&sol;">Previous<&sol;a> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <&sol;div> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <div class&equals;"wp-post-navigation-next"> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;command-pattern-design-patterns-java&sol;">Next<&sol;a> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <&sol;div> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;<&sol;div>&NewLine;<script type&equals;"text&sol;javascript">&NewLine;jQuery&lpar;document&rpar;&period;ready&lpar;function&lpar;&dollar;&rpar; &lbrace;&NewLine; &dollar;&period;post&lpar;'https&colon;&sol;&sol;dineshonjava&period;com&sol;wp-admin&sol;admin-ajax&period;php'&comma; &lbrace;action&colon; 'mts&lowbar;view&lowbar;count'&comma; id&colon; '3474'&rcub;&rpar;&semi;&NewLine;&rcub;&rpar;&semi;&NewLine;<&sol;script>

Dinesh Rajput

Dinesh Rajput is the chief editor of a website Dineshonjava, a technical blog dedicated to the Spring and Java technologies. It has a series of articles related to Java technologies. Dinesh has been a Spring enthusiast since 2008 and is a Pivotal Certified Spring Professional, an author of a book Spring 5 Design Pattern, and a blogger. He has more than 10 years of experience with different aspects of Spring and Java design and development. His core expertise lies in the latest version of Spring Framework, Spring Boot, Spring Security, creating REST APIs, Microservice Architecture, Reactive Pattern, Spring AOP, Design Patterns, Struts, Hibernate, Web Services, Spring Batch, Cassandra, MongoDB, and Web Application Design and Architecture. He is currently working as a technology manager at a leading product and web development company. He worked as a developer and tech lead at the Bennett, Coleman & Co. Ltd and was the first developer in his previous company, Paytm. Dinesh is passionate about the latest Java technologies and loves to write technical blogs related to it. He is a very active member of the Java and Spring community on different forums. When it comes to the Spring Framework and Java, Dinesh tops the list!

Share
Published by
Dinesh Rajput

Recent Posts

Strategy Design Patterns using Lambda

Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…

4 years ago

Decorator Pattern using Lambda

Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…

4 years ago

Delegating pattern using lambda

Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…

4 years ago

Spring Vs Django- Know The Difference Between The Two

Technology has emerged a lot in the last decade, and now we have artificial intelligence;…

4 years ago

TOP 20 MongoDB INTERVIEW QUESTIONS 2022

Managing a database is becoming increasingly complex now due to the vast amount of data…

4 years ago

Scheduler @Scheduled Annotation Spring Boot

Overview In this article, we will explore Spring Scheduler how we could use it by…

4 years ago