Common Lisp 笔记(1)

  • 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 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值