摘要:解釋器模式一解釋器模式定義給定一種語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子角色抽象表達式接口終結符表達式非終結符表達式上下文環境二具體實現創建抽象接口創建終結符表達式創建非終結符表達式調用輸出三
解釋器模式
一. 解釋器模式 1.1 定義給定一種語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子.
1.2 角色抽象表達式接口(IExpression).
終結符表達式(TerminalExpression).
非終結符表達式(NonterminalExpression).
上下文環境(Context).
二. 具體實現 1.1 創建抽象接口public interface IExpression { void interpreter(); }1.2 創建終結符表達式
public class TerminalExpression implements IExpression { @Override public void interpreter() { System.out.println("TerminalExpression interpreter ..."); } }1.3 創建非終結符表達式
public class NonterminalExpression implements IExpression { private TerminalExpression terminalExpressionA, terminalExpressionB; public NonterminalExpression(TerminalExpression terminalExpressionA, TerminalExpression terminalExpressionB){ this.terminalExpressionA = terminalExpressionA; this.terminalExpressionB = terminalExpressionB; } @Override public void interpreter() { terminalExpressionA.interpreter(); terminalExpressionB.interpreter(); System.out.println("interpreter terminalExpressionA AND terminalExpressionB ..."); } }1.4 調用
public static void main(String[] args) { TerminalExpression expressionA = new TerminalExpression(); TerminalExpression expressionB = new TerminalExpression(); IExpression expression = new NonterminalExpression(expressionA, expressionB); expression.interpreter(); }1.5 輸出
TerminalExpression interpreter ... TerminalExpression interpreter ... interpreter terminalExpressionA AND terminalExpressionB ...三. 優缺點 3.1 優點
靈活性強.
擴展性強.
3.2 缺點每個文法對應一個表達式類,類泛濫.
復雜文法較難實現.
四. 源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69624.html
摘要:該設計模式需要實現一個表達式接口,該接口將會被告知需要解釋的特定上下文。實現我們將創建一個接口并且創建實現它的具體類。聲明一個具體類,該類將作為主要的問題的內柔解釋器。 原文地址譯者 smallclover希望對你們有所幫助 設計模式-解釋器模式 解釋器模式提供一種評估語言語法以及表達式的方式。這種類型的設計模式屬于行為型設計模式。該設計模式需要實現一個表達式接口,該接口將會被告知需要...
摘要:函數執行函數執行使用后續遍歷的方式來遍歷語法樹。對于每一個子節點,若其為函數則遞歸調用執行函數。如果當前方法是運算符方法,則調用該運算符的執行函數,并返回結果如果當前方法是函數,則解析所有形參的值后生產函數作用域,并以改作用域執行當前函數。 前言 昨晚奮斗了一下,終于把這題了解了。今天完善了一下代碼,把剩下的部分放上來。目前剩下的有兩個主要模塊即函數解析與函數執行,以及兩個小模塊即運算...
摘要:酷睿代在年取代了奔騰,主頻遠低于此。該詞被敏捷開發團隊使用較多,含義與形式會略有不同,更改已經開始將垃圾收集器的狀態轉到解釋器,因此每個子解釋器將擁有它自己的本該如此。結論死亡了嗎對于單線程的應用程序,仍然存活。showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09f554fdf443); 本文原創并首發于公眾號【Python貓】,未經授...
摘要:酷睿代在年取代了奔騰,主頻遠低于此。該詞被敏捷開發團隊使用較多,含義與形式會略有不同,更改已經開始將垃圾收集器的狀態轉到解釋器,因此每個子解釋器將擁有它自己的本該如此。結論死亡了嗎對于單線程的應用程序,仍然存活。showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09f554fdf443); 本文原創并首發于公眾號【Python貓】,未經授...
閱讀 3434·2021-11-08 13:20
閱讀 3359·2021-09-30 09:48
閱讀 2559·2021-09-29 09:41
閱讀 589·2021-09-22 15:04
閱讀 2458·2021-08-23 09:44
閱讀 3663·2020-12-03 17:26
閱讀 1007·2019-08-30 14:10
閱讀 1561·2019-08-29 18:34