Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
skill / Лбы skill / Лекция1_м.doc
Скачиваний:
32
Добавлен:
05.06.2015
Размер:
116.22 Кб
Скачать

Лекция 1.

Базы данных сапр cadence. Язык skill

Язык SKILL – высокоуровневый язык, предназначенный для настройки среды CADENCE. Весь САПР CADENCE построен с помощью этого языка. Всякий раз, используя формы, меню и горячие клавиши, программное обеспечение CADENCE использует функции SKILL для выполнения данного задания. Например, в большинстве случаев функции SKILL могут: открыть окно проекта, увеличить объекты проекта, поместить ячейку в проект. Функции SKILL можно вводить прямо в командной строке окна CIW или используя графический интерфейс. SKILL разработан на базе языка Lisp, но по синтаксису больше напоминает C.

Структура языка и его синтаксис

Четкой структуры программы не существует. Переменные задаются в процессе проектирования (написания программы). Имя переменной не может начинаться с числа. Регистр важен. Несколько выражений можно писать через пробел.

Обычно принят, но не обязателен следующий синтаксис:

Procedure(<name>( )

)

Специальные символы и операторы

SKILL использует многие арифметические операторы:

** - возведение в степень;

* - умножение;

/ - деление;

+ - сложение(плюс);

- - вычитание(минус);

++а - инкремент;

--а - декремент;

== - сравнение (равно);

!= - неравно

= - присваивание;

В следующей таблице приведен список специальных символов и их значений в SKILL.

Замечание: Всем символам, не являющимся буквами цифрами и ( _ или ?) , которые используются в имени переменных(функций) должен предшествовать, символ обратной косой черты (\).

Специальные символы SKILL

Символ

Имя

Значение

\

Обратная косая черта

«Экранирование» для специальных символов

( )

Круглые скобки

Группирует список элементов (тип list), вызов функции

[ ]

Квадратные скобки

(номера элементов массива, только правая скобка закрывает все не закрытые скобки)

Одиночные кавычки

Предотвращение интерпретации выражения

a=5 b=a => b=5; b=’a => b=a

Двойные кавычки

Используется для задания типа строка.

,

Запятая

Необязательный разделитель элементов списка

;

Точка с запятой

Однострочный комментарий

+, –, *, /

Арифметическая

Для арифметических операций ; /* и */ также объединяют комментарии и определения

!,^,&,|

Логическая

Для логического оператора

<,>,=

Сравнения

relational

Для сравнения и присвоения

?

Знак вопроса

Если является первым символом, то определяет ключевое

%

Проценты

Используется для характеристики чисел

Пример:

