当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- 超高频RFID医疗血液管理系统应用
- Application insights application insights use application maps to build request link views
- The method of realizing high SLO on large scale kubernetes cluster
- Message queue - Analysis
- Elasticsearch database | elasticsearch-7.5.0 application construction
- What kind of music do you need to make for a complete game?
- Stickinengine architecture 11 message queue
- Tron smart wallet PHP development kit [zero TRX collection]
- 递归、回溯算法常用数学基础公式
- Event monitoring problem
猜你喜欢
Exclusive interview of guests at | 2020 PostgreSQL Asia Conference: Wang Tao
GitHub: the foundation of the front end
2020-08-30:裸写算法:二叉树两个节点的最近公共祖先。
What is alicloud's experience of sweeping goods for 100 yuan?
An article takes you to understand CSS3 picture border
An article will take you to understand CSS3 fillet knowledge
2020-09-03:裸写算法:回形矩阵遍历。
小熊派开发板实践:智慧路灯沙箱实验之真实设备接入
mongo 用户权限 登录指令
es创建新的索引库并拷贝旧的索引库 实践亲测有效!
随机推荐
An article takes you to understand CSS3 picture border
超高频RFID医疗血液管理系统应用
[elastic search engine]
Markdown tricks
Novice guidance and event management system in game development
To teach you to easily understand the basic usage of Vue codemirror: mainly to achieve code editing, verification prompt, code formatting
[forward] how to view UserData in Lua
An article takes you to understand CSS pagination examples
非易失性MRAM存储器应用于各级高速缓存
ES6 learning notes (4): easy to understand the new grammar of ES6
Zero basis to build a web search engine of its own
打工人好物——磨炼钢铁意志就要这样高效的电脑
Flink's datasource Trilogy: direct API
C language I blog assignment 03
Basic usage of Vue codemirror: search function, code folding function, get editor value and verify in time
C and C / C + + mixed programming series 5 - GC collaboration of memory management
The 4th China BIM (digital construction) manager Summit Forum will be held in Hangzhou in 2020
[self taught unity2d legendary game development] map editor
2020-08-18:介绍下MR过程?
Bitcoin once exceeded 14000 US dollars and is about to face the test of the US election