LISP的表达式求值

表达式一般来说有三种:前缀表达式、中缀表达式、后缀表达式,其中后缀表达式又叫做逆波兰表达式。中缀表达式是最符合人们思维方式的一种表达式,顾名思义,就是操作符在操作数的中间。而前缀表达式和后缀表达式中操作符分别在操作数的前面和操作数的后面。在写表达式,我们一般用中缀表达式,譬如 1+2*3-4/5。并且按照操作符的优先级进行计算。
然而LISP语言是一种前缀表达式,为了把表达式转为LISP函数或者求值,需要进行翻译,添加大量的括号和修改函数的顺序。
这个程序的目的就是使得这一工作变简单。
当然,CAD里面本身也有几种种方式能完成这个,但它们的优缺点容我后面讨论。
程序借鉴了飞诗的一些代码,在此深表感谢。
程序的核心代码如下:

复数计算的LISP版

;|*********************************************************************************************;
软件作者: Highflybird                                                                          ;
软件用途: 为AutoCAD 的LISP定制的一些算法和函数                                                 ;
日期地点: 2012.12.29 深圳                                                                      ;
程序语言: AutoLISP,Visual LISP                                                                 ;
版本号:   Ver.

高仿ALIGN命令

CAD中平齐物体的实现是通过align命令来实现的。
但在CAD编程中有时候需要对这个命令自定义,而且在某些情况下不适合用命令形式。
所以我编写了一个lisp程序,用户也可以根据这个程序定义更高级的平齐。
下面是实现的代码。