您的位置:首页 > 编程语言

Common Lisp 笔记(1)

2016-03-23 19:36 253 查看
Common lisp 执行过程

在大多数编程语言中,语言的处理器,无论是解释器还是编译器的操作方式都类似于黑箱。在黑箱内部,语言的处理器各个子系统各自负责一部分文本转换成具体的行为或目标代码。例如:一个词法分析器将字符流分拆成语元并送进解释器,解释器再构建表达式树形结构,称为抽象语法树,随后被送进一个求值器,求值器要么直接解释,要么编译成其他语言,例如机器码。

在Common Lisp中,执行过程分为两个部分,一个将文本转化成Lisp对象,称为读取器,而另一个则用这些对象来实现语言的语义,成为求值器

读取器定义了字符串如何被转换成我们称为 S-表达式 的Lisp对象。S-表达式可以表达任意树形表达式。

由于语言的语意是对象树而不是字符串定义而成的,因此很容易使用语言本身而非文本形式来生成代码,这也意味着Lisp可以通过处理现有的数据来生成代码,通俗点讲就是Lisp是可以生成语言的语言!这就是Lisp宏的本意。

S-表达式

S-表达式的基本元素是列表(list )和(atom)。列表由括号包围,原子就是其中的内容,原子中间由任意空格分隔。

原子不同的表达形式也许表达的是同一个对象,例如 1/4 和 2/8 表达的对象并没有什么不同,因为Lisp的读取器会把他们表达成相同的对象。但 1.0 和 1 则有可能代表不同的对象。

字符串对象由双引号包围,反斜杠表示转义。Lisp读取器总是将未转义的字母转换成大写形式。例如 foo 和 Foo 都被读成 FOO 。但 \f\0\0 却是 foo 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lisp 编程语言