string list
...
1).用 ' 和 list 定義一個list,注意兩者的差異
)
println( list( "Number:" i) myPort )
(fibonacci (difference n 2))))
car( cdr( car( cdr( ...]
Example
caadr
A). 建立list有以下幾種基本的方式:
("Number:" 3)
SKILL語言支援一套雷同C語言的語法,初學者有了必然的C說話根本,入門是很輕易的。Cadence的對象可以經由過程CIW,Bindkey,Form,Menu等多種方式調用skill函數,送到skill說話的诠釋器來履行各類操作。
( condition3 exp31 exp32 ... )
3 && 5
5
5 && 3
3
upperRight = 500:450
||
myPort = outfile( "/tmp/myFile2" )
3.3. Skill List是Skill基於Lisp(List Processing)語言的表現,它是skill資料物件的一個有序調集,skill資料甚至程式自己都可以看作是一個list,這是C語言中所沒有的概念。下面是skill list的簡單例子
輸出到檔/tmp/myFile2.
b. 資料類型不匹配,如:
Skill說話有n多函數,加上眾多東西的介面函數,可以用不計其數來形容,初學者可能會感應蒙頭轉向,無從下手翻譯其實只要瞭解根基的變數,節制語句,輸入輸出和一些經常使用對象的根基函數就能夠了,大多數函數都可以用到再查閱。最先進修skill時可以細心看看SKILL Language User Guide,其他的可以用到時再查閱,這裏列出幾個常常會用到的文檔:SKILL Language Reference -Skill說話相幹的函數,Cadence User Interface SKILL Functions Reference-Cadence應用程式圖形介面介面函數,Design Framework II SKILL Functions Reference,SKILL Custom Layout Reference,SKILL Schematic Composer Reference離別是Cadence的Design Framework II,版圖,電路的介面函數。
假如有許多判斷語句,用cond取代if…then…else組合,代碼比力清楚並且履行效力對照高,下面的兩種代碼是等效的。
bBox = list( lowerLeft upperRight )
x-coord of lower left corner
general
car( cdr( ... ) )
car訪問list的第一個元素
4 >=3
t
) ;case
geqp
[-] = left justify
1)Skill中的特別字元(除了字母數位以及 _ 之外的其他字元)都有各自的寄義,見下表,若是要用到這些字元的話,用\ 可以去掉其非凡寄義。
result = '( 2 3 ) => ( 2 3 )
1. Skill說話和Lisp語言的關係
"hello"
f - floating point
3 < 5
t
3 < 2
P - point list (Ignores width and precision fields.)
a = 1 => 1
"hello"
!=
shapeTypeList = '( "rect" "polygon" "rect" "line" )
3.4. Skill的輸入輸出
1). 輸出顯示資料:
t
else if condition3 then exp31 exp32 ...
procedure( fibonacci(n)
lessp
B - Bounding box list (Ignores width and precision.)
Function
else if condition2 then exp21 exp22 ...
C). 關於xy座標或bBox界限list的訪問
cadadr
Function
( condition2 exp21 exp22 ... )
2.首碼暗示法
Arguments
)
(1 (2 3) 4) A list containing another list as its second element
)
xCoord( aCoordinate ) => 300
y-coord of lower left corner
t && nil
case的判斷可所以數位和字串,也能夠是它們構成的list,但不支援變數和運算式
( ) An empty list (same as the special atom nil)
( condition1 exp11 exp12 ... )
if…then…else的then是不能省略的(除只有一個if,沒有else的情形),
Number: 1
固然還有其他眾多工具的介面函數,是以Skill需要便利的函數查閱方式,這裏列出3種:
' 示意的list嚴酷按字面意思
caar
or
4. Skill說話中經常使用常識匯總列表
B). 訪問list或者list中某些元素的方式:
%[-][width][.precision]conversion_code
printf( " %-15s %-15s %-10d %-10d %-10d %-10d"
numeric
上面對skill語言作了一個或者的介紹,固然進修skill需要瞭解的很多,這裏就不再逐一作詳細的介紹了,只是對一些需要注意的地方做一下總結,具體的仍是要學習User Guide
>
d - decimal(integer)
2).用cons命令添加一個元素到一個list的頭部
numeric
cdr( numbers ) => ( 2 3 )
abc == "ABc"
member查抄指定的元素是否在指定的list中,它只查抄頂層元素的元素,返回值是從搜到值開始到結尾的list
print 和 println 函數都可以用來顯示單個資料,println可以在顯示的資料後多加一個回車
s - string or symbol
list( a b 3 ) => ( 1 2 3 )
1.代數默示法
Merge two lists with the append function.
rectCount = lineCount = polygonCount = 0
numbers = '( 1 2 3 ) => ( 1 2 3 )
numbers = '( 1 2 3 ) => ( 1 2 3 )
Add an element to an existing list with the cons function.
List的相幹操作有許多,這裏就不詳細介紹了,可以參考User Guide裏的Advanced List Operations
if condition1 then exp11 exp12 ...
x-coord of upper right corner
Arguments
close( myPort )
)
for( i 1 3
xValue = 300
Return Value
cond(
yCoord( aCoordinate ) => 400
cadar
and
3). 節制語句:if(…then…else….),when,unless,case,cond,迴圈語句for,forecah等,節制語句和C說話雷同,都是先判定某個變數或者運算式是不是為真,然後履行下面的操作,需要注意的是:
List Explanation
...
println( word )
nil
c=a
通過car和cdr的組合可以拜候bBox每個元素,並且有相關的簡化函數,以下表:
[.precision] = number of characters to be printed
SKILL中只有 nil 是假(FALSE),其餘的任何值都是真(TRUE)。
對應參數的意義如下,printf需要注意輸出類型的對應
numbers = '( 1 2 3 ) => ( 1 2 3 )
2). 邏輯操作符,如下表:
car( car( ... ) ) |
) ; cond close( inPort ) Operator 與/或邏輯操作只有在需要計較第二個運算式時,才計算第二個表運算式,比如&&操作,當第一個表達時為假時,就不會再較量爭論第二個運算式,|| 操作,當第一個表達時為假時,才會再計較第二個運算式。
numbers = '( 1 2 3 ) => ( 1 2 3 )
1 |
|||||
else expN1expN2 .... |
(1 2 3) A list containing the integer constants 1, 2, and 3 car( cdr( car( ... ) ) ) |
|||||
Sample Logical Operators ) bBox = '(( 300 400 ) ( 500 450 )) nth( 1 numbers ) => 2 127.0.0.1 localhost 10.0.10.2 host1 inPort = infile( "~/.cshrc" ) printf 函數是格局化的輸出,下面的例子是一定格局輸出圖形層的統計 |
(cond b = 2 => 2 layerName purpose rectCount labelCount lineCount miscCount 3.0 == 3 |
t |
||||
nil
t
numeric
nequal
("Number:" 2)
length( numbers ) => 3
Cadence skill語言簡介 |
abc != "ABc" ("Number:" 1)
length計算list所包括元素的個數 Functions ) |
輸出到檔 /tmp/myFile1.
其中CIW(Command Interpreter Window),即啟動Icfb的第一個視窗,包括一些常用的menu,一個輸入行,和一個輸出區域,這裏是經常使用的debug skill程式的處所,當然cadence也提供了Tools->Skill Development,有愛好的話可以深切研究一下
=> ( "rect" "polygon" "rect" "line" )
打開~/.cshrc,輸出檔中的每個字串
numeric
for( i 1 3
2.1 Skill函數的查閱方式
) ; foreach
when( inPort
<
1.最簡單的方式,看~/CDS.log檔或CIW的輸出區域,把Options-> LogFilter都選上。這裏一般可以查閱在圖形介面下運行的函數,如圖,天成翻譯公司們可以看到畫path線的函數和輸出結果等
2.在CIW裏輸入命令startFinder,或在Terminal上輸入cdsFinder& . Finder合用於最少知道函數名的一部門,這裏可以查到函數的用法簡介。例如上圖天成翻譯公司們看到畫path的函數是leHiCreatePath(),但這是圖形體例的函數,對應skill體例的函數呢用法呢,可以在Finder中輸入CreatePath,如許我們就能夠看到包括有CreatePath的所有函數,如圖,leCreatePath便是我們想找的函數,這裏可以看到簡單的用法介紹
3.上面我們查到的關於函數用法的介紹很簡單,若何知道其具體介紹呢。固然假如
cdr會見list除了第一個元素外的其他元素,注意返回依然是個list
( "polygon" ++polygonCount )
while( fscanf( inPort "%s" word )
把最可能呈現的情況放在最前面,若是泛起的概率都一樣,把計算量最大的放在最後面,這樣可以有用的提高代碼效率翻譯
car( numbers ) => 1
c=b
y-coord of upper right corner
=>*Error* strcat: argument #2 should be either a string
strcat( "Mary had a" 5 )
else
numeric
要害字(其實也是skill的函數)和左括弧之間不克不及有空格,
"hello"
if( (n == 1 || n == 2) then
lly = cadar( bBox)
這裏可以看到雷同Lisp說話的默示法後面有許多右括弧,而且函數和參數輕易混淆,所以一般保舉照樣用經常使用的類C說話代數默示法
upper right corner
Meaning
a. 軟體沒回應,比如在CIW中輸入段代碼,軟體沒有反應,什麼後果也沒有,通常爲因為( )或者” “不成對釀成的,一般可以經由過程鍵入 ] 來解決,它透露表現補充完不合錯誤稱的括弧(來自: http://seanhung365.pixnet.net/blog/post/27034702-cadence-skill%E8%AA%9E%E8%A8%80%E7%B0%A1%E4%BB%8B有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931
留言列表