直譯器模式(C 實現)

2021-09-25 21:41:54 字數 2929 閱讀 9572

(本部落格旨在個人總結回顧)

直譯器模式:給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。

說明:

優點:

①可擴充套件性比較好,靈活。

②增加了新的解釋表示式的方式。

③易於實現簡單文法。

缺點:

①可利用場景比較少。

②對於複雜的文法比較難維護。

③直譯器模式會引起類膨脹。 ④直譯器模式採用遞迴呼叫方法。

使用場景:

①可以將乙個需要解釋執行的語言中的句子表示為乙個抽象語法樹。

②一些重複出現的問題可以用一種簡單的語言來進行表達。

③乙個簡單語法需要解釋的場景。

// stdafx.h : 標準系統包含檔案的包含檔案,

// 或是經常使用但不常更改的

// 特定於專案的包含檔案

//#pragma once

#include "targetver.h"

#include #include #include using namespace std;

// todo: 在此處引用程式需要的其他標頭檔案

expression.h

#pragma once

class expression

;

expression.cpp

#include "stdafx.h"

#include "expression.h"

expression::expression()

expression::~expression()

terminalexpression.h

#pragma once

#include "expression.h"

class terminalexpression :

public expression

;

terminalexpression.cpp

#include "stdafx.h"

#include "terminalexpression.h"

terminalexpression::terminalexpression(string context)

: m_strdata(context)

terminalexpression::~terminalexpression()

bool terminalexpression::interpret(string context)

return true;

}

orexpression.h

#pragma once

#include "handler.h"

class handlery :

public handler

;

orexpression.cpp

#include "stdafx.h"

#include "orexpression.h"

orexpression::orexpression(expression* pexpression1, expression* pexpression2)

: m_pexpression1(pexpression1)

, m_pexpression2(pexpression2)

orexpression::~orexpression()

bool orexpression::interpret(string context)

andexpression.h

#pragma once

#include "expression.h"

class andexpression :

public expression

;

andexpression.cpp

#include "stdafx.h"

#include "andexpression.h"

andexpression::andexpression(expression* pexpression1, expression* pexpression2)

: m_pexpression1(pexpression1)

, m_pexpression2(pexpression2)

andexpression::~andexpression()

bool andexpression::interpret(string context)

呼叫**

interpreterpatternmemo.cpp

// interpreterpatternmemo.cpp : 定義控制台應用程式的入口點。

設計模式 直譯器模式(C 實現)

直譯器模式 interpreter pattern 提供了評估語言的語法或表示式的方式,屬於行為型模式。這種模式實現了乙個表示式介面,該介面解釋乙個特定的上下文。常被用在 sql 解析 符號處理引擎等。1 當有乙個語言需要解釋執行 並且你可將該語言中的句子表示為乙個抽象語法樹時,可使用直譯器模式。而...

c 設計模式 直譯器模式

直譯器模式 interpreter 定義了乙個類體系,用於實現乙個小型語言的直譯器。它與組合模式很相似,而且常常利用組合模式來實現語法樹的構建。good 通常當乙個語言需要解釋執行,並且你可以將該語言中的句子表示成為乙個抽象的語法樹時,可以使用直譯器模式。res c 實現 include inclu...

Interpreter模式 C 直譯器模式

interpreter 模式提供了乙個實現語法直譯器的框架,其目的就是使用乙個直譯器為使用者提供乙個一門定義語言語法表示的直譯器,並且通過這個直譯器來解釋語言中的句子。interpreter 模式使用類來表示文法規則,因此方便於文法的擴充套件。如下 include include using nam...