Lisp语法语义

语言处理:通常:词法分析器将字符流拆成语元  解释器构建抽象语法树   求值器直接解释或者编译成其他语言

LISP语言处理器:读取器(文本转化为Lisp对象) 求值器(用对象实现语言的语义)
                            读取器理解S-表达式语法           求值器理解Lisp表达式语法
S-表达式:列表list        原子atom
1.0       ;默认精度的浮点数
1.0e0   ;另一种表示方法
1.0d0   ;双精度浮点数
读取器解释
foo Foo FOO都被解释成FOO 
\f\o\o |foo|都被解释成foo
全局变量在开始结尾处有*
常量在开始结尾处有+
用符号、数字、字符串借助括号构成S-表达式
任何原子(非列表或空列表)都是一个合法的Lisp形式
数字和字符串都是自求值对象、符号也可能是自求值对象(T和NIL)、关键字符号(以名字冒号开始的符号)
合法的列表形式:
        函数调用形式function call form     先求参数值后调用函数  (* (+ 1 2) (- 3 4))
        特殊形式special form      (if test-form then-form [else-form])    (quote(+ 1 2))<-->'(+ 1 2)   (let ((x 10)) x)
        宏形式macro form   宏形式的元素不经求值传递到宏函数中,由宏函数所返回的形式(展开式)按正常规则求值
符号NIL是唯一假值,其他都为真值(符号T是标准的真值)
NIL是唯一一个既是原子又是列表的对象,用于表示假和空列表 nil、()、'nil、'()都相同NIL        t、't都相同T
判断等价 =比较数字  CHAR=比较字符 ... 
通用等价比较   数字及字符:EQ、EQL类型相同值相同   其他所有类型:EQUAL路径及字符串、EQUALP 对象等价、字符串大小写、数值大小相同


格式化代码 C-M-q和C-c C-q用于重新缩进代码段
;;;;四个分号用于文件头注释
;;;段落注释
;;用于接下来的代码
;单行注释
posted @ 2016-11-10 11:34  fyk1Ex  阅读(655)  评论(0)    收藏  举报