- 浏览: 25650 次
- 性别:
- 来自: 上海
文章分类
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
public class Context {
}
public abstract class AbstractExpression {
public abstract void interpret(Context ctx);
}
public class TerminalExpression extends AbstractExpression {
public void interpret(Context ctx) {
}
}
public class NonterminalExpression extends AbstractExpression {
public void interpret(Context ctx) {
}
}
客户端代码:
public class Context {
}
public abstract class AbstractExpression {
public abstract void interpret(Context ctx);
}
public class TerminalExpression extends AbstractExpression {
public void interpret(Context ctx) {
}
}
public class NonterminalExpression extends AbstractExpression {
public void interpret(Context ctx) {
}
}
客户端代码:
发表评论
-
访问者模式Visitor预留通路,回调实现
2014-03-13 16:55 379表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 491将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 341使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 277动态地给一个对象添加 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 301运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 434在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 399允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 418迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 538定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 308将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
迭代器模式Iterator 控制访问聚合对象中的元素
2014-03-07 17:57 410提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该 ... -
命令模式Command 封装请求
2014-03-07 16:26 381将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 384定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 332为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 370用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 567用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 307将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 417工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 951定义一个用于创建对象 ... -
单例模式Singleton某个类只需要一个类实例
2014-03-05 16:46 426保证一个类只有一个实例,并提供一个访问它的全局访问点。 懒汉 ...
相关推荐
同时,对于解释器的实现,书中也会讲解如何处理源代码中的各种语法和语义,以及如何进行运行时解释执行。 ### 编译器和解释器的设计过程 编译器和解释器的设计过程是非常复杂的,需要深入理解编程语言的语法和语义...
通过学习本书,读者不仅能更好地理解Java编译和执行的过程,还能掌握如何设计和实现自己的编译器或解释器。 --- 此书不仅涵盖了理论知识,还包括了大量的实践案例和技术细节,对于想要深入了解Java编译器和解释器...
Writing Compilers and Interpreters : A Modern Software Engineering Approach Using Java -- Third Edition
2. **全局解释器设置**:这通常在“Preferences”中进行,具体路径为“PyCharm” > “Preferences” > “Python Interpreters”。尽管可以在此处更改全局解释器,但请注意,这个设置可能不会影响到每个项目的解释器...
总的来说,"interpreters"这个主题涵盖了编程语言的解释器实现,包括Brainfuck这种极简语言的解释器和Lisp样式的计算器,这些都是编程教育和实践中的有趣课题。同时,JavaScript作为另一种重要的解释型语言,也展示...
在这个项目中,作者选择了使用C#编程语言来实现一个简单的解释器,这为学习者提供了一个良好的平台,去探索和实践编译器和解释器的设计与实现。 编译器与解释器是计算机科学中的核心概念,它们都是将高级编程语言...
CLox字节码解释器是基于Crafting Interpreters网站教程实现的一个项目,它详细介绍了如何从零开始构建一个简单的编程语言——Lox。这个解释器的核心是使用C语言编写的字节码解析器,它能理解并执行Lox程序的二进制...
在“lox-ts-main”这个压缩包中,包含了实现Lox解释器的主要代码。这部分代码通常会包含以下几个关键部分: 1. 解析器:负责将源代码转换为抽象语法树(AST),这是解释器理解程序逻辑的基础。 2. 执行器:遍历AST,...
用Rust编写的Lox解释器 互动模式 只需执行rulox并在REPL中键入指令 脚本模式 将lox源文件作为第一个参数传递给rulox 。 例如rulox hello_world.lox 。 发展 Rulox仅使用标准的Rust工具链,因此您仅需调用cargo就...
实验,解释器实现,演示,数据入口切线和Birdong ID的大量注释 Web口译员设置:节点: cd interpreter# node:npm install# venv:python3 -m venv merlinai_venvsource merlinai_venv/bin/activatepip3 install -r ...
paxscriptnet2.7(价值187美金)C#代码解释执行器 About paxScript.NET 18 December 2013. Support of MS Visual Studio 2013. The Microsoft NET version of the paxScript scripting engine (paxScript.NET) ...
平台无关的AutoIt3解释器AutoIt是基于Visual Basic语法的传统上仅Windows的脚本语言。 该存储库的目的是为其他平台(例如Linux / Unix和MacOS)提供AutoIt3解释器。 该存储库包含两个AutoIt解释器: 此解释器完全...
5. 解释器设计:解释器的工作原理,它如何逐行读取代码并进行解释执行,解释器的设计方法和优化技术。 6. 实例和案例研究:可能包含一些用Java编写的具体编译器或解释器的实例代码,以及在不同场景下的应用案例分析...
描述部分重复了标题内容,这意味着本书的核心价值在于通过软件工程的角度去理解和实现编译器与解释器。这种做法强调了从设计、实现到测试的整个过程都遵循良好的软件工程原则。 #### 知识点详解: 1. **编译器与...
每个文件可能对应书中的一个章节,例如,`Lexer.java`可能是词法分析器的实现,`Parser.java`用于解析源代码,`ASTNode.java`和相关的子类则表示抽象语法树的节点,还有其他文件用于执行和管理编译器或解释器的生命...
- **多个解释器 (Multiple Interpreters)** - 同时使用多个解释器的可能性。 - **从Jython控制Java (Controlling Java from Jython)** - Jython如何与Java交互。 ##### 内部类 (Inner Classes) - **使用Java库 ...
这本书详尽地讲解了如何从零开始设计并实现一个编程语言的解释器,涵盖了词法分析、语法分析、抽象语法树(AST)、执行环境等核心概念。在这个仓库中,作者按照书中的步骤,用Java语言重现了这一过程,以此来深化...
口译员和你关于使用Scala中的解释器模式构建程序的幻灯片,代码示例和注释。 版权所有2018 Dave Gurnell。 文本,图表和幻灯片已获得许可。 代码示例许可了内容/slides目录包含我在2018年Scala Days演示中使用的幻灯...
这个项目由 Bob Nystrom 撰写,它以一种实践性强、理论结合实际的方式,引导读者深入理解编程语言的底层机制,特别是关于解释器和编译器的设计与实现。在这个过程中,作者使用Java作为主要的开发语言,使得这个教程...