#### **表达式的构成**
表达式是autolisp的基本构成单元,每个autolisp程序都是由一个或多个表达式构成。其基本形式是:
> (函数名 参数 )
***左括号 函数名 一个或多个参数 右括号***
其中每个参数都可以是另一个表达式。
每个表达是都会返回一个值,这个值又可以作为上一级函数的参数
表达式的计算顺序是从里到外,从左到右
例子:
`(+ 1 2)`
结果是 3
`(+ 2 (* 3 7))`
结果是23。先计算 (* 3 7),得到结果21,再计算(+ 2 21),得到结果23
#### **表达式求值规则**
1、如果当前位置的类型是列表,则进入状态2;如果是原子(符号或字面量),则进入状态4.
2、将列表的第一项作为函数名,其余项作为参数,进行函数求值。函数求值进入状态3
3、如果函数名这一项合法,则对其余各项按从左到右的顺序依次应用状态1,将每项的返回值最为参数,执行函数调用;如果函数名不合法,则错误退出。
4、如果是符号,返回符号的值;如果是字面量,返回这个字面量本身。
对状态3,有几个函数是例外
defun - 执行时不对函数名之后的项求值
setq - 不对要赋值的项求值
举例:
1、
```
(setq a 9 b "string")
```
执行过程是:
状态1 -》状态2 -》状态3:对9求值 -》状态4:返回9-》状态3:对"string"求值-》状态4:返回"string"-》状态3:执行函数调用: 函数名setq 参数 a 9 b "string"
2、
```
(* (+ 1 2) 5)
```
执行过程:
状态1 -》状态2 -》状态3:对(+ 1 2)求值 -》状态1.1-》状态2.1-》状态3.1:对1求值-》状态4:返回1-》状态3.1:对2求值-》状态4:返回2-》状态3.1:执行函数调用 函数名+ 参数 1 2,结果是3,将结果返回-》状态3:对5求值-》状态4:返回5-》状态3:执行函数调用 函数名* 参数 3 5,结果15
3、`(set a 5)`
执行过程:
状态1 -》状态2 -》状态3:对a求值 -》状态4:返回nil-》状态3:对5求值-》状态4:返回5-》状态3:执行函数调用,函数名 set 参数 nil 5,由于nil不是合法的符号,错误返回。
- 前言
- 概述
- autolisp简介(初)
- 搭建编程环境
- Visual Lisp 编辑器的使用(初)
- vs code的使用
- 基本概念(初)
- 表达式
- 数据类型
- 整数类型
- 实数类型
- 字符串类型
- 列表
- 选择集类型
- 实体名称(ename)
- vla对象(vla-object)
- 文件描述符
- 符号和变量(初)(精)
- 源码文件
- 变量
- 变量的类型
- 变量赋值
- 变量求值
- 预定义变量
- 数值处理
- 字符串处理
- 显示和输出
- 控制字符
- 列表操作
- 重点函数列表
- 尺寸标注
- 文字固定偏移
- 填充
- 填充到指定的矩形
- 计算填充面积并标注
- 其他
- 绘制任意曲线的等分线
- 原位缩放
- 修改填充基点和角度
- 批量标注多段线长度
- 统计相同直径的圆的数量
- z坐标置0
- 生成随机数
- 图层
- 相交
- intersectWith无法求交点的几种情形
- 向量和矩阵
- 向量加减乘除
- 向量长度
- 求单位向量
- 向量点积
- 向量叉积
- 命令和交互
- 调用command命令
- 多段线
- 获取多段线顶点
- UCS
- 有关ucs的命令和系统变量
- 通过command操作ucs
- 草图设置
- 捕捉
- 栅格
- 正交
- 对象捕捉
- 坐标系和变换(高级)
- 任意轴算法
- 坐标系
- trans
- geomcal
- autocad开发相关网站
- 小技巧汇总
- 判断点是否在封闭图形内
- 安装
- acad启动加载顺序
- 安装包制作
- 添加文件到启动组
- 添加目录到搜索路径
- 对话框和图形界面
- DCL
- openDCL
- 菜单和自定义界面
- 菜单文件
- 自定义文件
- 函数参考
- quote