当前位置:网站首页>The Interpreter pattern of behavior pattern
The Interpreter pattern of behavior pattern
2020-11-06 21:35:00 【The procedural ape Irvine】
Catalog
- Definition and characteristics
- Structure and Implementation
- The structure of the pattern
- The realization of pattern
- Application scenarios
- Expand :Expression Expression trees and Flee
In software development , There will be some problems that recur many times , And there is a certain similarity and regularity . If you generalize them into a simple language , Then the examples of these questions will be some sentences in the language , In this way, you can use “ Compiler principle ” To implement the Interpreter pattern in .
Although there are not many instances of using the Interpreter pattern , But for meeting the above characteristics , And the running efficiency requirements are not very high , If you use interpreter mode to implement , The effect is very good , This article will introduce its working principle and usage .
Definition and characteristics
Interpreter (Interpreter) Pattern The definition of : Define a language for the analysis object , And define the grammatical representation of the language , Then design a parser to explain the sentences in the language . in other words , Use compiler language to analyze application examples . This pattern implements the interface of grammar expression processing , This interface interprets a specific context .
The concepts of grammar and sentence mentioned here are the same as those described in compiler principles ,“ Grammar ” The grammatical rules of a language , and “ The sentence ” It's the elements of the language set . for example , There are many sentences in Chinese ,“ I'm Chinese ” It's one of the sentences , A grammar tree can be used to describe sentences in a language intuitively .
The interpreter pattern is a kind behavior pattern , Its main advantages are as follows :
- Good scalability : Because classes are used in the interpreter pattern to represent the grammar rules of the language , Therefore, the grammar can be changed or extended through mechanisms such as inheritance .
- Easy to implement : Each expression node class in the syntax tree is similar , So it's easier to realize its grammar .
The main disadvantages of the Interpreter pattern are as follows :
- Low execution efficiency : There are a lot of loops and recursive calls in interpreter mode , When the sentences to be explained are more complicated , It's very slow , And the debugging process of the code is also troublesome .
- It will cause class expansion : Each rule in the Interpreter pattern needs to define at least one class , When there are many grammar rules involved , The number of classes will increase dramatically , It makes the system difficult to manage and maintain .
- Less applicable scenarios : In software development , There are very few examples that need to define language grammar , So this pattern is rarely used .
Structure and Implementation
Interpreter pattern is often used in compiling or analyzing examples of simple languages , In order to master its structure and implementation , We must first understand the principle of compiling “ Grammar 、 The sentence 、 Grammar tree ” Etc .
Grammar : Grammar is used for Formal rules describing the grammatical structure of a language . nothing can be accomplished without norms and standards , There must be rules for everything , The same with language , Whether it's machine language or natural language , Each has its own grammar rules . for example , In Chinese “ The sentence ” The grammar of is as follows :
〈 The sentence 〉::=〈 The subject 〉〈 Predicate 〉〈 The object 〉〈 The subject 〉::=〈 pronouns 〉|〈 Noun 〉〈 Predicate 〉::=〈 Verb 〉〈 The object 〉::=〈 pronouns 〉|〈 Noun 〉〈 pronouns 〉 you | I | He 〈 Noun 〉7 College students' I Xiao Xia I English 〈 Verb 〉::= yes | Study
notes : The symbols here “::=” Express “ Defined as ” It means , use “〈” and “〉” It contains the right and wrong terminator , What is not enclosed is the Terminator .
The sentence : The sentence is The basic unit of language , It's an element of the language set , It's made up of terminators , Can be controlled by “ Grammar ” Deduce . for example , The grammar mentioned above can lead to “ I am a college student ”, So it's a sentence .
Grammar tree : The grammar tree is A tree representation of sentence structure , It represents the derivation of the sentence , It is helpful to understand the level of sentence structure . The picture below shows “ I am a college student ” Syntax tree :

With the above basic knowledge , Now it's easy to introduce the structure of the Interpreter pattern . The structure of the Interpreter pattern is similar to the composition pattern , However, it contains more elements than composition patterns , And the composition pattern is an object structure pattern , The Interpreter pattern is a class behavior pattern .
The structure of the pattern
The Interpreter pattern contains the following main roles :
- Abstract expression (Abstract Expression) role : Define the interpreter's interface , Appointment .........
版权声明
本文为[The procedural ape Irvine]所创,转载请带上原文链接,感谢
边栏推荐
- Zhou Jie: database system of East China Normal University
- [byte jumps, autumn recruitment Posts open] ohayoo! Don't leave after school, I want to ask you to play games!!!
- CCR coin frying robot: the boss of bitcoin digital currency, what you have to know
- IPFs rudder filecoin landing at the same time, fil currency price broke a thousand
- Tron smart wallet PHP development kit [zero TRX collection]
- 行为型模式之解释器模式
- Stickinengine architecture 11 message queue
- 检测证书过期脚本
- ado.net和asp.net的关系
- The isolation level of transaction and its problems
猜你喜欢

2020-08-30:裸写算法:二叉树两个节点的最近公共祖先。
![[elastic search engine]](/img/3b/00bc81122d330c9d59909994e61027.jpg)
[elastic search engine]

Can you do it with only six characters?

ado.net和asp.net的关系

Introduction to Huawei cloud micro certification examination

A small goal in 2019 to become a blog expert of CSDN
![[byte jumps, autumn recruitment Posts open] ohayoo! Don't leave after school, I want to ask you to play games!!!](/img/3b/00bc81122d330c9d59909994e61027.jpg)
[byte jumps, autumn recruitment Posts open] ohayoo! Don't leave after school, I want to ask you to play games!!!

What is the meaning of sector sealing of filecoin mining machine since the main network of filecoin was put online

Understanding formatting principles

Description of phpshe SMS plug-in
随机推荐
How does cglib implement multiple agents?
【学习】接口测试用例编写和测试关注点
2020 database technology conference helps technology upgrade
Behind the record breaking Q2 revenue of Alibaba cloud, the cloud opening mode is reshaping
Zero basis to build a web search engine of its own
What is alicloud's experience of sweeping goods for 100 yuan?
2020-08-24:什么是小文件?很多小文件会有什么问题?很多小文件怎么解决?(大数据)
细数软件工程----各阶段必不可少的那些图
2020-09-03:裸写算法:回形矩阵遍历。
An article will take you to understand CSS alignment
html+ vue.js Implementing paging compatible IE
The legality of IPFs / filecoin: protecting personal privacy from disclosure
A concise tutorial for Nacos, ribbon and feign
2020-08-18:介绍下MR过程?
2020-08-30:裸写算法:二叉树两个节点的最近公共祖先。
Metersphere developer's Manual
ES6 learning notes (4): easy to understand the new grammar of ES6
STM32F030K6T6兼容替换灵动MM32F031K6T6
NAND FLASH的接口控制设计
MRAM高速缓存的组成