mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-30 07:33:45 +00:00
Update 设计模式 - 解释器.md
解析树示例中 B 和 C 之间补上 Or。
This commit is contained in:
+5
-5
@@ -12,7 +12,7 @@
|
||||
### 实现
|
||||
以下是一个规则检验器实现,具有 and 和 or 规则,通过规则可以构建一棵解析树,用来检验一个文本是否满足解析树定义的规则。
|
||||
|
||||
例如一棵解析树为 D And (A Or (B C)),文本 "D A" 满足该解析树定义的规则。
|
||||
例如一棵解析树为 D And (A Or (B Or C)),文本 "D A" 满足该解析树定义的规则。
|
||||
|
||||
这里的 Context 指的是 String。
|
||||
|
||||
@@ -89,11 +89,11 @@ public class Client {
|
||||
Expression terminal2 = new TerminalExpression("B");
|
||||
Expression terminal3 = new TerminalExpression("C");
|
||||
Expression terminal4 = new TerminalExpression("D");
|
||||
// B C
|
||||
// B Or C
|
||||
Expression alternation1 = new OrExpression(terminal2, terminal3);
|
||||
// A Or (B C)
|
||||
// A Or (B Or C)
|
||||
Expression alternation2 = new OrExpression(terminal1, alternation1);
|
||||
// D And (A Or (B C))
|
||||
// D And (A Or (B Or C))
|
||||
return new AndExpression(terminal4, alternation2);
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ false
|
||||
- [java.util.Pattern](http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html)
|
||||
- [java.text.Normalizer](http://docs.oracle.com/javase/8/docs/api/java/text/Normalizer.html)
|
||||
- All subclasses of [java.text.Format](http://docs.oracle.com/javase/8/docs/api/java/text/Format.html)
|
||||
- [javax.el.ELResolver](http://docs.oracle.com/javaee/7/api/javax/el/ELResolver.html)
|
||||
- [javax.el.ELResolver](http://docs.oracle.com/javaee/7/api/javax/el/ELResolver.html)(EL API,不属于 JDK)
|
||||
|
||||
## 参考资料
|
||||
|
||||
|
||||
Reference in New Issue
Block a user