mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-10-04 20:13:21 +00:00
Work towards #56: Splitting up the README
I did the job and splitted up the readme, hopefully everything was splitted correctly...
This commit is contained in:
1 parent
ea524ee2c0
commit
fbb12b53ba
58 files changed
+1205
-759
No files matched your search
@@ -0,0 +1,19 @@
|
||||
---
|
||||
layout: pattern
|
||||
title: Interpreter
|
||||
folder: interpreter
|
||||
categories: pattern_cat
|
||||
tags: pattern_tag
|
||||
---
|
||||
|
||||
**Intent:** Given a language, define a representation for its grammar along
|
||||
with an interpreter that uses the representation to interpret sentences in the
|
||||
language.
|
||||
|
||||

|
||||
|
||||
**Applicability:** Use the Interpreter pattern when there is a language to
|
||||
interpret, and you can represent statements in the language as abstract syntax
|
||||
trees. The Interpreter pattern works best when
|
||||
* the grammar is simple. For complex grammars, the class hierarchy for the grammar becomes large and unmanageable. Tools such as parser generators are a better alternative in such cases. They can interpret expressions without building abstract syntax trees, which can save space and possibly time
|
||||
* efficiency is not a critical concern. The most efficient interpreters are usually not implemented by interpreting parse trees directly but by first translating them into another form. For example, regular expressions are often transformed into state machines. But even then, the translator can be implemented by the Interpreter pattern, so the pattern is still applicable
|
||||
Reference in new issue
Block a user