Update 设计模式 - 解释器.md

解析树示例中 B 和 C 之间补上 Or。
This commit is contained in:
CyC2018
2026-10-28 13:35:21 +08:00
parent 7174f250e6
commit 2d24daad1b
+5 -5
View File
@@ -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)
## 参考资料