zoukankan      html  css  js  c++  java
  • Visual LISP 第2章 数据类型、表达式和函数(3)表达式

      AutoLISP处理的对象时符号表达式(简称表达式),相当于其他编程语言的程序语句。

    1.表达式的构成

      表达式由原子或表构成。原子可细分为数原子、串原子和符号原子。数或串原子的值是数或串本身,符号原子的值是赋给该符号的值。例如,5、12.5、"ABC"是由单个原子构成的表达式。多数情况下,表达式以表的形式存在,(函数名[变元]……)。变元的个数可以为0也可以为任意多个,这个取决于函数本身,每个参数还可以是一个表达式。表达式中,左括号后第一个元素必须为函数名。

    2.表达式的前缀表示法

      AutoLISP采用前缀表示法,将函数名放在所有操作之前,如(setq x 2.3)。如果将x = ( a + b ) * c改写为AutoLISP表达式,则为( setq x ( * ( + a b ) c ) )

    3.表达式的求值过程

      在LISP语言中,函数之间不存在优先关系,运算的先后顺序只能通过表的层次来实现。最里面的表最先被求值,把求值的结果返回给外层表,直至求值结束。AutoCAD最多显示6位小数。错误提示,(((_>表示缺少与左括号匹配的右括号。("_>表示遗漏了与左端引用号匹配的右端双引号。

    4.表达式的求值规则

       规则如下:(1) 整型数、实型数和字符串仪器本身的值作为求值结果;(2)符号以其当前的约束值为求值结果;(3)表根据其第一个元素来进行求值。例如,(+ (* 2 3) (/ 50 3) )先计算(* 2 3)和(/ 50 3)然后将结果6和16返回给其外层表达式原表达式变为(+ 6 16),继续计算的22则返回22.

      如果第一个元素是一个表,该表不是调用而是定义函数;那么,若语法正确,则首先定义这个函数,然后继续对表达式求值。如果第一个元素既不是函数名也不是定义函数,则停止求职并显示出错信息。

      用quote函数可以禁止对表求值。对于不需要求值而直接整体引用的表,例如将一个表示三维点的表(3 2 1)赋值给变量P。如果表达式为(setq p(3 2 1)),则将显示下图错误。

      使用quote函数,表达式改为(setq p(quote(3 2 1))),相当于(setq p '(3 2 1))。

  • 相关阅读:
    POJ 2503 Babelfish
    POJ 2528 Mayor's posters
    203C Photographer
    190A Vasya and the Bus
    POJ 3630 Trie树 TLE
    ThinkPHP验证码的使用
    mysql_fetch_row、mysql_fetch_array、mysql_fetch_assoc、mysql_fetch_object
    ThinkPHP模版布局方式
    Windows 下使用Git管理Github项目
    浅析mysql、mysqli、PDO
  • 原文地址:https://www.cnblogs.com/xueniwawa/p/3966199.html
Copyright © 2011-2022 走看看