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用于重新缩进代码段
;;;;四个分号用于文件头注释
;;;段落注释
;;用于接下来的代码
;单行注释
读取器理解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用于重新缩进代码段
;;;;四个分号用于文件头注释
;;;段落注释
;;用于接下来的代码
;单行注释

浙公网安备 33010602011771号