直譯器模式(interpreter pattern):給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器jhzxezg使用該表示來解釋語言中的句子.
下面是乙個直譯器模式的demo:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'andy'
"""大話設計模式
設計模式——直譯器模式
直譯器模式(interpreter pattern):給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子.
"""#抽象乙個直譯器類
class abstractexpression(object):
def interpreter(self, context):
pass
#具體直譯器——終端 繼承抽象直譯器
class terminalexpression(abstractexpression):
def interpreter(self, context):
print "終端直譯器",context
#具體直譯器——終端 繼承抽象直譯器
class notterminalexpression(abstrjhzxezgactexpre程式設計客棧ssion):
def interpreter(self, context):
print "非終端直譯器",context
class context(object):
程式設計客棧 def __init__(self):
self.name = ""
if __name__ == "__main__":
context = context()
context.name = 'andy'
arr_list = [notterminalexpression(),terminalexpression(),terminalexpression()]
for entry in arr_list:
entry.interprete程式設計客棧r(context)
執行結果:
上面類的設計如下圖:
當有乙個語言需要執行,並且可以將該語言的句子表示為抽象語法樹時,可使用直譯器模式
設計模式之直譯器模式
直譯器模式是一種類行為型模式,它主要是用來解釋特定語言的特定文法表示,雖然這個在實際生產中不常用到,但是我們學習一下還是有幫助的。定義 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。使用場景 當有乙個語言需要解釋執行,並且你可將該語言中的句子表示為乙...
設計模式之直譯器模式
直譯器模式 1.直譯器模式 給定乙個語言,定義它文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。比如 在字串中...
設計模式之直譯器模式
解析器模式是一種行為型設計模式。其思想是 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,該直譯器使用該表示來解釋語言中的句子。解析器模式涉及4個角色 結構圖 於網路 下面提供乙個簡單例子。乙個簡易的控制台計算器,要求使用者輸入乙個表示式,如a b c,然後要求使用者輸入每個變數的具體值,如...