定义
给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
使用场景
- 如果某个简单的语言需要解释执行并且可以将该语言中的语句表示为一个抽象语法树。
- 在某些特定领域下出现不断重复的问题时,可以将该领域的问题转化为一种语法规则下的语句,然后构建解释器来解释语句。
Java 代码示例
public class Context {
}
public abstract class AbstractExpression {
public abstract void interpret(Context context);
}
public class TerminalExpression extends AbstractExpression{
@Override
public void interpret(Context context) {
// TODO: 解释文法中的终结符
}
}
public class NonterminalExpression extends AbstractExpression{
@Override
public void interpret(Context context) {
// TODO: 解释文法中的非终结符
}
}
public class Client {
public static void main(String[] args) {
// TODO: 根据文法对语句构建抽象语法树后执行解释
}
}