Interpreter
JaninaVoigt (Talk | contribs) |
JaninaVoigt (Talk | contribs) (→Structure) |
||
Line 9: | Line 9: | ||
[[Image:Interpreter.jpg]] | [[Image:Interpreter.jpg]] | ||
+ | |||
+ | (from [http://en.wikipedia.org/wiki/Interpreter_pattern wikipedia]) | ||
==Participants== | ==Participants== |
Revision as of 00:50, 25 July 2009
The interpreter pattern is specific implimentation of the composite pattern generally used for language parsing. In the interpreter pattern a class is produced for each symbol in the language. A statement can then be broken down into a syntax tree of these classes which can in turn be used to interpret the statement.
Contents |
Use When
You should use Interpreter when there is a language that you need to interpret and when the statements of the language can be represented as abstract syntax trees. It works best when:
- the grammar of the language is simple. Otherwise, the class hierarchy for the grammar becomes large and complex.
- efficiency is not essential.
Structure
(from wikipedia)
Participants
Abstract Expression
Terminal Expression
Nonterminal Expression
Context
Client
Related Patterns
- Composite: The abstract syntax tree uses a Composite pattern.
- Flyweight: This pattern can be used to share the terminal symbols.
- Iterator: This pattern can be used to traverse the Interpreter structure.
- Visitor: This pattern can be used to collect the behavior for all abstract syntax tree nodes in one class.
Design patterns | |
---|---|
Creational: Abstract Factory | Builder | Factory Method | Prototype | Singleton |