Cadence-Skill-语法详解(中文)要点.doc
- 文档编号:90777
- 上传时间:2022-10-02
- 格式:DOC
- 页数:40
- 大小:253.20KB
Cadence-Skill-语法详解(中文)要点.doc
《Cadence-Skill-语法详解(中文)要点.doc》由会员分享,可在线阅读,更多相关《Cadence-Skill-语法详解(中文)要点.doc(40页珍藏版)》请在冰豆网上搜索。
40
常量、变量
常量是它的值等于自身的表达式,如123,”abc”…
变量是保存了其它值的表达式,如x=3,x即变量。
算术与逻辑操作符
函数名语法对应操作符
DataAccess
arrayrefa[index][]
setarraya[index]=expr
bitfield1x
setqbitfield1x
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个正则表达式的组合将尽可能多的匹配
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Cadence Skill 语法 详解 中文 要点