If(( ( ] ; результат – все скобки закрыты

Пробел

Пробел иногда приобретает смысловое значение, поэтому необходимо рассмотреть несколько синтаксических ограничений. При написании функции, имя функции пишется перед левой скобкой и пробел между ними недопустим.

Например,

f(a b c) и g() правильное название , но f (a b c) и g () неверно.

Также минус должен непосредственно предшествовать (без пробела) тому оператору, которому он принадлежит.

Например,

-1, -a, и -(a*b) правильная конструкция, но - 1, - a, и - (a*b) неверно.

Двойной минус (оператор вычитания) должен быть с обеих сторон окружен пробелами, либо пробелов ни там, ни там вообще быть не должно. Для избежания неясности один из методов должен быть использован постоянно.

Например,

a - b и a-b правильная конструкция для двойного минуса, но a -b неверно.

Комментарии

SKILL допускает два типа комментариев. Один стиль – блочно-ориентированный, где для разделения используются знаки /* и */.

Например:

/* This s a bloc of comments

comment line2

comment line3 etc.

*/

Второй стиль – линейно ориентирован. Точка с запятой (;) указывает, что вся информация до конца строки, после нее является комментарием.

Например,

x = 1 ; comment

;comment line1

Как более простой, рекомендуется линейно – ориентированный стиль.

Типы данных

Skill поддерживает различные типы данных.

array  a (одномерный массив, двумерный получается комбинированием);

dbobject  d (объект базы данных);

flonum  f (число с плавающей точкой);

list  l (связанный список);

integer  x (целое число);

symbol  s(символ);

stringSymbol  S(символ или строка символов);

windowtype  w(тип окна).

Численные типы данных

Целые числа, интерпретируются как десятичные. Двоичные, восьмеричные и шестнадцатеричные начинаются следующим образом:

0b – двоичный

0 – восьмеричный

0x – шестнадцатеричный

Задание числа с плавающей запятой можно осуществлять различными способами:

0.5

10.0

1е10

1е-10

1.1e10

Масштабные коэффициенты

Skill допускает подбор необходимого масштаба для десятичных чисел.

Масштабные коэффициенты должны появляться сразу после того числа к которому они относятся. Пробелов между числом и коэффициентом быть не должно.

Только первая нецифровая часть, появляющаяся после числа, значима. Остальные знаки, следующие за множителем игнорируются. Например, для значения 2.3mvolt, m существенна, а volt можно отбросить.

Если число было распознано как целое, то SKILL пытается сохранить его как целое число, коэффициент может быть представлен как целое число (когда коэффициент является целым множителем и результат не должен превышать максимального значения целого числа). Однако, значение числа с плавающей запятой возвращается.

Коэффициенты:

Символ

Название

Множитель

Пример

Y

Yotta

1024

10Y [ 10e+25 ]

Z

Zetta

1021

10Z [ 10e+22 ]

E

Exa

1018

10E [ 10e+19 ]

P

Peta

1015

10P [ 10e+16 ]

T

Tera

1012

10T [ 1.0e13 ]

G

Giga

109

10G [ 10,000,000,000 ]

M

Mega

106

10M [ 10,000,000 ]

K

Kilo

103

10K [ 10,000 ]

%

percent

10-2

5% [ 0.05 ]

m

milli

10-3

5m [ 5.0e-3 ]

u

micro

10-6

1.2u [ 1.2e-6 ]

n

nano

10-9

1.2n [ 1.2e-9

p

pico

10-12

1.2p [ 1.2e-12 ]

f

femto

10-15

1.2f [ 1.2e-15 ]

a

atto

10-18

1.2a [ 1.2e-18 ]

z

zepto

10-21

1.2z [ 1.2e-21 ]

y

yocto

10-24

1.2y [ 1.2e-24 ]

Тип данных Atom

Atom – все объекты SKILL, кроме непустых листов. nil является одновременно и типом atom, и типом list.

Другими словами это все скалярные типы данных. Но есть несколько основных

nil – не верно (для логических операций) или пустой лист

t – верно (для логических операций)

unbound – переменная не была заданна

Нельзя пользоваться этими обозначениями для имен переменных.

Тип данных строка

Строка это последовательность символов, заключенных в двойные кавычки. Например: “acd” “123”

Тип данных List

SKILL list – это упорядоченный набор объектов данных SKILL. Структура данных list является основной в SKILL и может быть использована в самых различных ситуациях.

Элементы, входящие в list, могут быть любого типа данных, а также могут быть переменными или другими листами. List может включать в себя набор элементов или быть пустым. Пустой list обозначается пустыми скобками “( )” или специальным словом nil. В любом случае list должен быть заключен в скобки. List может содержать несколько элементов типа list для формирования структур данных любой сложности.

Задание List может осуществляться двумя способами:

задание элементов списка указанием количества аргументов функции list:

a = list(1 2 3)

задание элементов списка поименно с помощью оператора ('):

a = ‘(1 2 3)

List может состоять из символов, быть пустым, или содержать другие списки.

Примеры:

a = ‘(1 a 3)

a = ‘( )

a = ‘(‘(1 2)’(3 4))

Соседние файлы в папке Лбы skill