Lisp Interpreter: Lisp编程语言的玩具解释器
Lisp解释器
Design
在我的Lisp解释器版本中,我设计了以下类:
Interpreter.java: 这是Driver类,它接受来自用户的输入,扫描输入中的token,并将这些token推送到解析器以构建解析树。有关Lisp解释器的更多详细信息,可以参考lisp解释器PLT,这是一份非常实用的资源。
LispScanner.java: 这个类包含一个方法,它以字符串的形式接受用户输入,并以列表的形式将有效标记返回给调用者。在这里进行基本的错误检查,例如比'('多的')'标记,或任何无效使用DOT '.'字符的情况。你可以查看LISP编程语言简明手册,了解更多关于Lisp语言的基础知识。
LispParser.java: 该类的核心方法负责递归地从扫描器产生的标记中构建解析树。它还包含其他3个辅助方法,用于在标记形成列表时构建树。核心方法“getParseTree()”将解析树返回给调用者。如果你对Java中的设计模式感兴趣,可以查看解析Java的设计模式编程之解释器模式的运用,这将帮助你更好地理解解析器的实现。
SExpression.java: 该类定义了表达式节点的基本数据结构。它包含两个指针,分别指向左右子节点。对Lisp表达式结构的深入理解,可以参考实用Common Lisp编程,该资源提供了对Lisp编程的深度解析。