第二十七章 直譯器模式

2022-09-11 05:00:15 字數 1076 閱讀 8265

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

如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。

直譯器模式的好處

通常當有乙個語言需要解釋執行,並且你可以將該預言中的句子表示為乙個抽象語法樹時,可使用直譯器模式。

用了直譯器模式,就意味著可以很容易地改變和擴充套件文法,因為該模式使用類來表示文法規則,你可以使用繼承來改變或擴充套件該文法。也比較容易實現文法,因為定義抽象語法樹中各個節點的類的實現大體類似,這些類都易於直接編寫。

但直譯器模式也有不足,直譯器模式為文法中的每一條規則至少定義了乙個類,因此包含許多規則的文法可能難以管理和維護。建議當文法非常複雜時,使用其他的技術如語法分析程式或編譯器生成器來處理。

**直譯器

#include #include#include#include#includeusing namespace std;

class playcontext

void settext(string text_t)

};class expression

} virtual void excute(char key, double value) = 0;

};class note :public expression

cout << note << " ";

}};class scale : public expression

cout << scale << " ";

}};class speed :public expression

};int main()

expression->interpret(context); }

system("pause");

return 0;

}

《道德經》 第二十七章

善行,無轍跡 善言,無瑕謫 善數,不用籌策 善閉,無關鍵而不可開 善結,無繩約而不可解。是以聖人常善救人,故無棄人 常善救物,故無棄物。是謂神明。故善人者,不善人之師 不善人者,善人之資。不 貴其師,不愛其資,雖智大迷。是謂要妙。譯文 善於行走的,不會留下轍跡 善於言談的,不會發生病疵 善於計數的,...

第二十七章 混元一氣

滕青山聽的眉頭一皺。殺死一半左右的男人?侮辱女人?這對乙個部落而言。的確是可怕災難。不過因為有天神山的命令。沒人敢殺孩子。部落至少不會完全被滅族。所以。這北部草原一代代的孩子們。反而會拼命練內勁練刀法。呼和大人。查布愧疚道。剛才我們撇清關係。是因為。膽敢違抗狂風部的話。狂風部就會殺我們部落所有年人。...

第二十七章 混元一氣

滕青山聽的眉頭一皺。殺死一半左右的男人?侮辱女人?這對乙個部落而言。的確是可怕災難。不過因為有天神山的命令。沒人敢殺孩子。部落至少不會完全被滅族。所以。這北部草原一代代的孩子們。反而會拼命練內勁練刀法。呼和大人。查布愧疚道。剛才我們撇清關係。是因為。膽敢違抗狂風部的話。狂風部就會殺我們部落所有年人。...