Выражения на языке AutoLISP.
Типы данных в AutoLISP.
Автолисп поддерживает следующие типы данных:
целое число со знаком от -32768 до 32767 или от 0 до 65535 (2 байта) без знака;
вещественное число, записываемое через десятичную точку: 10.52 или в экспоненциальном формате: 2.52Е-12; десятичное число нельзя сокращенно начинать или заканчивать точкой. Например, .1 вместо 0.1 или 2. вместо 2.0. Это связано с тем, что есть тип данных – точечная пара, разделителем которой является точка.
строка символов длиной до 127 знаков, заключенная в двойные кавычки. Запись “10.5” воспримется как текст, а не число. Символ "\" является служебным и, если он нужен в программе, то при записи удваивается: так, например, текст "3\2" должен быть записан как "3\\2". Слеш "\" используется для обозначения перевода строки ( "\n"), возврата каретки: ("\r") и табуляции ( "\t");
логический тип, принимающий два возможных значения: истина (обозначатся Т) или ложь (обозначается NIL).
AutoLISP имеет и другие типы данных. Например:
дескрипторы файлов(описатели файлов), в которых хранятся описания открытых файлов;
символы – в них хранятся не значения, а ссылки на другие переменные.
Самым важным, интересным и сложным типом данных в AutoLISP является
СПИСОК. Как следует из названия языка LISP (LISt Processing) - список является основным понятием языка Лисп. Список – это перечень атомов или списков, отделенных друг от друга пробелами и заключенных в скобки. Программа, функция и выражение в AutoLISP являются списками.
Атом в Лиспе - это простой (в отличие от списка) тип данных: число, символьная строка, функция.
В Лиспе по умолчанию любой список является программой и интерпретатор будет пытаться ее выполнить. Если список - не программа, а данные, то надо явно отключить его интерпретацию. Для этого используется функция QUOTE [См. раздел 3.5.1. Использование функции QUOTE.].
Выражение – это СПИСОК, первым элементом которого является имя функции; т. е. выражение – это ФУНКЦИЯ. В Автолиспе любая “программа” является выражением (функцией) и состоит из выражений (функций).
Основные свойства выражений:
- начинаются и заканчиваются круглой скобкой;
- аргументами функций также могут быть функции, поэтому число открывающих и закрывающих круглых скобокдолжно быть одинаковым;
- после первой открывающей скобки должно идти имя функции (идентификатор); например, запись (+ 10 20) означает суммирование аргументов 10 и 20;
- аргументы функции отделяются пробелами от имени и друг от друга;
- лишние пробелы и переносы строк игнорируются, что позволяет создавать наглядность при записи выражений; например, записывать имена используемых команд Автокада столбцом, если они связаны с одной функцией автолиспа, и размещать открывающую и закрывающую скобки на одной линии:
(соmmаnd “_line” …
“_circle” …
)
- после выполнения выражения возвращается результат, который можно видеть на экране (если не отключить вывод результата);
- с логической точки зрения, если выражение не может быть вычислено, то возвращается ключевое слово NIL и результат считается ложным;
- выражения могут занимать несколько строк;
- в именах символов и функций не делается различий между верхним и нижним регистрами AutoLISP;
- имена не могут начинаться с цифры;
- комментарииначинаются с точки с запятой и продолжаются до конца строки;
- внутри заключенных в кавычки строк символ обратный слеш (\) используется для того, чтобы
можно было включать управляющие символы:
\\ означает запись символа обратного слеша "\";
\e означает ESC;
\n означает новую строку;
\r означает возврат каретки;
\t означает табуляцию (клавиша Тab) ;
\nnn означает запись восьмеричного кода nnn.
Например, следующая функция выдаст запрос на новой строке
(prompt "\nEnter first point: ")