Cadence-Skill-语法详解(中文)要点.doc

上传人:b****9 文档编号:90777 上传时间:2022-10-02 格式:DOC 页数:40 大小:253.20KB
下载 相关 举报
Cadence-Skill-语法详解(中文)要点.doc_第1页
第1页 / 共40页
Cadence-Skill-语法详解(中文)要点.doc_第2页
第2页 / 共40页
Cadence-Skill-语法详解(中文)要点.doc_第3页
第3页 / 共40页
Cadence-Skill-语法详解(中文)要点.doc_第4页
第4页 / 共40页
Cadence-Skill-语法详解(中文)要点.doc_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

Cadence-Skill-语法详解(中文)要点.doc

《Cadence-Skill-语法详解(中文)要点.doc》由会员分享,可在线阅读,更多相关《Cadence-Skill-语法详解(中文)要点.doc(40页珍藏版)》请在冰豆网上搜索。

Cadence-Skill-语法详解(中文)要点.doc

40

常量、变量

常量是它的值等于自身的表达式,如123,”abc”…

变量是保存了其它值的表达式,如x=3,x即变量。

算术与逻辑操作符

函数名语法对应操作符

DataAccess

arrayrefa[index][]

setarraya[index]=expr

bitfield1x<>

setqbitfield1x=expr

setqbitfieldx

lsb>=expr

quote'expr'

getqqg.s.

getqg->s->

putpropqqg.s=expr,g->s=expr

putpropqd~>s,d~>s=expr~>

Unary

preincrement++s++

postincrements++++

predecrement--s--

postdecrements----

minus-n-

not!

expr!

bnot~x~

Binary

exptn1**n2**

timesn1*n2*

quotientn1/n2/

plusn1+n2+

differencen1-n2-

leftshiftx1<

rightshiftx1>>x2>>

lesspn1

greaterpn1>n2>

leqpn1<=n2<=

geqpn1>=n2>=

equalg1==g2==

nequalg1!

=g2!

=

bandx1&x2&

bnandx1~&x2~&

bxorx1^x2^

bxnorx1~^x2~^

borx1|x2|

bnorx1~|x2~|

andx1&&x2&&

orx1||x2||

rangeg1:

g2:

setqs=expr=

对于既有函数名又有操作符函数,采用函数名调用和采用操作符调用的效果是一样的。

示例lessp(31)=>nil等同于3<1=>nil

预定义算术函数

语法结果

通用函数

add1(n)n+1

sub1(n)n–1

abs(n)绝对值

exp(n)自然对数的n次方

log(n)

max(n1n2...)

min(n1n2...)

mod(x1x2)取模运算

round(n)

sqrt(n)

sxtd(xw)将x右扩展W个符号位

zxtd(xw)和上面的功能相同,速度更快

三角函数

sin(n),cos(n),tan(n)

asin(n),acos(n),atan(n)

随机数生成函数

random(x)产生0~x-1的随机数

srandom(x)初始化随机数生成函数的x

位操作

含义操作符

位与&

位或|

位异或^

左移位>>

右移位<<

取反~

真值、假值

§真值,除了nil以为的值都是真值。

§假值,nil

条件控制函数

if,when,unless,cond

§if

if函数的语法结构

if(condition1then;当condition1为真值时执行代码块expA

expA

else

if(condition2then;当condition2为真值时执行代码块expB

expB

else

expC

);endif

§when

when函数语法结构

when(condition;当condition为真值时执行代码块expA,否则跳过

expA

);endwhen

§unless

unless语法结构

unless(condition;当condition为假值时执行代码块expA,否则跳过

expA

);endunless

§cond

cond语法结构

cond(

(condition1expA...);当condition1为真值时执行代码块expA

(condition2expB...);…

(condition3expC...);…

(texpN);之前的条件都不满足时默认执行expN

);endcond

[注]:

";"表示注释

循环控制函数

while,for,foreach

§while

while语法结构

while(conditionistrue;当condition为真值时反复执行代码块expA,否则结束循环

expA

§for

for语法结构

for(i15

println(i)

将输出

1

2

3

4

5

§foreach

foreach是简化版的for,上面的例子用foreach写如下

alist=‘(12345)

foreach(itemalist

println(item)

foreach通常用于操作列表,因为它会遍历列表的每一个元素。

选择函数

§caseq的用法类似cond,功能也类似。

caseq(var

(condition1expA)

(condition2expB)

);case语法结构

循环结构中的局部变量

使用关键字prog可以在循环结构中定义局部变量。

关于prog的详细介绍请参考函数章节。

返回函数

表示返回值的关键字是return。

return可以强制一个prog结构立即结束,送出返回值,忽略剩余的循环操作。

示例prog(()

for(i010

when(oddp(i)

return(i)

);when

);for

);prog

这个for循环不会运行10次,首次oddp(i)为真值的时候循环就会结束。

正则表达式

在很多的skill应用中都会用到正则表达式,比如在一个字符串数组中查找带有关键字user的字符串。

示例:

lStr='("hello""whenuser""usercome""ffuser""ppuserd""uster");

lRes=nil

foreach(itemlStr

if(rexMatchp("user"item)then

lRes=cons(itemlRes)

println(item)

输出:

"whenuser""usercome""ppuserd"

lRes=>("ppuserd""usercome""whenuser").

这里的关键命令是rexMatchp,函数形式为rexMatchp(t_patternS_target),这个命令将在第二个参数中查找满足第一个参数(模式)的条件,如果找到返回真值,否则返回假值。

§正则表达式(pattern)的组成字符

语法含义

c匹配任意非特殊字符

.匹配任意字符

\用在特殊字符前面代表特殊字符本身,用在<,>,(,),and1,...,9,的含义在下面描述

[c...]一对方括号中包含一些字符将匹配括号中的任意一个字符,如果第一个字符是^则表示不匹配括号中的所有字符,[a-z]表示匹配a到z之间的任一字符,"-”表示范围。

*用在一个以上描述的字符或pattern后表示匹配该字符或pattern0次或多次。

+类似*,区别在于匹配至少一次

\(..\)如果包含在这个符号中的字符串匹配上了,被匹配的字符可以被提取出来(最多支持9中匹配)

\n和上一个符号对应,反斜杠后跟一个数字将可以提前到上一个符合保留的字符串

\<...\>这个符号表示完全匹配一个字符串的开始和结尾

rs2个正则表达式的组合将尽可能多的匹配

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1