当前位置:网站首页>The Interpreter pattern of behavior pattern

The Interpreter pattern of behavior pattern

2020-11-06 21:35:00 The procedural ape Irvine

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 . Interpreter (Interpreter) Definition of pattern : 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 .

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]所创,转载请带上原文链接,感谢