Allegroskill大体语法.docx
- 文档编号:132838
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:27
- 大小:20.62KB
Allegroskill大体语法.docx
《Allegroskill大体语法.docx》由会员分享,可在线阅读,更多相关《Allegroskill大体语法.docx(27页珍藏版)》请在冰豆网上搜索。
SKILL语言简介
SKILL是用于Cadence软件二次开发的语言。
咱们关于SKILL的介绍基于SKILL语言参考档和AllegroSKILL的应用。
语法格式
SKILL语法支持lisp格式的语法,可是咱们不推荐,推荐类C的语法格式。
Lisp例如:
(max53)=>5
C例如:
max(53)=>5
Max是求最大值的函数,lisp格式的不便阅读。
简单的SKILL运行环境
Allegro的SKILL运行环境:
在Allegro的命令窗口输入settelskill窗口就能够够用来运行就能够够打开一个新的窗口,那个SKILL命令。
窗口的大小能够手动调剂。
LoadSkill
能够直接在SKILLdevelopment里面运行SKILL,能够把写好的代码放load命令一次性装载。
在说明load之前,先说一下getSkillPath和setSkillPath这2个函数。
因为load要找到SKILL来装载,通常咱们都不喜爱通过绝对途径来装载一个文件,因为那样包括的字符太多了。
文件getSkillPath()将取得当前Allegro设置的SKILL加载途径,而setSkillPath用来指定加载途径。
目前先不用考虑那个setSkillPath。
我的Allegro当前默许的SKILL途径是Allegro的工作途径和C:
\home\pcbenv\skill如此我先把文件放在C:
\home\pcbenv\skill\函数。
下面,下一步来加载那个文件,然后运行概念的函数
的源代码:
procedure(hello()
let(()
println("HelloWorld!
")
)
);endprocedure
注释
SKILL支持2种注释方式:
a./*…*/用于注释多行,像C一样
b.;用于注释单行,类似C的.
操作符
数学运算+,-,*,/,++,**
比较运算>,<,=,>=,<=,==
逻辑运算||,&&,!
赋值=
输出数据
例如:
%d---integer,%f---float,%s---string,%L---多种数据格式
List数据类型
List是CadenceSKILL中经常使用的数据类型。
能够把List能够有多种类型的常量组成的列表。
明白得为一个数据结构表,它能够是空的,也能够有多种类型的常量组成的列表例如:
'(12abc"PCB")
在上面那个List中包括的数据有整数、字符、字符串。
在List中也能够包括List类型的数据。
例如:
'(1(2aa)b)
创建List数据
创建新的List数据能够用单引号'或函数list来新建一个List数据类型的变量。
例如:
aList='(12abc)=>(12abc)
bList=list(12'a'b'd)=>(12abd)
cList='(1(2aa)b)=>(1(2aa)b)
注意:
当有字符显现的时候,用list函数创建必需在字符前加单引号。
List在内存中的贮存方式
咱们能够把List看做是一个List单元,其中一个List单元占用两个内存位置。
如此便于明白得。
第一个位置保留List的首个数据元素,第二个位置保留后面的List单元(除第一个元素之外的所有元素组成的表),它能够为空数据。
用car函数能够取得保留在第一个位置的List元素:
car(aList)=>2
用cdr函数能够取得保留在第二个位置的List单元:
cdr(aList)=>(34)List
中能够包括有子List,例如:
bList='(1(234)5)=>(1(234)5)
bList在内存中的贮存方式如以下图所示:
List中能够同时包括List和字符,例如:
bList='(1(2aa)b)=>(1(2aa)b)
bList在内存中的贮存方式如以下图所示:
读取List元素
1)读取List中的第一个元素利用car函数能够读取List中的第一个元素。
例:
car('(abc))=>a
z='(123)=>(123)
y=car(z)=>1
y=>1
z=>(123)
car(nil)=>nil
2)读取List中后面的List单元利用cdr函数能够读取List中后面的List
单元。
例:
cdr('(abc))=>(bc)
z='(123)
cdr(z)=>(23)
3)对List重复混合利用car或cdr函数读取car和cdr函数混合利用,组合的格式为:
ca|d[a|d][a|d][a|d]r,以c开头,r中间能够由多个结尾,a或d组成函数。
例如:
caadr功能等同于car(car(cdr(l_list))),caadr对函数List的操作顺序为:
1.先执行一次cdr,读取后面的List单元。
2.对第1步读取的值,执行car,读取其第一元素。
3.对第2步读取的值,执行car,读取其第一元素。
实例:
caaar('(((123)(456))(789)))=>1等同于car(car(car(l_list)))
caadr('(((123)(456))(789)))=>7等同于car(car(cdr(l_list)))
caar('(((123)(456))(789)))=>(123)等同于car(car(l_list))
cadr('(123))=>2等同于car(cdr(l_list))
4)按元素序号读取List中的元素用nthelem并输入所有读取的元素序号,即可读取该编号位置的元素。
如nthelem(1l_list)同于等car(l_list)。
实例:
nthelem(1'(abc))=>a
z='(123)
nthelem(2z)=>2
类似的函数还有nthcdr。
实例:
nthcdr(3'(abcd))=>(d)
z='(123)
nthcdr(2z)=>(3)
5)读取List中最后一个List单元用last函数能够读取List中最后一个元素单元,其数据类型也是一个List。
实例:
last('(abc))=>(c)
z='(123)
last(z)=>(3)
修改List单元
1)rplaca函数用rplaca函数能够替换List中的第一个元素。
aList='(123)=>(123)
bList=rplaca(aList4)=>(423)
aList=>(423)
eq(aListbList)=>t
2)rplacd函数用rplacd函数能够替换List中后面的List单元。
aList='(123)=>(123)
bList=rplacd(aList'(45))=>(145)
aList=>(145)
eq(aListbList)=>t
添加List元素和归并List
1)在List前添加元素(cons,xcons)用cons函数能够添加元素到List前。
aList='(234)
aList=cons(1aList)=>(1234)
xcons函数和cons函数的功能一样,但格式有所区别,前面的变量为List素。
,后面的变量为添加的元xcons('(bc)'a)=>(abc)
2)在List后添加元素(append1)用append1函数能够添加元素到List后。
append1('(123)4)=>(1234)
3)归并List(ncons,append)
cList='(12)
dList='(345)
eList='(67)
append(cListdList)=>(12345)
cList=>(12)
dList=>(345)
append函数只能归并两个List,而且不改变所归并List变量的值。
nconc(cListdListeList)=>(1234567)
cList=>(1234567)
dList=>(34567)
eList=>(67)
nconc函数能够归并多个List,但会改变所归并List变量的值。
List元素排序
1)倒序排列(reverse)
aList='(123)
aList=reverse(aList)=>(321)
anotherList='(12(345)6)
reverse(anotherList)=>(6(345)21)
anotherList=>(12(345)6)
2)按条件排序(sort)
sort的书写格式为:
sort(l_datau_comparefn),其中第一个变量l_data为List量变量,第二个变u_comparefn为对照函数。
对照函数也能够是自概念函数。
sort('(4321)'lessp)=>(1234)
sort('(dbca)'alphalessp)=>(abcd)
sort('("U5""U10""U1""U5""U2")'axlStrcmpAlpNum)
=>("U1""U2""U5""U5""U10")
当List元素都是由List组成的时候,还能够利用sortcar函数对照子List的第一个元素排序。
sortcar('((4four)(3three)(2two))'lessp)
=>((2two)(3three)(4four)
sortcar('((d4)(b2)(c3)(a1))nil)
=>((a1)(b2)(c3)(d4))
查找List元素
1)member函数
member函数从List到返回第一个元素查找到最后,若是找到返回找到的元素开始直到最后的元素,找不返回nil。
member(3'(23435))=>(3435)
member(6'(23435))=>nil
2)assoc函数
assoc函数的书写格式为:
assoc(g_keyl_alist),g_key变量为所查找的关键值,l_alist是为一个由多个List组成的List,格式为:
((key1value1)(key2value2)(key3alue3)...)。
assco返回查找到的子List。
aList='((1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Allegroskill 大体 语法